Запустите команду в определенное время
Я пытаюсь запустить команду в определенное время. Я посмотрел на команду "at", но я не знаю, как заставить ее работать...
Вот что я делаю:
at 1843 (Enter)
php /run/this/script.php (Ctrl+D)
Но как мне сделать это в скрипте bash? Я имею в виду, мне нужно нажать Enter и "Ctrl+D", чтобы установить задержку... Как сделать это в скрипте?
Любые предложения приветствуются.
Заранее спасибо,
5 ответов
Вы можете попробовать это:
at 1843 <<_EOF_
php /run/this/script.php
_EOF_
отредактируйте, если вы хотите запустить Firefox, попробуйте это:
at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_
Вы можете повторить свою команду в at
как вход:
echo "/usr/bin/php /run/this/script.php" | at 18:43
В bash
или же zsh
ты можешь сказать
at 1843 <<< 'php /run/this/script.php'
В противном случае вам нужно использовать здесь документ:
at 1843 <<EOF
php /run/this/script.php
EOF
Вы также можете посмотреть в cron
для регулярных рабочих мест; crontab
запись будет выглядеть
43 18 * * * php /run/this/script.php
(Редактировать: упс, помогает вспомнить, какая версия at
, Я думаю, что это был местный мод.)
Команда at не устанавливается по умолчанию для систем, с которыми я работаю (Ubuntu, RHEL), и у меня нет прав для установки нового программного обеспечения, поэтому я использую сценарии, которые комбинируют bash и awk, чтобы добиться функциональности at следующим образом:
#! /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]