×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

サイトトップまとめドキュメントGUI環境ディスプレイマネージャ(グラフィカルなログイン画面プログラム) ≫ GDMからログインしたときにcronからXアプリケーションが起動できない場合の対処

GDMからログインしたときにcronからXアプリケーションが起動できない場合の対処

GDM以外からログインしている場合には環境変数DISPLAYを実行時に設定することでプログラムは起動するが、GDMの場合はこれだけでは不十分で、以下にまとめるような対処が必要となる。

GDMからログインしたときの挙動

  • Xの認証には[ホームディレクトリ]/.Xauthorityは使用されない

  • 代わりに環境変数XAUTHORITYで指定した場所のファイル/var/run/gdm/auth-for-[ユーザ名]-[ランダム文字列]/databaseが用いられる

  • /var/run/gdm/以下の一覧は一般ユーザには取得できない

  • 以上から、GDMからログインした場合にはcronからXアプリケーションを起動することは難しい

対処

  • グラフィカルログイン時の自動起動スクリプトの中でDISPLAYXAUTHORITYの2つの環境変数の値をファイルに書き出す

  • cronで実行する際にそのファイルの内容を参照して環境変数をXアプリケーションの実行時に設定する

例90 GDMからログインしたときにnotify-sendをcronから動かせるようにするための自動ログイン時のスクリプト内の記述

env | egrep "^(DISPLAY|XAUTHORITY)=" | while read l; do
  echo "export ${l}"
done >| ~/auth.sh
chmod 600 ~/auth.sh

例91 GDMからログインしたときにnotify-sendをcronから動かす際のcrontab

[分] [時] [日] [月] [曜日] sh -c '. ~/auth.sh; notify-send [タイトル] [本文]'

例92 GDMからログインしたときにnotify-sendをcronから動かす際、crontab内でスクリプトの形で実行する場合の内容例

#! /bin/sh
. ~/auth.sh
notify-send [タイトル] [本文]

関連セクション