1

crontab を使用して X プログラム (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 でいろいろ試しましたが、うまくいきませんでした。ルートCrontabにアクセスできる場合、gnome/gdm3で動作する別の簡単な方法を見つけました:

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!

于 2012-07-02T07:20:25.003 に答える