Как настроить работу cron для запуска исполняемого файла каждый час? - PullRequest
83 голосов
/ 13 августа 2010

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

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

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

0 * * * *  /path_to_executable

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

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

Ответы [ 7 ]

139 голосов
/ 13 августа 2010
0 * * * * cd folder_containing_exe && ./exe_name

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

7 голосов
/ 20 августа 2010

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

4 голосов
/ 27 декабря 2016

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

3 голосов
/ 24 февраля 2017

Если вы используете Ubuntu, вы можете поместить сценарий оболочки в одну из следующих папок: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly или /etc/cron.weekly.

Подробнее см.этот пост: https://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job

2 голосов
/ 13 августа 2010

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

1 голос
/ 13 августа 2010

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

cd /..path_to_shell_script
./c_executable_name

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

0 голосов
/ 13 августа 2010

используйте

path_to_exe >> log_file

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

path_to_exe &> log_file

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

crontab -l

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

...