2010-08-13 3 views
79

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

Я вошел в систему как суперпользователь и напечатал crontab -e

Тогда я вошел в следующую и сохранили файл.

0 * * * * /path_to_executable 

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

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

+5

Это плохое название. Вы знаете, как настроить работу cron; вы хотите знать, как заставить команду работать. –

+5

принадлежит к superuser.com (не относится непосредственно к программированию) – Philipp

+3

Неверный заголовок, но так я нашел решение. –

ответ

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

должен работать, если нет необходимости в настройке программы для запуска.

+9

использовать && вместо;, в противном случае может возникнуть интерес (особенно при использовании с rm) – Reactormonk

+2

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

-1

использование

path_to_exe >> log_file 

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

path_to_exe &> log_file 

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

crontab -l

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

+0

crontab -l показывает задание cron при входе в систему как root. Я пробовал файл log_file, но он пуст. – Anonymous

1

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

cd /..path_to_shell_script 
./c_executable_name 

В списке хрон рабочих мест, я вызываю скрипт.

1

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

4

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

3

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

+0

Любопытно с этим решением, в какую минуту он работает, на @hourly подразумевается 0? – ojblass

+1

@ojblass '@ hourly' является точным синонимом' 0 * * * * ', нет никакой разницы. –

Смежные вопросы