Jak uruchomić skrypt w określonym czasie w systemie Linux? [Zamknięte]

81

Mam plik tekstowy zawierający określoną datę i godzinę. Chcę mieć możliwość uruchomienia skryptu w czasie określonym w tym pliku. Jak byś to osiągnął? Utworzyć inny skrypt działający w tle (coś w rodzaju demona) i co sekundę sprawdza, czy aktualny czas jest zgodny z czasem w pliku? Czy jest inny sposób? Maszyna jest serwerem linuxowym , Debian wheezy. Z góry dziękuję

Aaron Ullal
źródło
4
Jakikolwiek powód, dla którego cron nie działa?
lreeder
12
Dlaczego ten temat jest zamknięty? To bardzo rozsądne pytanie. Wyszukiwarka Google doprowadziła Cię do tego jako nr 1, a odpowiedzi są dość dziwaczne. Więc ktoś, kto może odpowiedzieć na to pytanie, jest jasne, że angielski zostanie zablokowany
Richard de Ree,
2
@Richard Podejrzewam, że powodem, dla którego StackOverflow zamyka tak wiele pytań, jest zachęcenie użytkowników do zadawania pytań niezwiązanych z tematem w odpowiedniej witrynie StackExchange. Istnieje kilka nowych witryn SE, które wcześniej nie istniały. Na przykład jest sporo bardzo przydatnych pytań Vima na temat SO, które zostały zamknięte jako niezwiązane z tematem, a teraz, gdy istnieje Vi / Vim SE, te pytania będą tam na temat. Tylko rozmyślam. Jednak nadal wydaje się to kwestią programistyczną
mgarey
2
Tbh Zapominam, jak używać crona za każdym razem, gdy się go nauczę i nie potrzebuję niczego zaawansowanego.
sudo

Odpowiedzi:

148

Spójrz na następujące:

echo "ls -l" | at 07:00

Ta linia kodu wykonuje „ls -l” w określonym czasie. To jest przykład wykonania czegoś (w moim przykładzie polecenia) w określonym czasie. „at” to polecenie, którego naprawdę szukałeś. Możesz przeczytać specyfikację tutaj:

http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.html http://manpages.ubuntu.com/manpages/xenial/man1/at.1posix.html

Mam nadzieję, że to pomoże!

Antoni
źródło
2
dostać błąd Can't open /var/run/atd.pid to signal atd. No atd running?jakieś wskazówki?
HappyCoding
2
Potrzebujesz atduruchomionego demona at. W Manjaro OpenRC możesz po prostu zainstalować at-openrci dodać usługę demona atd za pomocą: sudo rc-update add atdi zacząć od sudo rc-service atd start. Zwykle atpakiet zawierał już systemd(domyślny system init / service w różnych dystrybucjach linux, w tym Ubuntu) usługę, z którą można go uruchomić sudo systemctl start atdi włączyć autostart przy inicjalizacji sudo systemctl enable atd.
Manoel Vilela,
8
W moim przypadku natychmiast wypisuje to "job 6 at 2017-08-21 10:53" ...
Jewenile
BTW, moja dokumentacja bash opisuje at -cużycie. Po co to, jeśli sposobem wykonania polecenia jest potokowanie go do wejścia standardowego?
Tom Russell
Czy ten skrypt będzie działał później, jeśli system był wtedy wyłączony?
shrijit
18

atPolecenia istnieje specjalnie do tego celu (w przeciwieństwie do cron, która jest przeznaczona do planowania zadań cyklicznych).

at $(cat file) </path/to/script
tripleee
źródło
1
z $(< file)
bashem
10

Cron jest dobry do czegoś, co będzie uruchamiane okresowo, na przykład w każdą sobotę o 4 rano. Jest też anacron , który działa wokół wyłączeń zasilania, usypiania i tak dalej. Jak również w .

Ale w przypadku jednorazowego rozwiązania, które nie wymaga roota ani niczego innego, możesz po prostu użyć daty do obliczenia sekund od epoki czasu docelowego, a także czasu obecnego, a następnie użyć wyrażenia, aby znaleźć różnicę, i spać tyle sekund.

Anony
źródło
10
atPraca pozostanie zaplanowano nawet jeśli urządzenie zostanie ponownie uruchomiony w międzyczasie.
tripleee
8

Zwykle w Linuksie używasz crontabdo tego typu scdulowanych zadań. Ale musisz określić czas, kiedy "ustawiasz licznik czasu" - więc jeśli chcesz, aby był konfigurowalny w samym pliku, będziesz musiał stworzyć jakiś mechanizm, aby to zrobić.

Ale generalnie użyłbyś na przykład:

30 1 * * 5 /path/to/script/script.sh

Wykonywałby skrypt w każdy piątek o 1:30 (rano) tutaj:

30 to minuty

1 to godzina

następne 2 * są day of monthi month(w tej kolejności) i 5jest dniem tygodnia

julumme
źródło
2
więc jak wywołać to polecenie?
Aaron Ullal
1
Crontab Guru ( crontab.guru ) to pomocne narzędzie do konfiguracji crontab.
Umesh .A Bhat