Come riavvio automaticamente docky dopo un arresto?


Risposte:


10

Prima di tutto, non sto usando docky. Ma suppongo che docky sia nel tuo $ PATH. In caso contrario, specificare il percorso completo del file binario.

Ecco il fantastico uso di Bash:

Inizia con un file, come (vim invece di gedit se vuoi):

  • gedit ~/process_monitor.sh
  • Digita quanto segue:

    #!/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
    
  • Salva il file.

  • Imposta l'autorizzazione:

    chmod a+x ~/process_monitor.sh
    

Ora puoi eseguire un programma in questo modo:

~/process_monitor.sh docky

e avvierà il programma una volta, e assicurati di riavviare il programma se mai decidi di chiuderlo o sceglie di andare in crash.

Per aggiungere una voce all'avvio del sistema in modo che avvii il programma una volta effettuato l'accesso e non si fermerà fino alla chiusura, procedere come segue:

  • Vai su Unity Dash, digita e cerca "Applicazioni di avvio"
  • Clicca Aggiungi
  • Nome: Docky o qualunque cosa ti piaccia
  • Comando: /bin/bash ~/process_monitor.sh docky
  • Commento: qualunque cosa ti piaccia

Assicurarsi che la nuova voce sia selezionata. Esci e rientra e vedi sempre docky.


Che cosa succede se eseguo Gnome 3 e non ho "Applicazioni di avvio" e voglio invece inserirlo in un file .desktop? Cosa metterei per la riga "Exec ="?
Guttermonk,

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

Grazie! Lo uso anche per Dropbox e Synergy. Funziona alla grande!
Guttermonk,

Lo script funziona in modo eccellente quando lo eseguo manualmente, ma ho aggiunto /bin/bash ~/process_monitor.sh dockyalle applicazioni di avvio, ma non succede nulla. In realtà vedo lampeggiare mezza finestra del terminale sullo schermo per un secondo dopo aver effettuato l'accesso, ma questo è tutto. Lo script non si avvia anche se ho aggiunto quel comando alle applicazioni di avvio. Cosa dovrei fare?
Revetahw dice che ripristina Monica il

@guttermonk Puoi offrire aiuto sulla mia domanda nel commento sopra? Ho pubblicato questo come una domanda separata anche: askubuntu.com/questions/751465/…
Revetahw dice Reinstate Monica

1

Questo è simile al metodo di monitoraggio del processo, usando un ciclo until, ma solo per docky stesso.

Script semplice:

until docky; do
  sleep 1
done

Quindi, rimuovere docky dalle applicazioni di avvio e aggiungere semplicemente sh [percorso al file], ad esempio:

sh /usr/wegsehen/Scripts/docky.sh


0

Ho scritto un piccolo script "wrapper" sotto. Genererà docky e lo monitorerà. Genera questo da solo senza docky nelle applicazioni di avvio.

#!/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

./Process_monitor.sh funziona alla grande.

Ma solo se uso Terminal, o yakuake ... quindi posso semplicemente aprire una nuova shell, quando utilizzo "~ / process_monitor.sh docky" o "/ bin / bash ~ / process_monitor.sh docky"

Ma se vado in "Applicazioni di avvio", fai clic su Aggiungi e segui queste istruzioni non succede nulla all'avvio del mio computer. Devo ancora eseguire quel comando manualmente. E ha funzionato anche quando ho inserito /home/"username"/process_monitor.sh docky.

Ho trovato o creato una soluzione (che non è stata pubblicata da qualche parte) per avviarla automaticamente.

Invece di usare il docky ~ / process_monitor.sh, crea un nuovo file di testo:

  • gedit ~ / start.sh
  • digitare seguente

#! / Bin / bash

~ / process_monitor.sh docky

fatto

  • Salvare il file
  • Imposta autorizzazione:

chmod a + x ~ / start.sh

Ora puoi eseguire il programma nel tuo terminale / yakuake o qualunque cosa tu preferisca usare:

~ / Start.sh

e avvierà il docky ~ / process_monitor.sh. Quindi verrà avviato e riavviato in caso di crash.

Puoi scegliere qualsiasi nome che ti piace per "process_monitor.sh" e "start.sh" solo .sh è importante. Ma assicurati di cambiarlo anche nei tuoi file di testo.

Ora vai su Dash, digita e apri "Startup Applications".

  • Elimina le altre impostazioni di avvio Docky
  • Creane uno nuovo
  • Nome: Docky o come vuoi nominarlo
  • Comando: / home / "il tuo nome utente" /start.sh (per me, ad esempio /home/kevin/startup.sh)
  • Commento: qualunque cosa ti piaccia.
  • Vai alle tue impostazioni Docky e disabilita "Inizia all'accesso"

Ora puoi riavviare il computer e testarlo.

Videotutorial


Perché non creare un collegamento (simbolico) a process_monitor.sh? Non sono necessarie modifiche ai file o modifiche alle autorizzazioni.
David Foerster,

cosa intendi con link simbolico?
Kevin,

Questo : ln -s process_monitor.sh start.shoppureln -s ~/process_monitor.sh ~/Desktop/
David Foerster,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.