在特定时间运行命令

Eam*_*orr 20 linux bash command at-job

我正在尝试在特定时间运行命令.我看过"at"命令,但我不知道如何让它工作......

这是我做的:

at 1843 (Enter)
php /run/this/script.php (Ctrl+D)
Run Code Online (Sandbox Code Playgroud)

但是我如何在bash脚本中执行此操作?我的意思是,我需要按回车键并按"Ctrl + D"设置延迟...如何在脚本中执行此操作?

任何建议最受欢迎.

提前致谢,

Mic*_*ski 28

您可以将命令at作为输入回显:

echo "/usr/bin/php /run/this/script.php" | at 18:43
Run Code Online (Sandbox Code Playgroud)


Poi*_*nty 13

你可以试试这个:

at 1843 <<_EOF_
php /run/this/script.php
_EOF_
Run Code Online (Sandbox Code Playgroud)

编辑如果你想要做的是运行Firefox,试试这个:

at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_
Run Code Online (Sandbox Code Playgroud)

  • 那么当"at"运行程序时,它可能无法访问X显示器; 在运行浏览器之前,您可能会尝试确保将"DISPLAY"环境变量设置为":0.0"或*at"at"脚本中的内容*. (2认同)

gee*_*aur 7

bashzsh你可以说

at 1843 <<< 'php /run/this/script.php'
Run Code Online (Sandbox Code Playgroud)

如果做不到这一点,你需要使用这里的文件:

at 1843 <<EOF
php /run/this/script.php
EOF
Run Code Online (Sandbox Code Playgroud)

您可能还想查看cron定期安排的工作; 该crontab条目将看起来像

43 18 * * * php /run/this/script.php
Run Code Online (Sandbox Code Playgroud)

(编辑:哎呀,有助于回忆起哪个版本at.我认为这可能是本地mod.)

  • `at`和`cron`通常都无法访问窗口系统.你应该能够获得`$ DISPLAY`和`$ XAUTHORITY`的值,然后用`env`设置在作业中; 通常只是`env DISPLAY =:0/usr/bin/firefox`将作为命令. (2认同)