崩溃后如何自动重启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