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ę


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!


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

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.


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.