У нас есть сценарий 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
.