日本の衛星のサーバーから写真をダウンロードし、背景画像として設定する.shスクリプトがあります。スタートアップリストに入れましたが、5分ごとに自動的に実行するにはどうすればよいですか?
If簡単な方法が必要であり、設定する環境変数を見つける必要がないようにします。
スタートアップアプリケーションに次を追加します。
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
ダッシュ>スタートアップアプリケーション>追加。コマンドを追加します。
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
独自の環境(たとえば、ターミナルウィンドウまたはスタートアップアプリケーション)からスクリプトを実行すると、多くの環境変数が設定されます。 cron
ただし、限られた環境変数セットでスクリプトを実行します。
スクリプトは間違いなくgsettings
コマンドを使用しているため、
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
壁紙を設定するには、cron
から実行するとほぼ確実にコマンドが中断します。
「怠zyな解決策」の欠点は純粋に理論的なものです。実質的に継続的にスリープするコマンドは、システムに対してnothingを意味します。
この投稿 を読んで、過去の経験から、DBUS_SESSION_BUS_ADDRESS
環境変数を設定する必要があると確信しています。
これを行うには、スクリプトの先頭に次のセクションを追加します(Shebangの下)。
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
その後、cron
から正常に実行できるはずです。
ただし、ハッスルを非常にうまく保存し、遅延オプションを選択できます。
crontab
に入れてください。
cron
テーブルを開くには:
crontab -e
追加します:
*/5 * * * * /path/to/script.sh
事前にスクリプトを実行可能にすることを忘れないでください。
スクリプトはXに依存しているため、おそらくスクリプト環境にDISPLAY
を追加することをお勧めします。
*/5 * * * * DISPLAY=:0 /path/to/script.sh
:0
を実際のDISPLAY
に置き換えます(インタラクティブセッションのecho $DISPLAY
で見つけることができます)。
必要に応じて、XAUTHORITY
環境変数も追加できます。
*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh
ここでも、echo $XAUTHORITY
で値を見つけることができます。