运行屏幕并命令crontab

时间:2015-05-15 18:45:27

标签: linux cron gnu-screen

我试图添加一个新的crontab,打开一个屏幕窗口并在此窗口中执行php命令。

我正在尝试:

sudo crontab -e
10 0 * * * * screen -d -m php /var/www/script.php

这不会创建一个屏幕,但是,如果我在-m之后删除,则会创建正常的。 此代码返回我必须在终端上运行

10 0 * * * * screen -d

我该怎么做? 它有可能吗?

感谢。

修改

想通了。我必须做的是将一些命令发送到附加屏幕,如下所示:

screen -S sessionname -X stuff 'command'`echo -ne '\015'`

echo -ne '\015'模拟按Enter键。

这里提到了:https://superuser.com/a/274071

1 个答案:

答案 0 :(得分:1)

How do I use crontab to start a screen session?

中提出了类似的问题

在cron中,您没有终端(例如参见 Linux: Difference between /dev/console , /dev/tty and /dev/tty0 )。屏幕想要在终端中运行。在这种情况下运行它需要特殊处理。

根据其documentation-d-m选项的组合将被特别处理:

  

<强> -d -m

     

以“分离”模式启动屏幕。这会创建一个新会话但​​是   不附加它。这对系统启动很有用   脚本。

在您的示例中,

php /var/www/script.php

是要运行的命令。它可能依赖于环境变量来使其正常运行(例如特定的PATH)。另一个问题中接受的答案显示了如何获取shell初始化(.profile),例如,设置环境。你的shell可能会使用.bash_profile等,但原理是一样的。