docky trava de vez em quando para mim. Como posso fazê-lo reiniciar automaticamente depois que ele travou?
docky trava de vez em quando para mim. Como posso fazê-lo reiniciar automaticamente depois que ele travou?
Respostas:
Primeiro, eu 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 desejar):
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 como este:
~/process_monitor.sh docky
e ele iniciará o programa uma vez e reinicie 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 após o login e não seja interrompido até você sair, faça o seguinte:
/bin/bash ~/process_monitor.sh docky
Verifique se a nova entrada está marcada. Faça logoff e logon e você verá docky o tempo todo.
/bin/bash ~/process_monitor.sh docky
aplicativos de inicialização, mas nada acontece. Na verdade, vejo metade da janela de um terminal piscando na tela por um segundo após o login, mas é tudo. O script não entra em ação, mesmo que eu tenha adicionado esse comando aos aplicativos de inicialização. O que devo fazer?
Isso é semelhante ao método do monitor de processo, usando um loop até, mas apenas para o próprio docky.
Script simples:
until docky; do
sleep 1
done
Em seguida, remova o docky dos aplicativos de inicialização e adicione sh [caminho para o arquivo], como:
sh /usr/wegsehen/Scripts/docky.sh
Eu escrevi um pequeno script "wrapper" abaixo. Aparecerá docky e o monitorará. Crie isso sozinho, sem docky, nos aplicativos de inicialização.
#!/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
O ./process_monitor.sh funciona muito bem.
Mas somente se eu usar o Terminal ou yakuake ... para abrir um novo shell, quando usar "~ / process_monitor.sh docky" ou "/ bin / bash ~ / process_monitor.sh docky"
Mas se eu for para "Aplicativos de inicialização", clique em adicionar e siga estas instruções. Nada acontece quando o computador está inicializando. Eu ainda tenho que executar esse comando manualmente. E ganhou trabalho, quando eu coloquei no /home/"username"/process_monitor.sh docky também.
Encontrei ou criei uma solução (que não foi publicada em algum lugar) para iniciá-la automaticamente.
Em vez de usar o docky ~ / process_monitor.sh, crie um novo arquivo de texto:
#! / bin / bash
~ / process_monitor.sh docky
feito
chmod a + x ~ / start.sh
Agora você pode executar o programa em seu terminal / yakuake ou o que você preferir:
~ / start.sh
e iniciará o docky ~ / process_monitor.sh. Portanto, ele será iniciado e reiniciado se travar.
Você pode escolher qualquer nome que desejar para "process_monitor.sh" e "start.sh" apenas .sh é importante. Mas certifique-se de alterá-lo também em seus arquivos de texto.
Agora vá para o seu Dash, digite e abra "Aplicativos de inicialização".
Agora você pode reiniciar o seu computador e testá-lo.
process_monitor.sh
? Nenhuma edição de arquivo ou alteração de permissão é necessária.