Jak mogę uruchomić polecenie po X sekundach bez snu? Lub ze snem, ale bez powłoki po prostu czekaj na odpowiedź na to polecenie?
Użyłem tego, ale to nie działało
sleep 5 ; ls > a.txt
Muszę uruchomić to w tle. Staram się nie uruchamiać go w skrypcie, próbuję uruchomić ls
po 5 sekundach, a powłoka nie tylko czeka na koniec snu
command-line
shell
sleep
Jaskółka oknówka
źródło
źródło
;
?Odpowiedzi:
Bardziej zwięzłym sposobem pisania jest to, co zasugerował Hennes
Alternatywnie, jeśli potrzebujesz więcej niż kilku sekund, możesz użyć
at
. Istnieją trzy sposoby wydawania poleceńat
:Potokuj:
Zapisz polecenie, które chcesz uruchomić, w pliku tekstowym, a następnie przekaż ten plik do
at
:Możesz także przekazywać
at
polecenia ze STDIN:Następnie naciśnij, CtrlDaby wyjść z
at
powłoki.ls
Komenda zostanie uruchomiony w ciągu jednej minuty.Możesz podać bardzo dokładne czasy w formacie
[[CC]YY]MMDDhhmm[.ss]
, jak wSpowoduje to uruchomienie skryptu
script.sh
o 21:34 i 12 sekundach 18 grudnia 2014 r. Więc teoretycznie możesz użyćat
do uruchomienia czegoś w ciągu pięciu sekund w przyszłości. Jest to jednak trochę jak użycie czołgu do ciosu muchy, a sugestia Hennesa jest lepsza.źródło
$(sleep 5; echo foo) &
Nie jestem pewien, dlaczego myślałem, że potrzebuję $ przed tym, ale z powodu mojej błędnej składni właśnie opublikowałem dłuższą (i bardziej zrozumiałą) wersję. (Command_for_in_new_shell) jest jednak krótszy.at
z opóźnieniem w kilka sekund?at 21:43
), Jeśli tego chcesz, lub po prostu zrób coś prostego, np.sleep 4 && command
Uruchomcommand
po 4 sekundach.Możesz obejść ten problem, uruchamiając powłokę lub skrypt w tle.
Przykład:
źródło