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

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

Joast
источник
11
используйте && вместо
;,
4
Ты прав. && намного лучше, если есть вероятность, что цель cd не существует (например, если директория находится на сервере NFS, который не работает).
Joast
Спаси мой день! Благодарность!
Chiakie
Обратите внимание, что вам также нужен абсолютный путь (т.е. от корневого каталога) afaik
drevicko
8

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

Дэвид Торнли
источник
5

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

Марек Скиба
источник
любопытно с этим решением, в какую минуту он работает, @hourly означает 0?
ojblass 06
1
@ojblass @hourly- точный синоним 0 * * * *, разницы нет.
Марек Скиба
2

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

Джаян
источник
2

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

Подробнее читайте в этом посте: /ubuntu/2368/how-do-i-set-up-a-cron-job

Джеймс Гентес
источник
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, но он пуст.
Аноним,