Comment redémarrer automatiquement Docky après un crash?


Réponses:


10

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:

  • Accédez à Unity Dash, saisissez et recherchez «Applications de démarrage»
  • Cliquez sur Ajouter
  • Nom: Docky ou tout ce que vous aimez
  • Commander: /bin/bash ~/process_monitor.sh docky
  • Commentaire: ce que vous aimez

Assurez-vous que la nouvelle entrée est cochée. Déconnectez-vous et connectez-vous et vous voyez Docky tout le temps.


Que faire si j'exécute Gnome 3 et que je n'ai pas "Applications de démarrage" et que je souhaite le placer dans un fichier .desktop à la place? Que dois-je mettre pour la ligne "Exec ="?
guttermonk

Je l'ai! :) "Terminal = False" et "Exec = nohup bash -c '~ / process_monitor.sh docky; $ SHELL' &"
guttermonk

Merci! Je l'utilise également pour Dropbox et Synergy. Fonctionne très bien!
guttermonk

Le script fonctionne parfaitement lorsque je l'exécute manuellement, mais j'ai ajouté des /bin/bash ~/process_monitor.sh dockyapplications 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?
Revetahw dit Réintégrer Monica

@guttermonk Pouvez-vous offrir de l'aide sur ma requête dans le commentaire ci-dessus? J'ai également posté cela comme une question distincte: askubuntu.com/questions/751465/…
Revetahw dit Reinstate Monica

1

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


0

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

-1

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:

  • gedit ~ / start.sh
  • type suivant

#! / bin / bash

~ / process_monitor.sh docky

terminé

  • Enregistrer le fichier
  • Définir l'autorisation:

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".

  • Supprimer les autres paramètres de démarrage Docky définis
  • Créez-en un nouveau
  • Nom: Docky ou quel que soit le nom que vous voulez
  • Commande: / home / "votre nom d'utilisateur" /start.sh (pour moi par exemple /home/kevin/startup.sh)
  • Commentaire: tout ce que vous aimez.
  • Accédez à vos paramètres Docky et désactivez «Démarrer à la connexion»

Vous pouvez maintenant redémarrer votre ordinateur et le tester.

Didacticiel vidéo


Pourquoi ne pas simplement créer un lien (symbolique) vers process_monitor.sh? Aucune modification de fichier ou modification d'autorisation n'est requise.
David Foerster

que voulez-vous dire par lien symbolique?
Kevin

Ceci : ln -s process_monitor.sh start.shouln -s ~/process_monitor.sh ~/Desktop/
David Foerster
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.