我想安排一个GUI应用程序,但有一个问题。 当cron试图运行计划任务(在我的情况下,amarok)它抛出cannot connect to X server错误。 我认为这是因为应用程序是从我的root帐户执行的。 是否有可能从根运行应用程序,但假装是别人?
谢谢。
Cronjobs运行在一个非常有限的环境中,这意味着它不知道在哪里findX服务器( $DISPLAY环境variables不存在)。
如果你想从crontab执行一个X应用程序,你需要先设置$DISPLAY环境variables。
或者像pQd那样调用AmaroK,或者将其设置为整个cron脚本:
DISPLAY=:0.0 # ... * * * * * amarok
另外,我build议你运行这个作为你想“成为”的帐户,而不是root,这是通过运行crontab -e作为用户来完成的。
编辑:
你也应该可以这样做:
* * * * * export DISPLAY=:0.0 && amarok
我认为这是个坏主意,但是你可以以root身份执行:
su -c 'export DISPLAY=":0.0"; amarok' username
我假设x会话正在运行,你有用户名 。
但是…你可以以非root的身份从cron脚本运行 – 那么为什么你要坚持以root身份来调用呢? 还有很多命令行 控制的 媒体播放器 – 也许你不需要amarok?
以非root用户身份运行脚本放在/ etc / crontab中
25 6 * * * username /script/you/want/to/execute.sh
取决于您将使用的命令的位置,您可能需要为其添加完整path。