`at`がGUIアプリケーションを実行しないのはなぜですか?

`at`がGUIアプリケーションを実行しないのはなぜですか?

gedit私はUbuntu 20デスクトップでこれから実行する予定ですが、何も起こりません。なぜそんなことですか?

$ echo "echo foo > at.sux" | at now + 1
warning: commands will be executed using /bin/sh
job 8 at Tue Jun  2 21:47:00 2020

$ echo `which gedit` | at now + 1
warning: commands will be executed using /bin/sh
job 9 at Tue Jun  2 21:47:00 2020

$ atq
9   Tue Jun  2 21:47:00 2020 a dandv
8   Tue Jun  2 21:47:00 2020 a dandv

# A minute later

$ cat at.sux
foo

$ ps auxf | grep gedit  # nothing but grep

$ `which gedit`  # launches gedit

echo "gedit &" | at now + 1コメントに示されているとおりに試しましたが、1gedit分後でもまだ実行されません。

ベストアンサー1

GUIアプリケーションはサーバーを介して画面にアクセスします。環境は、アプリケーションをコマンドラインまたはメニューから実行するときにサーバーに接続する方法を示します。

ただし、コマンドを実行すると、at環境にその情報が含まれないため(at -c JOBNUMBERアプリケーションが継承している環境を見ることができます)、アプリケーションは起動されますが実行されません。

GUIアプリケーションを実行するには、サーバーを指定するか、以下を使用してアプリケーションを呼び出すことができます(表示は異なる場合があります)。

DISPLAY=:0 application

または、アプリケーションによっては次のようになります。

application --display :0

サーバーの権限を変更する必要がある場合や、セッションの外部からアクセスできない他のサービス(例:dbus)が必要な場合があります。

おすすめ記事