发生崩溃后如何自动重新启动ocky?


Answers:


10

首先,我不使用ocky。但我假设ocky在您的$ PATH中。如果不是,则指定二进制文件的完整路径。

这是Bash的出色用法:

从一个文件开始,例如(如果需要,用vim代替gedit):

  • 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

它将立即启动该程序,并确保在您选择退出或选择崩溃时重新启动该程序。

要将条目添加到系统启动中,以便在您登录后启动程序,直到退出后才会停止,请执行以下操作:

  • 转到Unity Dash,键入并查找“启动应用程序”
  • 点击添加
  • 名称:Docky或您喜欢的任何东西
  • 命令: /bin/bash ~/process_monitor.sh docky
  • 评论:随你喜欢

确保已选中新条目。注销并重新登录,您会一直看到对接。


如果我正在运行Gnome 3,但是没有“启动应用程序”,而我想将其放在.desktop文件中怎么办?我应该为“ Exec =“行添加什么?
guttermonk 2015年

得到它了!:)“ Terminal = False”和“ Exec = nohup bash -c'〜/ process_monitor.sh docky; $ SHELL'&”
guttermonk 2015年

谢谢!我还将它用于Dropbox和Synergy。很棒!
guttermonk

当我手动运行该脚本时,它的效果很好,但是我已将其添加/bin/bash ~/process_monitor.sh docky到启动应用程序中,但是什么也没有发生。实际上,我确实在登录后看到一半的终端窗口在屏幕上闪烁了一秒钟,仅此而已。即使我将该命令添加到启动应用程序中,该脚本也不会启动。我该怎么办?
雷维塔夫(Revetahw)说恢复莫妮卡(Monica)

@guttermonk您可以在上面的评论中对我的查询提供任何帮助吗?我也将其作为一个单独的问题发布了:askubuntu.com/questions/751465/…–雷维塔夫
Revetahw)说,请恢复莫妮卡(Monica)

1

这类似于过程监视器方法,使用直到循环,但仅用于对接本身。

简单脚本:

until docky; do
  sleep 1
done

然后,从启动应用程序中删除ocky,仅添加sh [文件路径],例如:

sh /usr/wegsehen/Scripts/docky.sh


0

我写了一个小的“包装”脚本。它将产生对接并对其进行监视。在启动应用程序中单独生成此文件而不会停顿。

#!/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很好用。

但是只有当我使用Terminal或yakuake时,...当我使用“〜/ process_monitor.sh docky”或“ / bin / bash〜/ process_monitor.shocky”时,我才可以打开新的外壳

但是,如果我转到“启动应用程序”,请单击“添加”,然后按照以下说明进行操作,则在我的计算机启动时什么也不会发生。我仍然必须手动运行该命令。当我把/ home /“用户名” /process_monitor.sh放进去时,它也能工作。

我发现或创建了一个解决方案(尚未发布在某处)以使其自动启动。

代替使用〜/ process_monitor.shocky创建一个新的文本文件:

  • gedit〜/ start.sh
  • 输入以下

#!/ bin / bash

〜/ process_monitor.sh码头

做完了

  • 保存存档
  • 设置权限:

chmod a + x〜/ start.sh

现在,您可以在终端/ yakuake或您喜欢使用的任何程序中运行该程序:

〜/ start.sh

它将启动〜/ process_monitor.sh扩展坞。因此,它将崩溃并在崩溃时重新启动。

您只能为“ process_monitor.sh”和“ start.sh”选择任何名称。.sh很重要。但也请确保在文本文件中也进行更改。

现在转到Dash,键入并打开“启动应用程序”。

  • 删除其他Docky启动设置
  • 创建一个新的
  • 名称:Docky或任何您想命名的名称
  • 命令:/ home /“您的用户名” /start.sh(对于我来说,例如/home/kevin/startup.sh)
  • 评论:随便你。
  • 转到Docky设置并禁用“从登录开始”

现在,您可以重新启动计算机并进行测试。

录像教程


为什么不创建一个(符号)链接到process_monitor.sh?无需文件编辑或权限更改。
David Foerster,2014年

您对符号链接是什么意思?
凯文(Kevin)

ln -s process_monitor.sh start.shln -s ~/process_monitor.sh ~/Desktop/
David Foerster,2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.