Jak okresowo uruchamiać polecenie z bardzo krótkim odstępem czasu i uzyskać zwrot?


12

Muszę wywołać określone polecenie w odstępie około 5 sekund. Jak skonfigurować demona / proces działający w tle lub coś podobnego? Spojrzałem na cronjobs, ale minimalny odstęp wydaje się wynosić 1 minutę. Wszelkie porady są mile widziane;)

Fedora to system.

EDYTUJ polecenie byłoby bashscriptem, więc myślę, że „watch” nie zrobiłby tego.

Odpowiedzi:


10
(
  while true
  do
    your-command-here
    sleep 5
  done
) &
disown

po co się wyrzuca? co jeśli bez niego ucieknę?
Hans

@Marcel, disownusuwa ostatnie zadanie ze stołu zadań powłoki, tworząc z tego rodzaju demona, tak jak prosiłeś. Nie jest to prawdziwy demon, ponieważ jest nadal podłączony do terminala i należy do tej samej grupy procesów, ale będzie działał po zamknięciu powłoki.
Juliano,

okej świetnie, to by działało: D Tylko z ciekawości, w jaki sposób „stworzyć” demona?
Hans

@Marcel najprostszym sposobem jest wywołanie demona (3) z C lub innego języka z dostępem do biblioteki (nie ze skryptu powłoki). To jest trudna droga .
Juliano

14

Jak myślisz, dlaczego „zegarek” nie zadziała?

$ cat periodic.sh
#!/bin/bash
echo $(date)
$ chmod +x periodic.sh

$ watch -n 5 ./periodic.sh

co jeśli się wyloguję? skrypt powinien kontynuować działanie.
Hans

Zatrzyma się, ale możesz użyć nohup watch -n 5 ./periodic.sh > periodic.log &i zapisać dane wyjściowe.
naufraghi

do pipowania użyj cytowania „”, ponieważ komenda „sh” jest podana jako „sh -c”, co oznacza, że ​​możesz potrzebować dodatkowego cytowania, aby uzyskać pożądany efekt ”
andrej

2

Może z nohup? Został zaprojektowany tak, aby zadanie mogło działać po zamknięciu powłoki.

Możesz także używać ekranów.


1

watchKomenda jest właściwe w przypadku użyłbym terminala multiplekser (np tmux, ekran, itd.), A następnie uruchomić komendę przy użyciu

watch -n 5 ./script.sh

W takim przypadku nawet jeśli zamkniesz terminal lub połączenie ssh z maszyną, skrypt nadal będzie działał.

Jedynym ograniczeniem tego podejścia jest to, że skrypt będzie uruchamiany co 5 sekund tylko wtedy, gdy zakończy wykonywanie w tym przedziale czasowym.


Ponieważ PO wyraźnie stwierdził, że jego zdaniem watchtego nie zrobi, proszę wyjaśnić, dlaczego Twoja odpowiedź przełamuje to ograniczenie lub w którym momencie uważasz, że OP pomylił się co do tego, watchże nie jest odpowiedni do tego zadania.
AdminBee,
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.