docky se bloque de temps en temps pour moi. Comment puis-je le faire redémarrer automatiquement après un crash?
docky se bloque de temps en temps pour moi. Comment puis-je le faire redémarrer automatiquement après un crash?
Réponses:
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 impressionnante 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éfinissez l'autorisation:
chmod a+x ~/process_monitor.sh
Vous pouvez maintenant exécuter un programme comme celui-ci:
~/process_monitor.sh docky
et il lancera le programme une fois, et assurez-vous de redémarrer le programme si vous décidez de le quitter ou s'il se bloque.
Pour ajouter une entrée au démarrage du système afin qu'il lance le programme une fois connecté et ne s'arrêtera pas tant que vous ne quitterez pas, procédez comme suit:
/bin/bash ~/process_monitor.sh docky
Assurez-vous que la nouvelle entrée est cochée. Déconnectez-vous et connectez-vous et vous voyez Docky tout le temps.
/bin/bash ~/process_monitor.sh docky
applications de démarrage, mais rien ne se passe. En fait, je vois la moitié d'une fenêtre de terminal clignoter à l'écran pendant une seconde après la connexion, mais c'est tout. Le script ne démarre pas même si j'ai ajouté cette commande aux applications de démarrage. Que devrais-je faire?
Ceci est similaire à la méthode du moniteur de processus, utilisant une boucle jusqu'à, mais uniquement pour Docky lui-même.
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 apparaîtra docky et le surveillera. Générez cela seul sans docky dans les applications de démarrage.
#!/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
Le ./process_monitor.sh fonctionne très bien.
Mais seulement si j'utilise Terminal, ou yakuake ... donc je peux juste ouvrir un nouveau shell, quand j'utilise "~ / process_monitor.sh docky" ou "/ bin / bash ~ / process_monitor.sh docky"
Mais si je vais dans les "Applications de démarrage", cliquez sur Ajouter et suivez ces instructions, rien ne se passe lorsque mon ordinateur démarre. Je dois encore exécuter cette commande manuellement. Et ça a gagné du travail, quand j'ai mis /home/"username"/process_monitor.sh docky aussi.
J'ai trouvé ou créé une solution (qui n'a pas été publiée quelque part) pour qu'elle démarre automatiquement.
Au lieu d'utiliser le docky ~ / process_monitor.sh, créez un nouveau fichier texte:
#! / bin / bash
~ / process_monitor.sh docky
terminé
chmod a + x ~ / start.sh
Vous pouvez maintenant exécuter le programme dans votre terminal / yakuake ou tout ce que vous préférez utiliser:
~ / start.sh
et il démarrera le docky ~ / process_monitor.sh. Il sera donc démarré et redémarré en cas de plantage.
Vous pouvez choisir n'importe quel nom pour "process_monitor.sh" et "start.sh". Seul .sh est important. Mais assurez-vous de le changer également dans vos fichiers texte.
Accédez maintenant à votre tableau de bord, saisissez et ouvrez "Applications de démarrage".
Vous pouvez maintenant redémarrer votre ordinateur et le tester.
process_monitor.sh
? Aucune modification de fichier ou modification d'autorisation n'est requise.