Что я делаю не так с cron при загрузке?
Пример:
Для запуска вручную: screen -S example ./script.sh
Чтобы восстановить вручную: пример экрана -x
теперь я просто пытаюсь сделать то же самое (ну, часть запуска), используя cron при загрузке
@reboot cd / home / administrator / script && screen -S example ./script.sh
Думаю без экрана работает. Например:
@reboot cd / home / administrator / script && ./script.sh
но мне также нужно, чтобы это работало в фоновом режиме, независимо от терминала. Я пробовал другие варианты, такие как init, init.d, но, похоже, существует большая путаница в отношении того, как все это работает на каких версиях Linux. Если вы можете исправить мою ошибку выше или показать мне лучшее решение, это будет здорово.
Я использую Ubuntu 12.04.2 LTS
Спасибо
* ОБНОВИТЬ *
Итак, в ответ на Яна Викхольма, я попробовал абсолютный путь, и это совершенно не удалось.
пример
Если я протестирую это в консоли:
screen -S пример /home/administrator/script/script.sh
Скрипт не выполняется. Я упустил здесь что-то концептуальное?
Я сразу получаю сообщение об ошибке на экране [экран прерывается]
* РЕШЕНИЕ *
Наконец разобрался. Проблема с экраном заключалась в пути к исполняемому файлу.
Вот последняя запись crontab, которая работает как шарм
@reboot cd / home / administrator / script && / usr / bin / screen -dmS пример ./script.sh
Спасибо за помощь Ян
Наконец разобрался. Проблема с экраном заключалась в пути к исполняемому файлу.
Вот последняя запись crontab, которая работает как шарм
@reboot cd / home / administrator / script && / usr / bin / screen -dmS пример ./script.sh
Спасибо за помощь Ян
PS, да, я пытался ответить на него, но это не давало мне возможности в течение 8 часов, поэтому я просто опубликовал ответ в исходном посте.
Вы пробовали запустить его с:
nohup /path/to/script/script.sh &> /output/goes/here &
Это запустит сценарий, перенаправит как STDOUT, так и STDERR в файл, запустит его в фоновом режиме и скажет ему игнорировать сигналы зависания (поскольку его родительский процесс умирает).
Редактировать: Также было бы разумнее всегда оборачивать сценарии init / cron, чтобы строка, которую должен вызывать cron, сама по себе была просто сценарием, а не cd /where && ./script.sh. поэтому было бы лучше, если бы у вас был только /path/to/launcher.sh, который затем содержал «cd /where && screen foobar» и т. д.