Run a command at a specific time

后端 未结 5 707
闹比i
闹比i 2021-01-31 04:36

I\'m trying to run a command at a specific time. I\'ve looked at the \"at\" command, but I don\'t know how to get it working...

Here\'s what I do:

at 184         


        
相关标签:
5条回答
  • 2021-01-31 05:13

    In bash or zsh you can say

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

    Failing that, you need to use a here document:

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

    You might also want to look into cron for regularly scheduled jobs; the crontab entry would look like

    43 18 * * * php /run/this/script.php
    

    (EDIT: whoops, helps to recall which version of at. I think that may have been a local mod.)

    0 讨论(0)
  • 2021-01-31 05:17

    The at command is not installed by default to the systems I work (Ubuntu, RHEL) and I don't have permissions to install new software, so I use scripts that combine bash and awk in order to achieve the at functionality as follows:

    #! /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]

    0 讨论(0)
  • 2021-01-31 05:20

    You could try this:

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

    edit if what you want to do is run Firefox, try this:

    at 1843 <<_EOF_
    DISPLAY=:0.0 /usr/bin/firefox
    _EOF_
    
    0 讨论(0)
  • 2021-01-31 05:22

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

    0 讨论(0)
  • 2021-01-31 05:25

    You can echo your command into at as input:

    echo "/usr/bin/php /run/this/script.php" | at 18:43
    
    0 讨论(0)
提交回复
热议问题