在 Debian 6.0.4 上使用 /etc/crontab 启动 X 程序



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

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

在我的"/etc/crontab"中输入(我的用户帐户是mrs,我已登录):

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

cat/tmp/test.sh:

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

cat/tmp/err:

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

tmp/out 是空的!

我已经找到了解决方案!问题是,我没有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

Die Variable $USER kann man vorher belegen, andernfalls wird sie mit mindestens einem bereits eingeloggten User beschrieben.Vorraussetzung ist allerdings, dass ein User am System auch angemeldet ist.

Ich habe dies getestet, und es klappt problemlos!

最新更新