Docky stürzt von Zeit zu Zeit für mich ab. Wie kann ich es nach einem Absturz automatisch neu starten lassen?
Docky stürzt von Zeit zu Zeit für mich ab. Wie kann ich es nach einem Absturz automatisch neu starten lassen?
Antworten:
Zunächst einmal benutze ich Docky nicht. Aber ich gehe davon aus, dass Docky in Ihrem $ PATH ist. Wenn nicht, geben Sie den vollständigen Pfad zur Binärdatei an.
Hier ist die großartige Verwendung von Bash:
Beginnen Sie mit einer Datei wie (vim anstelle von gedit, wenn Sie möchten):
gedit ~/process_monitor.sh
Geben Sie Folgendes ein:
#!/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
Speicher die Datei.
Legen Sie die Berechtigung fest:
chmod a+x ~/process_monitor.sh
Jetzt können Sie ein Programm wie folgt ausführen:
~/process_monitor.sh docky
Das Programm wird einmal gestartet, und Sie müssen das Programm neu starten, wenn Sie es jemals beenden oder abstürzen möchten.
Gehen Sie folgendermaßen vor, um dem Systemstart einen Eintrag hinzuzufügen, damit das Programm nach dem Anmelden gestartet wird und erst nach dem Beenden angehalten wird:
/bin/bash ~/process_monitor.sh docky
Stellen Sie sicher, dass der neue Eintrag aktiviert ist. Melden Sie sich wieder ab und an und Sie sehen die ganze Zeit Docky.
/bin/bash ~/process_monitor.sh docky
Startanwendungen hinzugefügt , aber es passiert nichts. Eigentlich sehe ich nach dem Anmelden für eine Sekunde ein halbes Terminalfenster auf dem Bildschirm blinken, aber das ist alles. Das Skript wird nicht aktiviert, selbst wenn ich diesen Befehl zu den Startanwendungen hinzugefügt habe. Was sollte ich tun?
Dies ähnelt der Prozessüberwachungsmethode, bei der eine till-Schleife verwendet wird, jedoch nur zum Andocken.
Einfaches Skript:
until docky; do
sleep 1
done
Entfernen Sie dann Docky aus Ihren Startanwendungen und fügen Sie einfach sh [Pfad zur Datei] hinzu, z.
sh /usr/wegsehen/Scripts/docky.sh
Ich habe unten ein kleines "Wrapper" -Skript geschrieben. Es wird Docky erscheinen und es überwachen. Spawn dies alleine ohne Docky in den Startup Applications.
#!/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
Die ./process_monitor.sh funktioniert hervorragend.
Aber nur, wenn ich Terminal oder Yakuake benutze ... also kann ich einfach eine neue Shell öffnen, wenn ich "~ / process_monitor.sh docky" oder "/ bin / bash ~ / process_monitor.sh docky" verwende.
Wenn ich jedoch zu "Startanwendungen" gehe, klicken Sie auf "Hinzufügen" und befolgen Sie diese Anweisungen. Beim Starten meines Computers geschieht nichts. Ich muss diesen Befehl noch manuell ausführen. Und es hat Arbeit gewonnen, als ich /home/"username"/process_monitor.sh Docky auch eingegeben habe.
Ich habe eine Lösung gefunden oder erstellt (die nicht irgendwo veröffentlicht wurde), um sie automatisch zu starten.
Anstatt das Docky ~ / process_monitor.sh zu verwenden, erstellen Sie eine neue Textdatei:
#! / bin / bash
~ / process_monitor.sh Docky
getan
chmod a + x ~ / start.sh
Jetzt können Sie das Programm in Ihrem Terminal / Yakuake ausführen oder was auch immer Sie bevorzugen:
~ / start.sh
und es wird die Docky-Datei ~ / process_monitor.sh gestartet. Es wird also gestartet und neu gestartet, wenn es abstürzt.
Sie können einen beliebigen Namen für "process_monitor.sh" und "start.sh" auswählen. Nur .sh ist wichtig. Aber stellen Sie sicher, dass Sie es auch in Ihren Textdateien ändern.
Gehen Sie nun zu Ihrem Dash, geben Sie "Startup Applications" ein und öffnen Sie es.
Jetzt können Sie Ihren Computer neu starten und testen.
process_monitor.sh
? Keine Dateibearbeitung oder Berechtigungsänderungen erforderlich.