デフォルトのBashスクリプト(GUIプログラムの起動に使用されます)はcronで部分的に機能します。

デフォルトのBashスクリプト(GUIプログラムの起動に使用されます)はcronで部分的に機能します。

このスクリプトを使用して、一晩Firefoxを再起動します(パッケージマネージャとプラグインのアップデートを適用)。

#!/bin/bash
killall -s SIGTERM firefox; sleep 15
firefox -P "user" &
firefox -P "default settings" &

crontab(午前3時に実行):

0 3 * * * /usr/local/bin/firefox.sh

手動で実行すると、スクリプトは期待どおりに機能します。つまり、Firefoxプロセスを閉じて、両方のプロファイルを独自のウィンドウで実行します。

cronがスクリプトを実行すると、Firefoxは常に閉じます。

ベストアンサー1

cronジョブは、一般的なGUIデスクトップまたはターミナル環境から分離された完全に独立した環境で実行されます。

firefoxデスクトップ環境の子プロセスとして実行するか、少なくとも有効なDISPLAY変数セットが必要です。

時にはcron操作を開始したり、GUIプログラムと対話することができます。export DISPLAY=:0.0スクリプトの2行目に追加してみてください。それでも機能しない場合は、:0.0デスクトップで端末を実行して実行してecho $DISPLAY正しい値を取得してください。

それでも問題が解決しない場合は、アクセスを有効にするように設定またはXAUTHORITY=$HOME/.Xauthority使用する必要がありますxauth

cron(firefoxを含む)で実行されるすべてのプログラムは、cronの最小限の環境を継承します。 PATH、LOGNAME、および/またはUSERなどの変数は予想と異なる可能性があり、多くの変数はまったく設定されません。たとえば、LC_*ロケール変数が設定されていない場合があります(配布版によっては - 例:cronを読む/etc/environmentとDebian /etc/default/locale. Fedoraにも当てはまるかどうかはわかりません)。プログラムが特定の環境変数を特定の値に設定する必要がある場合は、それをcrontabファイルまたはexportスクリプトで設定する必要があります。あるいは、sourceスクリプトで一般的に使用されるシェルの起動ファイルでもあります。

Firefox、Chromium、その他のWebブラウザでは、その他のプロキシ関連変数を設定する必要がありhttp_proxyますhttps_proxy


ssh -Xちなみに、GUIプログラムの実行が大まかに機能する方法は次のとおりです。この-XオプションはX11転送を有効にします。 SSH接続を介してプロキシXプロトコルのトンネルを設定し、DISPLAY変数がトンネルを指すように設定します。

たとえば、xsane私のサーバー(HP3030プリンタ/スキャナが接続されているホスト名「ganesh」)で実行していますが、私のワークステーションモニタにはウィンドウが表示されていますssh -X ganesh xsane

実行するにはssh -X ganesh 'echo $DISPLAY'(単一引用符が必要な場合、またはローカルシェルが変数を挿入しないようにエスケープする必要があります)、次の内容が表示されます。

$ ssh -X ganesh 'echo $DISPLAY'
ganesh:11.0

おすすめ記事