docky si blocca di tanto in tanto per me. Come posso farlo riavviare automaticamente dopo un arresto anomalo?
docky si blocca di tanto in tanto per me. Come posso farlo riavviare automaticamente dopo un arresto anomalo?
Risposte:
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:
/bin/bash ~/process_monitor.sh docky
Assicurarsi che la nuova voce sia selezionata. Esci e rientra e vedi sempre docky.
/bin/bash ~/process_monitor.sh docky
alle 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?
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
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
./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:
#! / Bin / bash
~ / process_monitor.sh docky
fatto
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".
Ora puoi riavviare il computer e testarlo.
process_monitor.sh
? Non sono necessarie modifiche ai file o modifiche alle autorizzazioni.