Подтвердить что ты не робот

Выполнить команду в определенное время

Я пытаюсь запустить команду в определенное время. Я посмотрел на команду "at", но я не знаю, как заставить ее работать...

Вот что я делаю:

at 1843 (Enter)
php /run/this/script.php (Ctrl+D)

Но как это сделать в bash script? Я имею в виду, мне нужно нажать enter и "Ctrl + D", чтобы настроить задержку... Как это сделать в script?

Любые предложения приветствуются.

Спасибо заранее,

4b9b3361

Ответ 1

Вы можете попробовать следующее:

at 1843 <<_EOF_
php /run/this/script.php
_EOF_

отредактируйте, если вы хотите запустить Firefox, попробуйте следующее:

at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_

Ответ 2

Вы можете выполнить команду echo в at в качестве ввода:

echo "/usr/bin/php /run/this/script.php" | at 18:43

Ответ 3

В 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. Я думаю, что это был локальный мод.)

Ответ 4

echo "php /run/this/script.php" | at 18:43

Ответ 5

Команда в по умолчанию не установлена ​​для систем, которые я работаю (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]