it-swarm.com.de

Wie starte ich ein Programm für einen bestimmten Zeitraum?

Ich suche nach einer in Ubuntu integrierten Methode, mit der ich ein Skript oder Programm oder was auch immer für einen festgelegten Zeitraum ausführen kann.

Ich habe ein Programm gefunden, das das so macht, wie ich es mag , aber das Paket ist für Ubuntu nicht verfügbar. Auf jeden Fall hoffte ich auf etwas Eingebautes.

Das Einzige, woran ich denken kann, ist, die aktuelle Uhrzeit abzurufen und in 30 Minuten einen Cron-Job einzurichten, der das Programm zum Erliegen bringt. Ich hatte gehofft, es gäbe eine Möglichkeit, dies zu tun, ohne ein Skript einzurichten, aber wenn ich muss, wird es nicht das Ende der Welt sein. Nach dem 30-Minuten-Intervall möchte ich meinen Laptop in einen Schlafmodus versetzen, aber dies kann von der Timer-Sache getrennt sein.

Danke im Voraus.

7
Teque5

Ich habe gerade folgendes geschrieben und es scheint zu funktionieren:

ping google.com& PID=$!; sleep 3; kill $PID

Natürlich sollten Sie ping durch den Befehl ersetzen, den Sie ausführen möchten, und 3 durch eine Zeitüberschreitung in Sekunden. Lassen Sie mich wissen, wenn Sie eine genauere Erklärung benötigen.

13
Adam Byrtek

Warum nicht /usr/bin/timeout verwenden?

$ timeout --help
Usage: timeout [OPTION] DURATION COMMAND [ARG]...
  or:  timeout [OPTION]
Start COMMAND, and kill it if still running after DURATION.
14
waltinator

Eine einfache (und nicht viel getestete) Version von hatimerun:

#!/bin/sh

help(){
    echo "Usage"  >&2
    echo "  $0 -t TIME COMMAND" >&2
    exit 1
}

TEMP=`getopt -o t: -n "$0" -- "[email protected]"`

if [ $? != 0 ] ; then 
    help
fi

eval set -- "$TEMP"

while true ; do
    case "$1" in
    -t) timeout=$2; shift  2;;
    --) shift; break;;
    esac
done

if [ -z "$timeout" ]; then
 help
fi

cmd="$*"

$cmd&
echo "kill $!" | at now+$timeout

Informationen zum Festlegen der Uhrzeit finden Sie in der Manpage von at . Wie bei at beträgt die minimale Zeitauflösung 1 Minute.

Eine andere Möglichkeit ist m upstart zu verwenden anstelle dieses Skripts.

3
Florian Diesch

Perl benutzen:

Perl -e "alarm 5; exec @ARGV" systemctl list-timers

Verwenden des Befehls timelimit:

Sudo apt install timelimit    
timelimit -t5 node app.js

Timeout-Befehl verwenden:

timeout -sHUP time command

0
Rakib Fiha