11

在 Linux 中,有没有办法在前台(或交互模式)运行 cron 作业?(我有一个定期运行的程序来接受用户输入并进行一些处理。所以我想将它安排为可以在前台运行的 cron 作业)。

4

4 回答 4

11

在你的用户上试试这个crontab

@hourly DISPLAY=:0 xterm -e /path/to/my/script.sh

它将xterm在您的脚本执行时(每小时)打开一次,并在您的脚本退出后退出。当然,您应该修改@hourly零件以满足您的需要。

于 2012-10-07T18:10:53.897 回答
4

对于中的GUI脚本cron,请在 a 中尝试以下行shell

crontab -e

然后在crontab

0 7 * * * DISPLAY=:0 /PATH/TO/SCRIPT
于 2012-10-07T18:08:45.150 回答
2

假设您正在运行 X,您总是可以让它在选定的显示器上打开一个窗口。

于 2012-10-07T18:04:33.283 回答
1

如果您没有 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

通过在 tty 终端echo中获取执行响应。stdout但是从 crontab 中“没有 tty”并且发生崩溃并且 crontab 不执行应用程序。这是解决的nohup。更多信息:man nohup

于 2020-08-07T21:30:31.247 回答