クラッシュ後にdockyを自動的に再起動するにはどうすればよいですか?


9

dockyは時々クラッシュします。クラッシュ後に自動的に再起動するにはどうすればよいですか?


スーパーユーザーで同様の質問に回答した人が投稿したこのスクリプトを適応できる場合があります

回答:


10

まず、私はdockyを使用していません。しかし、私はdockyが$ PATHにあると想定しています。そうでない場合は、バイナリの完全パスを指定します。

Bashのすばらしい使い方は次のとおりです。

(必要に応じて、geditの代わりにvim)などのファイルから始めます。

  • gedit ~/process_monitor.sh
  • 次のように入力します。

    #!/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

プログラムを1回起動します。プログラムの終了を選択した場合、またはプログラムがクラッシュした場合は、必ずプログラムを再起動してください。

システムの起動にエントリを追加して、ログイン後にプログラムを起動し、終了するまで停止しないようにするには、次のようにします。

  • Unity Dashに移動し、「スタートアップアプリケーション」と入力して探します。
  • 追加をクリックします
  • 名前:Dockyまたは好きなもの
  • コマンド: /bin/bash ~/process_monitor.sh docky
  • コメント:何でも好きです

新しいエントリがチェックされていることを確認します。ログアウトしてログインすると、常にdockyが表示されます。


Gnome 3を実行していて、「スタートアップアプリケーション」がなく、代わりに.desktopファイルに配置したい場合はどうなりますか?"Exec ="行には何を入れますか?
guttermonk 2015年

とった!:) "Terminal = False"および "Exec = nohup bash -c '〜/ process_monitor.sh
docky

ありがとう!これはDropboxとSynergyにも使用します。よく働く!
guttermonk 2015年

スクリプトを手動で実行すると、スクリプトは/bin/bash ~/process_monitor.sh docky適切に機能しますが、スタートアップアプリケーションに追加しましたが、何も起こりません。実際、ログイン後、端末ウィンドウの半分が画面に1秒間点滅しますが、それだけです。起動アプリケーションにそのコマンドを追加しても、スクリプトは起動しません。私は何をすべきか?
Revetahwは、モニカを2016

@guttermonk上記のコメントで私の質問に何か助けを提供できますか?私はこれも別の質問としてこれを投稿しました:askubuntu.com/questions/751465/…–
Revetahwはモニカを

1

これは、untilループを使用するプロセスモニターメソッドに似ていますが、Docker自体にのみ使用されます。

簡単なスクリプト:

until docky; do
  sleep 1
done

次に、起動アプリケーションからdockyを削除し、次のようにsh [ファイルへのパス]を追加します。

sh /usr/wegsehen/Scripts/docky.sh


0

以下の小さな「ラッパー」スクリプトを書きました。dockyを生成して監視します。スタートアップアプリケーションでドッキングすることなく、これだけで起動します。

#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: 1047481448@qq.com 
# Date: March 31st, 2016
# Purpose: monitor script that respawns docky if it dies
# Written for: http://askubuntu.com/q/752478/295286
# Tested on: Ubuntu 14.04 LTS
###########################################################
# Copyright: Serg Kolo , 2016
#    
#     Permission to use, copy, modify, and distribute this software is hereby granted
#     without fee, provided that  the copyright notice above and this permission statement
#     appear in all copies.
#
#     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
#     THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
#     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
#     DEALINGS IN THE SOFTWARE.

ARGV0="$0"
ARGC=$#

monitor_pid ()
{
  if ps -p $1 > /dev/null ;
  then
    # Docky is there, no-op
    sleep 0.25
    continue
  else
    # Docky is gone,ask user if they want it back
    DOCKY_PID=$(ask_restart)
  fi
}

spawn_docky()
{
  docky &> /dev/null  &
  echo $! # return docky pid
}

ask_restart ()
{
   zenity --question --title="Docky Monitor"\
          --text="Docky has quit, do you want to restart it ?" > /dev/null
   if [ $? -eq 0  ] ;then
        spawn_docky
   else
       kill -SIGTERM $MYPID # exit the script 
   fi        
}

main()
{
  local MYPID=$$
  local DOCKY_PID=$(spawn_docky)
  while true;
  do
     monitor_pid $DOCKY_PID
  done
}

main

-1

./process_monitor.shは適切に機能します。

ただし、ターミナルまたはyakuakeを使用している場合に限り、「〜/ process_monitor.sh docky」または「/ bin / bash〜/ process_monitor.sh docky」を使用すると、新しいシェルを開くことができます。

しかし、[スタートアップアプリケーション]に移動した場合、[追加]をクリックして、これらの指示に従いますが、コンピューターの起動時に何も起こりません。そのコマンドを手動で実行する必要があります。そして、私が/home/"username"/process_monitor.sh dockyに置いたときも、うまくいきました。

自動起動するためのソリューション(どこにも投稿されていない)を見つけた、または作成した。

〜/ process_monitor.sh dockyを使用する代わりに、新しいテキストファイルを作成します:

  • gedit〜/ start.sh
  • 次を入力

#!/ bin / bash

〜/ process_monitor.sh docky

終わった

  • ファイルを保存
  • 権限を設定:

chmod a + x〜/ start.sh

これで、ターミナル/ yakuakeまたは使用したいものでプログラムを実行できます。

〜/ start.sh

〜/ process_monitor.sh dockyを開始します。したがって、クラッシュするとstartetを取得して再起動します。

「process_monitor.sh」および「start.sh」には任意の名前を選択できます。.shのみが重要です。ただし、テキストファイルでも必ず変更してください。

ダッシュに移動し、「スタートアップアプリケーション」を入力して開きます。

  • 設定済みのDockyスタートアップ設定を削除する
  • 新しいものを作成する
  • 名前:Dockyまたは名前を付けたいもの
  • コマンド:/ home / "your username" /start.sh(私にとっては/home/kevin/startup.sh)
  • コメント:何でも好きです。
  • Docky設定に移動し、「ログイン時に開始」を無効にします

これでコンピュータを再起動してテストできます。

ビデオチュートリアル


への(シンボリックな)リンクを作成しないのはなぜprocess_monitor.shですか?ファイルの編集や権限の変更は必要ありません。
David Foerster、2014年

シンボリックリンクとはどういう意味ですか?
ケビン

これln -s process_monitor.sh start.shまたはln -s ~/process_monitor.sh ~/Desktop/
David Foerster 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.