¿Cómo reinicio automáticamente docky después de un bloqueo?

Respuestas:

10

En primer lugar, no estoy usando docky. Pero supongo que Docky está en tu $ PATH. De lo contrario, especifique la ruta completa al binario.

Aquí está el increíble uso de Bash:

Comience con un archivo, como (vim en lugar de gedit si lo desea):

  • gedit ~/process_monitor.sh
  • Escriba lo siguiente:

    #!/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
    
  • Guarda el archivo.

  • Establecer el permiso:

    chmod a+x ~/process_monitor.sh
    

Ahora puedes ejecutar un programa así:

~/process_monitor.sh docky

e iniciará el programa una vez, y asegúrese de reiniciar el programa si alguna vez decide abandonarlo o decide bloquearse.

Para agregar una entrada al inicio del sistema para que inicie el programa una vez que haya iniciado sesión y no se detenga hasta que cierre, haga lo siguiente:

  • Vaya a Unity Dash, escriba y busque "Aplicaciones de inicio"
  • Haga clic en Agregar
  • Nombre: Docky o lo que quieras
  • Mando: /bin/bash ~/process_monitor.sh docky
  • Comentario: lo que quieras

Asegúrese de que la nueva entrada esté marcada. Vuelva a cerrar sesión y verá a Docky todo el tiempo.

Neil Huang
fuente
¿Qué sucede si estoy ejecutando Gnome 3 y no tengo "Aplicaciones de inicio" y quiero colocarlo en un archivo .desktop? ¿Qué pondría para la línea "Exec ="?
guttermonk
¡Entendido! :) "Terminal = False" y "Exec = nohup bash -c '~ / process_monitor.sh docky; $ SHELL' &"
guttermonk
¡Gracias! También lo uso para Dropbox y Synergy. ¡Funciona genial!
guttermonk
El script funciona de manera excelente cuando lo ejecuto manualmente, pero lo he agregado /bin/bash ~/process_monitor.sh dockya las aplicaciones de inicio, pero no sucede nada. En realidad, veo que la mitad de una ventana de terminal parpadea en la pantalla por un segundo después de iniciar sesión, pero eso es todo. El script no se activa incluso si agregué ese comando a las aplicaciones de inicio. ¿Qué tengo que hacer?
Revetahw dice Reinstate Monica
@guttermonk ¿Puedes ofrecer alguna ayuda en mi consulta en el comentario anterior? He publicado esto como una pregunta separada también: askubuntu.com/questions/751465/…
Revetahw dice Reinstate Monica
1

Esto es similar al método de monitor de proceso, que usa un bucle hasta, pero solo para docky.

Script simple:

until docky; do
  sleep 1
done

Luego, elimine docky de sus aplicaciones de inicio y simplemente agregue sh [ruta al archivo], como:

sh /usr/wegsehen/Scripts/docky.sh

Clarke
fuente
0

Escribí un pequeño guión "envoltorio" a continuación. Engendrará docky y lo monitoreará. Genere esto solo sin docky en las aplicaciones de inicio.

#!/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
Sergiy Kolodyazhnyy
fuente
-1

El ./process_monitor.sh funciona muy bien.

Pero solo si uso Terminal, o yakuake ... para poder abrir un nuevo shell, cuando uso "~ / process_monitor.sh docky" o "/ bin / bash ~ / process_monitor.sh docky"

Pero si voy a "Aplicaciones de inicio", haga clic en Agregar y siga estas instrucciones, no sucede nada cuando mi computadora se está iniciando. Todavía tengo que ejecutar ese comando manualmente. Y ganó el trabajo, cuando puse en /home/"username"/process_monitor.sh docky, también.

Encontré o creé una solución (que no se ha publicado en alguna parte) para que se inicie automáticamente.

En lugar de usar el docky ~ / process_monitor.sh, cree un nuevo archivo de texto:

  • gedit ~ / start.sh
  • escriba siguiente

#! / bin / bash

~ / process_monitor.sh docky

hecho

  • Guardar el archivo
  • Establecer permiso:

chmod a + x ~ / start.sh

Ahora puede ejecutar el programa en su terminal / yakuake o lo que prefiera usar:

~ / start.sh

e iniciará el ~ / process_monitor.sh docky. Por lo tanto, se iniciará y se reiniciará si se bloquea.

Puede elegir cualquier nombre que desee para "process_monitor.sh" y "start.sh" solamente .sh es importante. Pero asegúrese de cambiarlo también en sus archivos de texto.

Ahora vaya a su Tablero, escriba y abra "Aplicaciones de inicio".

  • Eliminar la configuración de inicio de Docky establecida
  • Crea uno nuevo
  • Nombre: Docky o como quieras nombrarlo
  • Comando: / home / "tu nombre de usuario" /start.sh (para mí, por ejemplo, /home/kevin/startup.sh)
  • Comentario: lo que quieras.
  • Vaya a la configuración de Docky y desactive "Iniciar al iniciar sesión"

Ahora puede reiniciar su computadora y probarla.

Videotutorial

Kevin
fuente
¿Por qué no simplemente crear un enlace (simbólico) process_monitor.sh? No se requieren cambios de permisos o edición de archivos.
David Foerster el
¿Qué quieres decir con enlace simbólico?
Kevin
Esto : ln -s process_monitor.sh start.sholn -s ~/process_monitor.sh ~/Desktop/
David Foerster el