cronを使用して夜間モードを作成する方法

cronを使用して夜間モードを作成する方法

私はIris Miniを使って夜にブルーライトをフィルタリングするのにとてもうまくいきますが、手動で行う必要があるのは面倒です。それでcronを使って毎晩8時に始めようとしました。

crontab -e を実行するために作成した内容です。このコマンドは端末で実行すると動作します。

予約されたこと

0 20 * * * sh /home/jogarcia/Software/open-iris-mini.sh

iris-mini.shを開く

#!/bin/bash

export DISPLAY=0:.
/home/jogarcia/Software/iris-mini

xhost +localhost また、(クローンタブの前に)テストを実行しました。

ログを検索してみると、grep CRON /var/log/syslogこれが実際に実行されたことを示す次の行が見つかりました。

企画日誌

Nov  2 20:00:01 my-computer-is-name CRON[8391]: (user) CMD (sh /home/jogarcia/Software/open-iris-mini.sh)

ところで、画面で結果を見ることができず(オレンジ色で表示する必要があります)、うまくいかず、本当に困惑していて、私が間違っているかどうかはわかりません。

エラーを確認するためにメールサービスをインストールしました。

ローカルメールエラー

QXcbConnection: Could not connect to display 0:.

答え1

秘密(@で指摘したとおり)ウォルトナーDISPLAYを正しく設定してください。

おそらくそうです。DISPLAY=:0

形式は通常ホスト名:ディスプレイ番号で、ホスト名はオプションです。

2番目の問題はディスプレイセキュリティです。ルートのcrontabの代わりに自分のcrontabにcronjobを配置する場合はxhost必要ありませんxauth。 OPは(おそらく)crontab -easを使って自分でこれを正しく行いました。 (セキュリティを確保する$HOMEには、これが正しい必要がありますxauth。これはあなたのcrontabに入れることの一部です。)

もう一つのヒントは、エラーメッセージを受け取る可能性がある電子メールシステムをインストールすることです。

OPが「cronジョブをディスプレイに接続できません」と報告した場合(電子メールシステムのインストール後)、これはDISPLAYが正しくないか、ディスプレイセキュリティに問題があることを意味する可能性があります(xauthおよびxhost)。これを行うには、コマンドウィンドウでスクリプトを実行することをお勧めします。次のように実行してみてくださいenv -uDISPLAY /home/jose/Software/open-iris-mini.sh(ファイルを実行できないと表示された場合は使用してくださいchmod +x)。

(OPのリクエストに応じて回答が追加されました。)

答え2

cronジョブがGUIコンテキスト(カラーコントロールが「合理的」の場合)ではなく、独自のコンテキストで実行されるため、失敗します。

動作させるには2つのステップがあります。

スクリプト内の環境変数DISPLAY(Xサーバーへのポインタとして使用される)の定義を追加します。それはまるで

export DISPLAY=0:.

ただし、echo "$DISPLAY"GUIコンテキストを確認してください。

GUI起動時(おそらく$HOME/.config/autostart

xhost +localhost

ホストからの接続を受け入れるlocalhostようにlocalhostX サーバーに指示します。 GUIにログインするたびにこれを行う必要があります。

読むman xhost X

答え3

これは私よりも先に答えた人の答えを使って私に正確に効果がありました。

crontab -eクローン作業の場合

[email protected]
0 20 * * * sh /home/jogarcia/Software/open-iris-mini.sh

次に、shファイルで次の操作を行います。

#!/bin/bash

DISPLAY=:0 /home/jogarcia/Software/iris-mini

期待どおりに動作することを確認するために、次のコマンドを使用しました。

env -uDISPLAY /home/jogarcia/Software/open-iris-mini.sh 

cronログを表示するためにpostfixをsudo apt-get install postfixすべてローカルにインストールしました。

関連情報