Muszę skonfigurować zadanie cron, które co godzinę uruchamia plik wykonywalny skompilowany przy użyciu gcc.
Zalogowałem się jako root i wpisałem crontab -e
Następnie wprowadziłem następujące dane i zapisałem plik.
0 * * * * /path_to_executable
Jednak zadanie cron nie działa.
Widzę, że kiedy piszę /...path_to_executable
, pojawia się błąd segmentacji. Mogę uruchomić plik wykonywalny tylko z folderu, w którym się znajduje. Czy istnieje sposób rozwiązania tego problemu?
Odpowiedzi:
0 * * * * cd folder_containing_exe && ./exe_name
powinien działać, chyba że jest coś innego, co trzeba skonfigurować, aby program mógł działać.
źródło
Rozwiązaniem tego problemu jest ustalenie, dlaczego pojawia się błąd segmentacji, i naprawienie go.
źródło
Możesz także użyć
@hourly
natychmiastowego0 * * * *
źródło
@hourly
to dokładny synonim0 * * * *
, nie ma różnicy.Czy chodziło Ci o to, że plik wykonywalny nie działa, jeśli jest wywoływany z innego katalogu? Jest to raczej błąd w pliku wykonywalnym. Jednym z potencjalnych powodów może być to, że plik wykonywalny wymaga niektórych bibliotek współdzielonych z zainstalowanego folderu. Możesz sprawdzić zmienną środowiskową
LD_LIBRARY_PATH
źródło
Jeśli używasz Ubuntu, można umieścić skrypt w jednym z tych folderów:
/etc/cron.daily
,/etc/cron.hourly
,/etc/cron.monthly
lub/etc/cron.weekly
.Więcej szczegółów znajdziesz w tym poście: /ubuntu/2368/how-do-i-set-up-a-cron-job
źródło
Ponieważ nie mogłem uruchomić
C
pliku wykonywalnego w ten sposób, napisałem prosty,shell script
który wykonuje następujące czynnościNa liście zadań cron nazywam skrypt powłoki.
źródło
posługiwać się
aby zobaczyć wynik polecenia, można również przekierować błędy
również możesz użyć
crontab -l
by sprawdzić, czy Twoje zmiany zostały zapisane.
źródło