1

我正在尝试使用 crontab 启动 X-Programm(例如 gedit 或 Firefox)。我已经搜索了很长时间,论坛上到处都是帮助,不幸的是,没有什么对我有用。

我正在尝试的是,通过 Crontab 启动 X-Programm。出于测试目的,我做了以下工作:

我的“/etc/crontab”中的条目(我的用户帐户是 mrs,我已登录):

* * * * * mrs /bin/bash /tmp/test.sh

猫/tmp/test.sh:

#!/bin/bash
DISPLAY=":0.0"
gedit 1> /tmp/out 2>/tmp/err

猫/tmp/错误:

No protocol specified
(gedit:3456): Gtk-WARNING **: cannot open display: :0.0

/tmp/out 是空的!

4

1 回答 1

1

我找到了解决方案!问题是,我没有 XAUTHORITY。所以我必须得到一个有效的 XAUTHENTICATION。我用 xhost 和 xauth 尝试了很多,但没有帮助。现在我发现了另一种与 gnome/gdm3 一起使用的简单方法,如果您可以访问根 Crontab:

export DISPLAY=":0.0"
[ -z $USER ] && USER=$( who | awk '{ print $1 }' | sort | uniq >/tmp/test )
for I in /var/run/gdm3/*; do
    AUTHUSER="`echo $I | awk -F '-' '{ print $3 }'`"
    for J in $USER; do
        [ "${AUTHUSER}" = "${J}" ] || continue
        USER="$J"
        export XAUTHORITY="${I}/database" && break
    done
done
sudo -u ${USER} /Pfad/zum/xProgramm

模具变量 $USER kann man vorher belegen, andernfalls wird sie mit mindestens einem bereits eingeloggten 用户 beschrieben。Vorraussetzung ist allerdings, dass ein User am System auch angelmeldet ist.

Ich habe dies getestet, und es klappt problemlos!

于 2012-07-02T07:20:25.003 回答