Jak zapobiec uruchamianiu poprzednich zadań przez ATD?

9

Demon at to świetne narzędzie! Jeśli jednak zadanie jest zaplanowane na 8:00, a maszyna jest w tym czasie wyłączona, at uruchomi zadanie przy każdym uruchomieniu komputera. Chciałbym zatrzymać to zadanie, jeśli minie czas. Przeszukałem strony podręcznika i online, ale albo nie ma odpowiedzi, albo jej nie znalazłem. Używam Arch, ale o ile wiem, jest bardzo podobny we wszystkich dystrybucjach.

Każda pomoc jest mile widziana!

Elmer
źródło

Odpowiedzi:

7

Kiedy praca staje się pracą przeszłą? Jeśli włączysz system o 7:59:50, a atdemon uruchomi się o 8:00:01, czy zadanie powinno zostać wykonane? Co się stanie, jeśli demon rozpocznie się o 7:59:59, ale odczytanie wszystkich plików zajmie dwie sekundy?

Ty decydujesz! Rozpocznij pracę od sprawdzenia czasu i przerwij, jeśli czas minął.

export execute_by_date=$(date +%s 'tomorrow 8:01')
at tomorrow 8:00
[ "$(date +%s)" -le "$execute_by_date" ] || exit
do_stuff
␄
Gilles „SO- przestań być zły”
źródło
2

Możesz napisać skrypt inicjujący, który anuluje wszystkie zaplanowane zadania podczas zamykania lub ponownego uruchamiania.

Nie jestem pewien co do Arch-Linux - czy istnieje /etc/sysconfig/atcoś podobnego? Być może jest to po prostu przełącznik konfiguracji, który należy odwrócić ...

Nils
źródło
Myślę, że to najlepsze rozwiązanie, opróżnij atkolejkę przed aturuchomieniem.
bahamat
To jest dokładnie to, czego oczekuję byłoby / powinno być możliwe! Niestety /etc/sysconfig/w Arch nie ma żadnego katalogu ... I żaden z plików wymienionych na stronach man nie jest plikami konfiguracyjnymi.
Elmer
@Elmer Właśnie googlowałem i czytałem o arch. Linuxie. Wydaje się, że „/etc/rc.d/atd” jest skryptem inicjującym demona at-tam. Zajrzyj tam, jeśli widzisz, jak analizuje jakiś plik konfiguracyjny. Jeśli nie masz szczęścia, musisz wybrać własny skrypt startowy (np. Nazwij go atcleari uruchom wcześniej atd).
Nils,
2

Mój głos jest na crondemona.

Jeśli chcesz uruchamiać go o określonych porach dnia, ale nie codziennie o tej samej porze, utworzę tabelę crontab z jednym wpisem na dzień z określonym czasem wykonania:

Niektóre przykłady zaczerpnięte z crontab(5):

# run five minutes after midnight, every day
5 0 * * *       command
# run at 2:15pm on the first of every month
15 14 1 * *     command
# run at 10 pm on weekdays
0 22 * * 1-5    command
rpet
źródło
0

To, czego chcesz, to demon cron. Robi dokładnie to, co chcesz.

Nakarm swoją ulubioną wyszukiwarkę demona crona, a znajdziesz wiele instrukcji i instrukcji. man croni man crontabjest również pomocny.

Marco
źródło
Dzięki za pomoc, ale cron nie działa na mój problem. Potrzebuję uruchomienia skryptu o określonych porach dnia, ale nie o tej samej porze każdego dnia.
Elmer