bash 스크립트 cronjob이 작동하지 않습니다

bash 스크립트 cronjob이 작동하지 않습니다

다음 cronjob이 작동하지 않는 이유는 무엇입니까? 수동으로 실행된 스크립트가 작동하기 때문에 cron 작업에 넣으면 실행되지 않습니다.

#--------Reports-------------
25 11 * * * /logs/scripts/chim/currbalance_dump.sh >> /logs/currbal.log

스크립트는 다음과 같습니다

#!/bin/bash

sftp [email protected] << SFTP
cd /home/sftpadm/BanKo/CurrBalance/
mget banko_current_balance_`date +%Y%m%d`.csv /logs/Reports/BanKo/CurrBalance
SFTP
exit

폴더는

/logs/scripts/chim/currbalance_dump.sh
-rwxrwxrwx 1 kycadm kycadm 174 Sep 29 09:43 currbalance_dump.sh

답변1

selinux가 문제가 아닌지 다시 확인하십시오(루트로서):

audit2allow /var/log/audit/audit.log

문제에 따라 다음을 허용하는 정책을 생성할 수 있습니다.

audit2allow -m local-log-script -o local-log-script.te /var/log/audit/audit.log 

스크립트에 필요한 것만 포함하도록 편집한 다음 selinux 정책 파일을 생성하고 가져옵니다.

checkmodule -M -m -o local-log-script.mod local-log-script.te
semodule_package -o local-log-script.pp -m local-log-script.mod
semodule -i local-log-script.pp

나는 보통 이 모든 파일을 다음 위치에 저장합니다./etc/selinux/custom/

답변2

/etc/crontab 파일에 대한 읽기/쓰기 액세스 권한이 있다고 가정하면 작업 줄에 다음과 같은 사용자 이름이 포함되어야 합니다.

crontab -l -u username

    25 11 * * * username /logs/scripts/chim/currbalance_dump.sh >> /logs/currbal.log

사용자별 크론 작업 스크립트는 /var/spool/cron/username에서 찾을 수 있습니다.

또한 bash 스크립트에 실행 가능한 비트가 설정되어 있고 스크립트를 실행하는 사용자가 /logs/scripts/chim/ 디렉터리에 액세스할 수 있는지 확인하세요.

 chmod +x currbalance_dump.sh

모든 스크립트를 하나의 디렉토리에 넣고 run-parts 유틸리티를 사용하여 해당 디렉토리의 모든 스크립트를 실행할 수도 있습니다.

위의 모든 사항이 정상이면 crond 데몬이 실행 중인지 확인하십시오.

service crond status
service crond start

새로운 cron 작업이 작성될 때마다 crond 데몬을 다시 시작할 필요가 없습니다.

또한 사용자가 cron 작업을 실행할 수 있는지 확인하십시오.

less /etc/cron.allow
less /etc/cron.deny

관련 정보