[英]Linux: Run cron job in foreground
Linux,有没有办法在前台(或交互模式)运行cron作业? (我有一个定期运行的程序来接受用户输入并进行一些处理。所以我想将它安排为可以在前台运行的 cron 作业)。
在用户的crontab
上试试这个:
@hourly DISPLAY=:0 xterm -e /path/to/my/script.sh
它将在您的脚本执行时打开(每小时)一个xterm
,并在脚本退出后退出。 当然,您应该修改@hourly
部分以满足您的需求。
对于cron
GUI
脚本,请在shell
尝试以下行:
crontab -e
然后在crontab
:
0 7 * * * DISPLAY=:0 /PATH/TO/SCRIPT
假设您正在运行X,您可以随时在所选显示器上打开一个窗口。
如果您没有 GUI 而您只有终端,请将出口转移到 tty。 执行“tty”,它将返回您将输出重定向到的设备。 例如,在 Centos 中,它将类似于:
/ dev / pts / 0
然后在crontab -e
你写:
1 * * * * user sh / PATH / TO / SCRIPT> / dev / pts / 0
根据您的需要调整 crontab 中的时间。 它只会在有人打开该终端时运行。
但是人们正在通过问题的标题寻找什么:
Linux:在前台运行 cron 作业
答案是nohup command_to_run &
:
1 * * * * nohup user sh / PATH / TO / SCRIPT &
nohup
允许像打开终端一样执行脚本,并解决了执行 crontab 的问题。 我的意思是当我们创建一个脚本时,例如:
#! / bin / bash
echo "I make it up"
我们等待 echo 的输出对其进行处理。 例子:
echo "I make it up"
if [[$? -gt 0]]
then
do something with the output of echo
echo
执行响应是通过 tty 终端中的stdout
获得的。 但是从 crontab 中“没有 tty”并且发生崩溃并且 crontab 不执行应用程序。 这可以通过nohup
解决。 更多信息: man nohup
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.