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,

Author: hlovdal, 2011-04-20

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_
 13
Author: Pointy,
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
 30
Author: Michael Berkowski,
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.)

 8
Author: geekosaur,
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

 2
Author: drysdam,
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]

 1
Author: funk,
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