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