Как настроить задание cron для запуска исполняемого файла каждый час?


95

Мне нужно настроить задание cron, которое запускает исполняемый файл, скомпилированный с использованием gcc, один раз в час.

Я вошел в систему как root и набрал crontab -e

Затем я ввел следующее и сохранил файл.

0 * * * *  /path_to_executable

Однако работа cron не работает.

Я вижу, что когда я печатаю, у /...path_to_executableменя возникает ошибка сегментации. Я могу выполнить исполняемый файл только из папки, в которой он находится. Как я могу решить эту проблему?


8
Плохое название. Вы знаете, как настроить задание cron; вы хотите знать, как заставить команду работать.
Дэвид Торнли

5
принадлежит superuser.com (не имеет прямого отношения к программированию)
Филипп

3
Неправильное название, но вот как я нашел решение.
Роман Хольцнер

Ваш исполняемый файл, вероятно, запущен. Я рекомендую использовать syslog (3) внутри него (и, по крайней мере, сделать сообщение журнала при запуске, чтобы убедиться, что он запущен).
Василий Старынкевич

Ответы:


162
0 * * * * cd folder_containing_exe && ./exe_name

должен работать, если нет чего-то еще, что нужно настроить для запуска программы.


11
используйте && вместо
;,

4
Ты прав. && намного лучше, если есть вероятность, что цель cd не существует (например, если директория находится на сервере NFS, который не работает).
Joast

Спаси мой день! Благодарность!
Chiakie

Обратите внимание, что вам также нужен абсолютный путь (т.е. от корневого каталога) afaik
drevicko

8

Решение этой проблемы - выяснить, почему вы получаете ошибку сегментации, и исправить ее.


5

Вы также можете использовать @hourlyмомент0 * * * *


любопытно с этим решением, в какую минуту он работает, @hourly означает 0?
ojblass 06

1
@ojblass @hourly- точный синоним 0 * * * *, разницы нет.
Марек Скиба

2

Вы имели в виду, что исполняемый файл не запускается при вызове из любого другого каталога? Это скорее ошибка исполняемого файла. Одна из возможных причин может заключаться в том, что исполняемый файл требует некоторых общих библиотек из установленной папки. Вы можете проверить переменную средыLD_LIBRARY_PATH



0

Поскольку я не мог запустить Cисполняемый файл таким образом, я написал простой, shell scriptкоторый выполняет следующие

cd /..path_to_shell_script
./c_executable_name

В списке заданий cron я вызываю сценарий оболочки.


0

использовать

path_to_exe >> log_file

чтобы увидеть вывод вашей команды, также ошибки могут быть перенаправлены с помощью

path_to_exe &> log_file

также вы можете использовать

crontab -l

чтобы проверить, были ли сохранены ваши правки.


crontab -l показывает задание cron, когда я вхожу в систему как root. Я пробовал log_file, но он пуст.
Аноним,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.