崩溃后如何自动重启docky?

docky不时为我崩溃。 如何在崩溃后自动重启?

首先,我不使用docky。 但我假设docky在你的$ 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
  • 评论:无论你喜欢什么

确保选中新条目。 退回并进入,你会一直看到停靠。

这类似于进程监视器方法,使用until循环,但仅用于docky本身。

简单的脚本:

 until docky; do sleep 1 done 

然后,从启动应用程序中删除docky,只需添加sh [path to file],例如:

sh /usr/wegsehen/Scripts/docky.sh

我在下面写了一个小的“包装”脚本。 它会产生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 

./process_monitor.sh效果很好。

但是只有当我使用Terminal或者yakuake时……所以我可以打开一个新shell,当我使用“〜/ process_monitor.sh docky”或“/ bin / bash~ / process_monitor.sh docky”时

但是,如果我转到“启动应用程序”,请单击“添加”并按照这些说明在我的计算机启动时没有任何操作。 我仍然需要手动运行该命令。 当我输入/home/”username”/process_monitor.sh docky时,它赢得了工作。

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

而不是使用〜/ process_monitor.sh docky创建一个新的文本文件:

  • gedit~ / start.sh
  • 类型如下

#!/斌/庆典

〜/ process_monitor.sh docky

DONE

  • 保存存档
  • 设置权限:

chmod a + x~ / start.sh

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

〜/ start.sh

它将启动〜/ process_monitor.sh docky。 所以如果崩溃,它将获得startet并重新启动。

您可以为“process_monitor.sh”和“start.sh”选择任何您喜欢的名称.sh很重要。 但一定要在文本文件中更改它。

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

  • 删除其他Docky Startup设置
  • 创建一个新的
  • 名称:Docky或任何你想要命名的东西
  • 命令:/ home /“您的用户名”/start.sh(对于我来说,例如/home/kevin/startup.sh)
  • 评论:无论你喜欢什么。
  • 转到Docky设置并禁用“登录时启动”

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

VIDEOTUTORIAL