Como reiniciar automaticamente o docky após uma falha?

9

docky falha de vez em quando para mim. Como posso reiniciar automaticamente depois que ele caiu?

    
por Paul Woitaschek 15.07.2012 / 22:04

4 respostas

10

Primeiro, não estou usando docky. Mas suponho que o docky esteja no seu $ PATH. Caso contrário, especifique o caminho completo para o binário.

Aqui está o incrível uso do Bash:

Comece com um arquivo, como (vim em vez de gedit, se quiser):

  • gedit ~/process_monitor.sh
  • Digite o seguinte:

    #!/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
    
  • Salve o arquivo.

  • Defina a permissão:

    chmod a+x ~/process_monitor.sh
    

Agora você pode executar um programa assim:

~/process_monitor.sh docky

e ele iniciará o programa uma vez, e certifique-se de reiniciar o programa se você optar por encerrá-lo ou optar por travar.

Para adicionar uma entrada à inicialização do sistema para que ele inicie o programa assim que você fizer login e não pare até que você saia, faça o seguinte:

  • Acesse o Unity Dash, digite e procure por "Aplicativos de inicialização"
  • Clique em Adicionar
  • Nome: Docky ou o que você quiser
  • Comando: /bin/bash ~/process_monitor.sh docky
  • Comentário: o que você quiser

Verifique se a nova entrada está marcada. Volte a entrar e sair e você vê o docky o tempo todo.

    
por Neil Huang 07.03.2013 / 03:25
1

Isso é semelhante ao método do monitor de processo, usando um loop until, mas apenas para o próprio docky.

script simples:

until docky; do
  sleep 1
done

Em seguida, remova o docky de seus aplicativos de inicialização e apenas adicione sh [caminho para o arquivo], como:

sh /usr/wegsehen/Scripts/docky.sh

    
por Clarke 04.12.2014 / 21:48
0

Eu escrevi um pequeno script "wrapper" abaixo. Ele vai aparecer docky e monitorá-lo. Spawn isso sozinho sem docky nas aplicações de inicialização.

#!/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
    
por Sergiy Kolodyazhnyy 01.04.2016 / 06:29
-1

O ./process_monitor.sh funciona muito bem.

Mas somente se eu usar Terminal, ou yakuake ... para que eu possa abrir um novo shell, quando eu usar "~ / process_monitor.sh docky" ou "/ bin / bash ~ / process_monitor.sh docky"

Mas se eu for para os "Aplicativos de inicialização", clique em adicionar e siga estas instruções. Nada acontece quando o computador está sendo inicializado. Eu ainda tenho que executar esse comando manualmente. E ganhou trabalho, quando eu coloquei /home/"username"/process_monitor.sh docky também.

Eu encontrei ou criei uma solução (que não foi postada em algum lugar) para obtê-la autostarted.

Em vez de usar o ~ / process_monitor.sh docky, crie um novo arquivo de texto:

  • gedit ~ / start.sh
  • digite o seguinte

#!/bin/bash

~/process_monitor.sh docky

done

  • Salvar arquivo
  • Definir permissão:

chmod a+x ~/start.sh

Agora você pode executar o programa no seu terminal / yakuake ou o que você preferir usar:

~/start.sh

e ele iniciará o ~ / process_monitor.sh docky. Então, ele será iniciado e reiniciado se travar.

Você pode escolher qualquer nome que quiser para "process_monitor.sh" e "start.sh". O .sh é importante. Mas não se esqueça de alterá-lo em seus arquivos de texto também.

Agora vá para o seu Dash, digite e abra "Startup Applications".

  • Excluir outras configurações de inicialização do Docky
  • Crie um novo
  • Nome: Docky ou o que você quiser nomear
  • Comando: / home / "seu nome de usuário" /start.sh (para mim por ex. /home/kevin/startup.sh)
  • Comentário: o que você quiser.
  • Acesse as configurações do Docky e desative "Iniciar no login"

Agora você pode reiniciar seu computador e testá-lo.

Videotutorial

    
por Kevin 01.11.2014 / 00:04

Tags