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 是否不是问题所在(作为 root):

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

用户特定的 cron 作业脚本可以在 /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

相关内容