Як налаштувати завдання 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.