在特定的时间运行一个命令

我试图在特定的时间运行一个命令。 我已经看过“at”命令,但是我不知道如何让它工作。

这就是我所做的:

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

但是,我怎样才能做到这一点在bash脚本? 我的意思是,我需要按回车键和“Ctrl + D”设置延迟…如何在脚本中做到这一点?

任何build议最受欢迎。

提前致谢,

Solutions Collecting From Web of "在特定的时间运行一个命令"

你可以试试这个:

 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 

bashzsh你可以说

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

否则,你需要使用here文件:

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

你可能也想看看定期安排的工作; crontab条目看起来像

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

(编辑:哎呀,有助于回忆在哪个版本,我认为这可能是一个本地修改。)

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

at命令没有默认安装到我工作的系统(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]