web-dev-qa-db-ja.com

5分ごとに.shを実行する

日本の衛星のサーバーから写真をダウンロードし、背景画像として設定する.shスクリプトがあります。スタートアップリストに入れましたが、5分ごとに自動的に実行するにはどうすればよいですか?

11

遅延オプション

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から正常に実行できるはずです。

ただし、ハッスルを非常にうまく保存し、遅延オプションを選択できます。

14
Jacob Vlijm

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で値を見つけることができます。

23
heemayl