Uruchom polecenie w określonym czasie
Próbuję uruchomić polecenie w określonym czasie. Patrzyłem na komendę "at", ale nie wiem, jak ją uruchomić...
Oto co robię:
at 1843 (Enter)
php /run/this/script.php (Ctrl+D)
Ale jak to zrobić w skrypcie bash? To znaczy, muszę nacisnąć enter i "Ctrl + D", aby ustawić opóźnienie... Jak to zrobić w skrypcie?
Wszelkie sugestie mile widziane.Z góry dzięki,
5 answers
Możesz spróbować tego:
at 1843 <<_EOF_
php /run/this/script.php
_EOF_
edit Jeśli chcesz uruchomić Firefoksa, spróbuj tego:
at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-20 18:01:58
Możesz echo komendy do {[1] } jako input:
echo "/usr/bin/php /run/this/script.php" | at 18:43
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-07 15:04:22
W bash
lub zsh
można powiedzieć
at 1843 <<< 'php /run/this/script.php'
W przeciwnym razie musisz użyć dokumentu here:
at 1843 <<EOF
php /run/this/script.php
EOF
Możesz również zajrzeć do cron
Dla regularnie zaplanowanych zadań; wpis crontab
będzie wyglądał tak:
43 18 * * * php /run/this/script.php
(EDIT: UPS, pomaga przypomnieć, która wersja at
. Myślę, że to mógł być lokalny mod.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-20 17:53:00
echo "php /run/this/script.php" | at 18:43
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-20 17:43:59
Polecenie at nie jest domyślnie instalowane w systemach, w których pracuję (Ubuntu, RHEL) i nie mam uprawnień do instalowania nowego oprogramowania, więc używam skryptów, które łączą bash i awk, aby osiągnąć funkcjonalność at w następujący sposób:
#! /bin/bash
res=""
while [ ! $res ]; do
res=$( date | awk -v hour=$1 -v min=$2 '{
split($4, tmp, ":" );
if( (tmp[1] == hour) && (tmp[2] == min) )
{
print "ok";
}
else
{
print "";
}
}' )
done
./atReplacement.sh $HOUR $MIN; [OTHER_COMMANDS]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-07 09:55:12