Tworzę skrypt bash na swój użytek. Jak mogę uruchomić polecenie na określony czas, np. 20 sekund i zakończyć polecenie? Wypróbowałem wiele rozwiązań, ale nic nie działa, próbowałem też limitu czasu bez powodzenia. Proszę dać mi jakieś rozwiązanie tego problemu.
na przykład: chcę uruchomić to polecenie w skrypcie i terminalu po 10 sekundach
some command
some command > logfile &
pierwszego wiersza. Następnie możesz przeanalizowaćlogfile
.Z wiersza polecenia możesz użyć polecenia „
your_command & sleep 20; kill $!
aptget install timeout
Itimeout -k 3m 14s your_command
expect
jak wyjaśniono tutaj: https://unix.stackexchange.com/questions/43340/how-to-intruces-timeout-for-shell-scriptingperl -e "alarm 10; exec @ARGV" "Your_command"
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
( Źródło i wyjaśnienie )źródło
Innym sposobem jest użycie wzorca pgrep $ lub wzorca pkill $; zwraca wszystkie identyfikatory PID pasujące do podanego wzorca, przeglądając wszystkie uruchomione procesy na maszynie. Aby ograniczyć zakres PID tylko do tych, które posiadasz, użyj: wzorca pgrep -P $ mypid $ lub wzorca pkill -P $ mypid $
Aby uruchomić proces w tle przez określony czas, skrypt wyglądałby mniej więcej tak:
Należy pamiętać, że spowoduje to zabicie wszystkich procesów o tym samym wzorcu nazw uruchomionych pod bieżącym nadrzędnym PID. Możesz więc użyć tego do uruchomienia wielu procesów i zabicia ich wszystkich jednocześnie po pewnym czasie.
źródło