Как настроить задание 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.