Cron 和交互式应用程序

Cron 和交互式应用程序

我想在 cron 中安排一个 GUI 应用程序,但有一个问题。当 cron 尝试运行计划任务(在我的情况下是 amarok)时,它会抛出cannot connect to X server错误。我认为这是因为该应用程序是从我的 root 帐户执行的。是否可以从 root 运行应用程序但假装是其他人?

谢谢。

答案1

Cronjobs 在非常受限的环境中运行,这意味着它不知道在哪里找到 X 服务器($DISPLAY环境变量不存在)。

如果您想从 crontab 执行 X 应用程序,您需要首先设置$DISPLAY环境变量。

要么调用 AmaroK说,或者为整个 cron 脚本设置它:

DISPLAY=:0.0
# ...
* * * * * amarok

另外,我建议您以您“想要成为”的帐户而不是 root 帐户来运行它,这是通过以crontab -e用户身份运行来完成的。

编辑:

您还可以这样做:

* * * * * export DISPLAY=:0.0 && amarok

答案2

我认为这不是一个好主意,不过你可以以 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

根据您使用的命令的位置,您可能需要添加它们的完整路径。

相关内容