我试图添加一个新的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键。
答案 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
等,但原理是一样的。