crontab(Firefox)でX11アプリケーションを実行する

crontab(Firefox)でX11アプリケーションを実行する

私は毎分Firefoxを開くcrontabを作成したいと思います(単にテストするには意味がないことを知っています)。私の問題は、crontabがアクティブになっても何も起こらないということです。私のcrontabは次のようになります。

SHELL=/bin/bash
PATH=~/bin:/usr/bin:bin
* * * * * export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

なぜ動作しないのかご存知ですか?

ベストアンサー1

export DISPLAY=:0.0 xhost localuser /usr/bin/firefox

上記のcronコマンドだけを見ると、なぜ機能しないのかがわかります。このコマンドの使い方export

export name[=word]...

POSIXシェルの後に続く残りの単語は、export DISPLAY=:0.0実行するコマンドではなく、環境にエクスポートする必要がある追加のシェル変数として扱われます。 POSIX(2018年7号)でも次のように規定しています。名前しなければならない

下線、数字、移植可能な文字セットの文字のみからなる単語です。

つまり、シェル変数名には同じ文字を含めることができないため、エクスポートする変数名のリストにその文字を/含めようとすると、またはなどのメッセージでエラーが発生します。/usr/bin/firefoxnot a valid identifierbad variable name


また、xhostコマンドが誤って使用されています。これを直接実行して、xhostユーザーアカウントを許可されたユーザーとして追加する必要があることを確認してください。このタスクは一度だけ実行する必要があり、cronとしてスケジュールしないでください。


プログラムがXディスプレイサーバーに接続するのを防ぐ他のメカニズムがない限り、上記の行は次のように単純に置き換えることができます。

DISPLAY=:0.0
* * * * * /usr/bin/firefox

毎分新しいFirefoxウィンドウが起動します。SHELL環境変数も指定する必要はありません。実行可能ファイルのフルパスを指定したので、その変数firefoxも設定する必要はありませんPATH


また見なさい:POSIX仕様export

おすすめ記事