每小时计划任务未运行

每小时计划任务未运行

我们有一个 cron 脚本,用于在我们的环境中运行 Salt 以及其他几个步骤,但由于某种原因,它根本没有执行它。

root@salt:~# cat /etc/cron.hourly/salt-apply.sh 
#!/bin/bash

/bin/cat << EOF | /bin/bash 2>&1 > /var/log/salt-apply.log
    /bin/date
    cd /srv/salt
    /usr/bin/git pull
    /usr/bin/salt '*' saltutil.sync_all
    /usr/bin/salt '*' state.apply
    /bin/date
EOF

root@salt:~# ls -l /etc/cron.hourly/salt-apply.sh 
-rwxr-xr-x 1 root root 199 Feb  7 22:47 /etc/cron.hourly/salt-apply.sh

它没有运行,/var/log/salt-apply.log 中没有错误,并且 cron 似乎正在运行每小时的运行部分:

root@salt:~# grep -i cron.hourly /var/log/syslog | tail -n 5
Feb  7 22:17:01 salt CRON[6941]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  7 23:17:01 salt CRON[8817]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  8 00:17:01 salt CRON[10450]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  8 01:17:01 salt CRON[12104]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  8 02:17:01 salt CRON[13761]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

是的,如果您只是在 shell 提示符下执行该脚本,该脚本运行良好。

任何帮助都将不胜感激。谢谢!

答案1

.sh看起来这是文件名末尾的问题。我敢肯定我之前在 /etc/cron.* 中用.py.sh后缀命名过脚本,所以这可能是一个错误...

任何状况之下:

root@salt:/etc/cron.hourly# ls
salt-apply.sh
root@salt:/etc/cron.hourly# run-parts --report /etc/cron.hourly --list
root@salt:/etc/cron.hourly# mv salt-apply.sh salt-apply
root@salt:/etc/cron.hourly# run-parts --report /etc/cron.hourly --list
/etc/cron.hourly/salt-apply

答案2

这可能与这个错误有关:https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022

尝试在命名脚本时不使用.sh扩展名。

相关内容