Rzuciłem kilka rzutek, próbując uzyskać mój skrypt w języku Python, który będzie wykonywany co minutę. Pomyślałem więc, że uprościłem to, wykonując „najprostszą rzecz, która mogłaby ewentualnie działać” raz na minutę (uruchamiam debian / testowanie).
Utworzyłem plik jednowierszowy w /etc/cron.d/perminute
:
* * * * * /bin/touch /home/me/ding_dong
Jest własnością roota i jest wykonywalny (nie jestem pewien, czy którykolwiek z nich ma znaczenie). A potem zrobiłem:
sudo service cron reload
A potem usiądź i zacznij biegać od ls -ltr
nowa w moim katalogu domowym ( /home/me
). Ale mój plik ding_dong nigdy się nie pojawia. Wiem, że jeśli to zrobię sudo /bin/touch /home/me/ding_dong
, od razu się pojawi.
Oczywiście brakuje tu czegoś głupiego.
Odpowiedzi:
Dodając konfigurację crona do
/etc/cron.d/
lub/etc/crontab
wewnątrz, musisz dodać nazwę użytkownika, w którym kontekście polecenie powinno zostać uruchomione, w twoim przykładzie* * * * * root /bin/touch /home/me/ding_dong
I tylko wskazówka ode mnie: nie musisz zaczynać od
ls -ltr
nowa, po prostu użyjwatch -n 5 "ls -ltr"
i uruchomi polecenie co 5 sekund (lub dowolną inną wartość, zastępując 5 tym, czego chcesz).źródło
man cron
trochę wolniej i zwróceniu szczególnej uwagi naDEBIAN specific
sekcje zauważyłem, że pliki NIE mogą być grupowe ani inne do zapisu. Który w pewnym momencie włączyłem w swoją frustrację.man cron
: Dodatkowo w Debianie cron odczytuje pliki z katalogu /etc/cron.d. cron traktuje pliki w /etc/cron.d tak samo, jak plik / etc / crontab (zachowują specjalny format tego pliku, tzn . zawierają pole użytkownika ). Są one jednak niezależne od / etc / crontab: na przykład nie dziedziczą po nim ustawień zmiennych środowiskowych. Ta zmiana jest specyficzna dla Debiana, patrz uwaga poniżej DEBIAN SPECIFIC.Aby utworzyć nowe
cron
zadanie, uruchom jecrontab -e
jako użytkownik, którego chcesz uruchomić. Następnie dodaj odpowiedni wiersz w oknie edytora, które się pojawi:Sposób, w jaki to robisz, wymaga innego formatu i tak naprawdę nie jest dobrym pomysłem. Crontabs
/etc/cron.d
mają nieco inny format, wymagają uruchomienia nazwy użytkownika. Na przykład:Dobrą sztuczką (jak sugeruje @VogonPoetLaureate) jest wychwycenie standardowego błędu zadań cron, który może pomóc w ich debugowaniu. Na przykład:
źródło
crontab -l
wyszczególnienia wszystkich twoich zadań cron.Możliwym błędem jest tutaj to, jak tworzony jest plik jednowierszowy . Z dokumentacji Ubuntu :
Na przykład ten sposób tworzenia nie działa:
źródło