docky se bloque de temps en temps pour moi. Comment puis-je le faire redémarrer automatiquement après un crash?
Tout d'abord, je n'utilise pas docky. Mais je suppose que docky est dans votre $ PATH. Sinon, spécifiez le chemin d'accès complet au binaire.
Voici l'utilisation géniale de Bash:
Commencez avec un fichier, tel que (vim au lieu de gedit si vous voulez):
gedit ~/process_monitor.sh
Tapez ce qui suit:
#!/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
Enregistrez le fichier.
Définir la permission:
chmod a+x ~/process_monitor.sh
Maintenant, vous pouvez exécuter un programme comme ceci:
~/process_monitor.sh docky
et il lancera le programme une fois, et assurez-vous de le redémarrer si vous choisissez de le quitter ou de choisir de planter.
Pour ajouter une entrée au démarrage du système afin qu'il lance le programme une fois que vous êtes connecté et ne s'arrête pas tant que vous n'avez pas quitté, procédez comme suit:
/bin/bash ~/process_monitor.sh docky
Assurez-vous que la nouvelle entrée est cochée. Reconnectez-vous et entrez et vous voyez docky tout le temps.
Cette procédure est similaire à la méthode de surveillance de processus, utilisant une boucle Until, mais uniquement pour docky.
Script simple:
until docky; do
sleep 1
done
Ensuite, supprimez docky de vos applications de démarrage et ajoutez simplement sh [chemin d'accès au fichier], tel que:
sh /usr/wegsehen/Scripts/docky.sh
J'ai écrit un petit script "wrapper" ci-dessous. Il va engendrer docky et le surveiller. Spawn cela seul sans docky dans les applications de démarrage.
#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: [email protected]
# 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