У нас есть сценарий 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)
И да, сценарий работает нормально, если вы просто выполняете его в командной строке.
Любая помощь будет принята с благодарностью. Спасибо!
Похоже, дело в .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
Вероятно, это связано с этой ошибкой: https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
Попробуйте назвать свой сценарий без .sh
расширение.