Як налаштувати завдання cron для запуску виконуваного файлу щогодини?


94

Мені потрібно налаштувати завдання cron, яке запускає виконуваний файл, скомпільований за допомогою gcc, раз на годину.

Я увійшов як root і набрав текст crontab -e

Потім я ввів наступне і зберіг файл.

0 * * * *  /path_to_executable

Однак робота cron не працює.

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


8
Це погана назва. Ви знаєте, як налаштувати роботу cron; Ви хочете знати, як змусити команду працювати.
Девід Торнлі,

5
належить на superuser.com (не має прямого відношення до програмування)
Філіп

3
Неправильна назва, але ось як я знайшов рішення.
Роман Хольцнер,

Можливо, ваш виконуваний файл запущено. Я рекомендую використовувати syslog (3) всередині нього (і принаймні зробити повідомлення журналу на початку, щоб переконатися, що він запущений).
Василь Старинкевич

Відповіді:


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

повинен працювати, якщо немає чогось іншого, що потрібно налаштувати для запуску програми.


11
використовувати && замість;, інакше можуть трапитися
цікаві

4
Ти маєш рацію. && набагато краще, якщо існує ймовірність, що цільовий диск не існує (наприклад, якщо директорія знаходиться на сервері NFS, який випадково не працює).
йоаст

Збережи мій день! Дякую!
Чіакі

Зверніть увагу, що вам також потрібен абсолютний шлях (тобто з кореневого каталогу)
afaik

8

Рішення для вирішення цього питання - з’ясувати, чому ви отримуєте помилку сегментації, та виправити це.


5

Ви також можете використовувати @hourlyмиттєвий0 * * * *


цікаво з цим рішенням, через яку хвилину воно працює, означає @hourly в 0?
ojblass

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.