Я ищу метод, встроенный к человечности, которая позволит мне запускать скрипт или программу или безотносительно в течение установленного промежутка времени.
Я нашел программу, которая делает это способом, мне нравится, но пакет недоступен Ubuntu. В любом случае я надеялся на что-то встроенное.
Единственная вещь, о которой я могу думать, состоит в том, чтобы получить текущее время и установить задание крона 30 минут от 'теперь', которые закроют программу. Я надеялся, что был способ сделать это, не настраивая сценарий, но если мне нужно к - он привычка быть концом света. После 30-минутного интервала я хотел бы поместить свой ноутбук в режим ожидания, но это может быть отдельным от вещи таймера.
Заранее спасибо.
Я имею, просто записал следующее, и это, кажется, работает:
ping google.com& PID=$!; sleep 3; kill $PID
Конечно, необходимо заменить ping с командой, которую Вы хотите выполнить и 3 с тайм-аутом в секундах. Сообщите мне, нужно ли Вам более подробное объяснение о том, как оно работает.
Простое (и не очень протестированный) версия hatimerun
:
#!/bin/sh
help(){
echo "Usage" >&2
echo " $0 -t TIME COMMAND" >&2
exit 1
}
TEMP=`getopt -o t: -n "$0" -- "$@"`
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
См. страницу справочника в для того, как указать время. Как с at
минимальное разрешение времени составляет 1 минуту.
Иначе должен использовать выскочку вместо этого сценария.
Почему бы не использовать /usr/bin/timeout
?
$ timeout --help
Usage: timeout [OPTION] DURATION COMMAND [ARG]...
or: timeout [OPTION]
Start COMMAND, and kill it if still running after DURATION.
Использование Perl:
perl -e "alarm 5; exec @ARGV" systemctl list-timers
Используя команду timelimit:
sudo apt install timelimit
timelimit -t5 node app.js
Используя команду тайм-аута:
timeout -sHUP time command