Безопасная перезагрузка задания cron с откатом при сбросе SysRq

Безопасная перезагрузка задания cron с откатом при сбросе SysRq

Я пытаюсь настроить cron-задание для ежедневной перезагрузки устройств. С безопасным обратным вызовом на сброс SysRq, если по какой-то причине перезагрузка зависнет (проблема в том, что SSH убивается, и устройство никогда не перезагружается, поэтому оно теряется и требует дорогостоящего человеческого вмешательства для перезапуска).

Скрипт, который работал некоторое время:

5 5 * * * root /sbin/reboot -f; sleep 30; /bin/echo `date -u +'\%Y-\%m-\%dT\%H:\%M:\%SZ'` >> /var/log/player-reboot.error.log; echo 1 > /proc/sys/kernel/sysrq; sync; echo b > /proc/sysrq-trigger

Однако это довольно жестоко (жесткая перезагрузка -f), и некоторые из наших устройств в последнее время не восстанавливаются (более пары тысяч каждый день).

Не уверен, что именно зависает (судя по всему, файл вообще не записывается, поэтому я бы сказал, что зависает либо сама перезагрузка, либо echo?

Хотел использовать амперсанд, чтобы никогда не «блокироваться» и быть уверенным, что в конечном итоге произойдет правильный сброс, однако, похоже, это вообще не работает (больше никаких перезагрузок):

5 5 * * * root /sbin/shutdown -r +2 &; sleep 240; /bin/echo `date -u +'\%Y-\%m-\%dT\%H:\%M:\%SZ'` >> /var/log/player-reboot.error.log &; echo 1 > /proc/sys/kernel/sysrq; sleep 1; echo b > /proc/sysrq-trigger

Могу ли я использовать амперсанд в скрипте cron? Знаете ли вы другой более умный способ достичь желаемых результатов? Спасибо!

Связанный контент