web-dev-qa-db-ja.com

起動時にこのスクリプトが実行されないのはなぜですか?

このスクリプトは、手動で起動すると完全に機能します。起動時に実行するにはどうすればよいですか?スクリプトの機能は、クラッシュの場合にDockyを取得して自動再起動することです。

次のようなスクリプトを作成しました。

  • gedit ~/process_monitor.sh

以下に貼り付けます( Ask Ubuntuで見つけました ):

#!/bin/bash

if [[ -z "$1" ]];then
    echo "ERROR: must specify program"
    exit 1
fi

while (( 0 == 0 ));do
    $@ &
    pid=`jobs -l | awk '{print $2}'`
    wait $pid
done
  • ファイルを保存しました。

  • 許可を設定します。

    chmod a+x ~/process_monitor.sh
    

今、このように実行すると、完全に機能します:

~/process_monitor.sh docky

ただし、起動アプリケーションに次を追加しても、起動時にスクリプトが起動しません。そうかもしれませんが、スクリプトは機能しません。

/bin/bash ~/process_monitor.sh docky

enter image description here

基本的には、画面上で0.5秒間点滅するグラフィカル要素がありますが、スクリプトの他の兆候は見られず、Dockyは殺されても再起動しません。

これを機能させる方法は?非常に基本的なものだと思います。

Ubuntu 14.04を使用しています。

5
Revetahw

.desktopファイルでパスを使用する

問題は、スタートアップアプリケーションが.desktopファイルを~/.config/autostartに作成することです

.desktopファイルでは、~のような相対パスまたは変数パスを使用できません。代わりに絶対パスを使用します。

/bin/bash /absolute/path/to/process_monitor.sh docky
10
Jacob Vlijm

これはより良いアプローチです

crontab -eを実行し、この行を一番下に挿入します

*/2 * * * * if [ ! `pgrep docky` ] ; then /usr/bin/docky; fi

/usr/bin/dockyコマンドがdockyを起動するかどうかを確認します、それだけです。これにより、2分ごとにdockyが実行されているかどうかが確認され、実行されていない場合はdockyが開始されます。

0
MRX