我正在尝试在特定时间运行命令。我看过“at”命令,但我不知道如何让它工作......
这就是我的所作所为:
at 1843 (Enter)
php /run/this/script.php (Ctrl+D)
但是如何在bash脚本中执行此操作?我的意思是,我需要按回车键并按“Ctrl + D”设置延迟...如何在脚本中执行此操作?
欢迎提出任何建议。
提前致谢,
答案 0 :(得分:28)
您可以将命令作为输入回显到at
:
echo "/usr/bin/php /run/this/script.php" | at 18:43
答案 1 :(得分:13)
你可以试试这个:
at 1843 <<_EOF_
php /run/this/script.php
_EOF_
编辑如果你要做的是运行Firefox,试试这个:
at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_
答案 2 :(得分:7)
在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
(编辑:whoops,有助于回忆at
的哪个版本。我认为这可能是本地模式。)
答案 3 :(得分:2)
echo "php /run/this/script.php" | at 18:43
答案 4 :(得分:1)
默认情况下, 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] 强>