Ответ 1
0 * * * * cd folder_containing_exe && ./exe_name
должен работать, если для запуска программы не требуется что-то еще.
Мне нужно настроить задание cron, которое запускает исполняемый файл, скомпилированный с использованием gcc один раз в час.
Я зарегистрировался как root и набрал crontab -e
Затем я ввел следующее и сохранил файл.
0 * * * * /path_to_executable
Однако задание cron не работает.
Я вижу, что когда я набираю /...path_to_executable
, я получаю ошибку сегментации.
Я могу выполнить исполняемый файл только из папки, в которой он находится.
Есть ли способ решить эту проблему?
0 * * * * cd folder_containing_exe && ./exe_name
должен работать, если для запуска программы не требуется что-то еще.
Правильный способ решить это - выяснить, почему вы получаете ошибку сегментации, и исправить это.
Если вы используете Ubuntu, вы можете поместить оболочку script в одну из следующих папок: /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
Так как я не смог запустить C
исполняемый, я написал простой shell script
, который выполняет следующие
cd /..path_to_shell_script
./c_executable_name
В списке заданий cron я вызываю оболочку script.
Вы имели в виду, что исполняемый файл не запускается, если он вызван из любого другого каталога? Это скорее ошибка в исполняемом файле. Одна потенциальная причина может заключаться в том, что исполняемый файл требует наличия некоторых общих libraires из установленной папки. Вы можете проверить переменную окружения LD_LIBRARY_PATH
Вы также можете использовать @hourly
мгновение 0 * * * *
использовать
path_to_exe >> log_file
чтобы увидеть вывод вашей команды также ошибки можно перенаправить с помощью
path_to_exe &> log_file
также вы можете использовать
crontab -l
чтобы проверить, что ваши изменения сохранены