Ustawianie limitu czasu dla zadań cron

11

Czy Ubuntu Linux cron (Vixie cron?) Obsługuje ustawianie limitu czasu dla swoich zadań?

W szczególności proces zostałby zabity po X sekundach, chyba że do tego czasu zakończy się pomyślnie.

Miałem kilka przypadków, w których zadania zawieszały się z powodu połączenia sieciowego i różnych problemów. Proces pozostaje zawieszony na zawsze, chyba że ręcznie oczyścisz go i zabijesz.

Mikko Ohtamaa
źródło

Odpowiedzi:

26

Na Ubuntu istnieje limit czasu poleceń , który jest częścią coreutils. Możesz użyć tego w ten sposób, aby ustawić limit czasu. Starsze wersje Debian / Ubuntu nie budowały i nie zawierały tego polecenia, ale istnieje porównywalny timeoutpakiet, który można zainstalować.

# puppet shouldn't take more then 40 minutes!
47 * * * * root /usr/bin/timeout 2400 /usr/bin/puppet agent ...
Zoredache
źródło
3
Czas trwania może również zawierać sufiks („s” dla sekund, „m” dla minut, „h” dla godzin i „d” dla dni). Tak więc dla lepszej czytelności powyższe można również zapisać jako 47 * * * * root / usr / bin / timeout 40m / usr / bin / puppet agent ...
smoove666 21.04.15
Nie, nie może. przynajmniej nie z implementacją, którą miałem, pisząc to pytanie. Nowa wersja Coreutils ma sufiks s. Wersja, którą miałem na starszych systemach Debiana, nie miała.
Zoredache
-2

Nie sądzę, żeby to było możliwe. Będziesz musiał wbudować czek do swojej aplikacji.

Neil H. Watson
źródło