通过 @reboot cron 作业运行 `screen`

Jrc*_*Jrc 4 cron gnu-screen

我想在启动时在屏幕上运行一个脚本。

这不起作用:

@reboot pi screen -d -m /home/pi/db_update.py
Run Code Online (Sandbox Code Playgroud)

但是在用户 pi 工作时手动运行它:

screen -d -m /home/pi/db_update.py
Run Code Online (Sandbox Code Playgroud)

知道我缺少什么吗?

Ant*_*hon 7

而不是添加@reboot pi .../etc/crontab您应该crontab -e以用户身份运行pi并添加:

@reboot /usr/bin/screen -d -m /home/pi/db_update.py
Run Code Online (Sandbox Code Playgroud)

确保使用完整路径进行筛选(只是为了确保,没有它也可以工作),并且 /home/pi 不在加密文件系统上(去过那里,做过)。该命令不能依赖于任何可能只能在cron守护程序启动或用户登录。

您可能想要添加一些内容db_update.py(写入文件/var/tmp以查看它实际运行,或者在 python 程序末尾放置 time.sleep(600) 以留出足够的时间登录和连接。


在 Lubuntu 13.04、python 2.7.4 上使用以下条目进行测试:

@reboot screen -d -m /home/anthon/countdown.py
Run Code Online (Sandbox Code Playgroud)

countdown.py

#!/usr/bin/env python
import time
for x in range(600,0,-1):
    print x
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

(和chmod 755 countdown.py