Udev:シェルスクリプトを実行してXディスプレイにアクセスする

Udev:シェルスクリプトを実行してXディスプレイにアクセスする

3gモデムをインストールして実行しながら、Arch Linuxプロセスに必要ないくつかの手作業を排除したいと思います。したがって、udevルールを作成する必要があります。いくつかの試行錯誤の後、私は次の規則を思い出し、11-my-rule.rulesそれらを配置しました/etc/udev/rules.d/

# start at sdb to ignore the system hard drive
KERNEL!="sd[b-z]*", GOTO="my_media_automount_end"

# run the script and create a testdir to verify the rule works
ACTION=="add", RUN+="/myscript.sh", RUN+="/bin/mkdir -p '/media/pendrive'"

#remove the testfolder on removal of usb
ACTION=="remove", RUN+="/bin/rm -R '/media/pendrive'"

# exit
LABEL="my_media_automount_end"

私が実行したいテストスクリプトは次のとおりです。

#!/bin/bash

DISPLAY=:0 xterm

xterminalを表示します。スクリプト自体をテストしましたが、うまくいきます。二つ目がありますランニング+テストディレクトリを作成することも可能です。だから私は何が間違っているのかわかりません。

答え1

@EightBitTonyはおそらく正しいでしょう。 udev ルールは root ユーザーとして実行されます。したがって、を指定することに加えて、DISPLAYこのrootユーザーにXセッションへのアクセスを許可する必要があります。

適切な権限ファイルを見つけますXAUTHORITYecho $XAUTHORITY

ディスプレイマネージャを使用すると、ログインするたびに場所が変わることがあります。または電話でお問い合わせください。xhost +xセッション内の他のすべてのユーザーにこのセッションへのアクセスを許可します。xhost -もう一度閉じます。これにより、リモートユーザーはTCPポートを使用してセッションにアクセスできます。

関連情報