Назад | Перейти на главную страницу

Почасовая работа cron не выполняется

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