Ich mache ein Bash-Skript für meinen Gebrauch. Wie kann ich einen Befehl für eine bestimmte Zeit ausführen, z. B. 20 Sekunden, und den Befehl beenden? Ich habe viele Lösungen ausprobiert, aber nichts funktioniert. Ich habe auch den Timeout-Befehl ohne Erfolg ausprobiert. Bitte geben Sie mir eine Lösung dafür.
Beispiel: Ich möchte diesen Befehl nach 10 Sekunden in Skript und Terminal ausführen
some command
some command > logfile &
in der ersten Zeile. Anschließend können Sie analysierenlogfile
.An der Bash-Eingabeaufforderung können Sie "
your_command & sleep 20; kill $!
aptget install timeout
undtimeout -k 3m 14s your_command
expect
wie hier beschrieben: /unix/43340/how-to-introduce-timeout-for-shell-scriptingperl -e "alarm 10; exec @ARGV" "Your_command"
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
( Quelle und Erklärung )quelle
Eine andere Möglichkeit besteht darin, pgrep $ pattern oder pkill $ pattern zu verwenden. Gibt alle PIDs zurück, die dem angegebenen Muster entsprechen, und überprüft alle laufenden Prozesse auf dem Computer. Um den Umfang der PIDs auf diejenigen zu beschränken, die Sie besitzen, verwenden Sie: pgrep -P $ mypid $ pattern oder pkill -P $ mypid $ pattern
Um einen Hintergrundprozess für einen festgelegten Zeitraum auszuführen, sieht Ihr Skript ungefähr so aus:
Beachten Sie, dass dadurch alle Prozesse mit demselben Namensmuster beendet werden, die unter der aktuellen übergeordneten PID ausgeführt werden. Auf diese Weise können Sie mehrere Prozesse starten und nach einer bestimmten Zeit alle gleichzeitig beenden.
quelle