Как автоматически перезапустить Docky после сбоя?

Доки время от времени падает для меня. Как я могу сделать так, чтобы он автоматически перезагружался после сбоя?

9
задан 12 March 2013 в 02:39

4 ответа

Я записал маленький рев сценария "обертки". Это будет порождать docky и контролировать его. Породите это одно без docky в Приложениях Запуска.

#!/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
0
ответ дан 12 March 2013 в 02:39
1114 Во-первых, я не использую док-станцию. Но я предполагаю, что доки в вашем $ PATH. Если нет, то укажите полный путь к двоичному файлу.

Вот удивительное использование Bash:

Начните с файла, такого как (vim вместо gedit, если хотите):

  • gedit ~/process_monitor.sh
  • Введите следующее:

    #!/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
    
  • Сохраните файл.

  • Установите разрешение:

    chmod a+x ~/process_monitor.sh
    

Теперь вы можете запустить программу следующим образом:

~/process_monitor.sh docky

, и она запустит программу один раз, и обязательно перезапустите программу, если вы когда-либо решите выйти из нее или она решит сбой.

Чтобы добавить запись в автозагрузку системы, чтобы она запускала программу после входа в систему и не останавливалась до тех пор, пока вы не выйдете, сделайте следующее:

  • Перейдите в Unity Dash, введите и найдите " Startup Applications »
  • Нажмите« Добавить »
  • Имя: Docky или все, что вам нравится
  • Команда: /bin/bash ~/process_monitor.sh docky
  • Комментарий: все, что вам нравится

Убедитесь, что новая запись отмечена. Выйдите из системы и войдите, и вы все время увидите докки.

0
ответ дан 12 March 2013 в 02:39

Это похоже на метод контроля процесса, использующий цикл до, но только для самой докки.

Простой скрипт:

until docky; do
  sleep 1
done

Затем удалите docky из ваших автозагрузок и просто добавьте sh [путь к файлу], например:

sh / usr / wegsehen / Scripts /docky.sh

0
ответ дан 12 March 2013 в 02:39

./process_monitor.sh прекрасно работает.

Но только если я использую Terminal или yakuake ... так что я могу просто открыть новую оболочку, когда я использую "~ / process_monitor.sh docky" или "/ bin / bash ~ / process_monitor.sh docky"

Но если я зайду в «Автозагрузку приложений», нажмите «Добавить» и следуйте этим инструкциям, ничего не произойдет при запуске моего компьютера. Я все еще должен выполнить эту команду вручную. И он выиграл работу, когда я вставил в /home/"username"/process_monitor.sh docky.

Я нашел или создал решение (которое еще нигде не было опубликовано) для его автоматического запуска.

Вместо использования ~ / process_monitor.sh создайте новый текстовый файл:

  • gedit ~ / start.sh
  • , следуя

#! / Bin / bash

~ / process_monitor.sh docky

сделано

  • Сохранить файл
  • Установить разрешение :

chmod a + x ~ / start.sh

Теперь вы можете запустить программу в своем терминале / yakuake или в любом другом месте, которое вы предпочитаете использовать:

~ / start.sh

и запустится док-станция ~ / process_monitor.sh. Так что он начнет и перезапустится, если произойдет сбой.

Вы можете выбрать любое имя для «process_monitor.sh» и «start.sh», только .sh важно. Но не забудьте также изменить его в своих текстовых файлах.

Теперь перейдите в Dash, введите и откройте «Запуск приложений».

  • Удалить остальные настройки запуска Docky
  • Создать новый
  • Имя: Docky или как вы хотите его назвать
  • Команда: / home / " ваше имя пользователя "/start.sh (для меня например. /home/kevin/startup.sh)
  • Комментарий: все, что вам нравится.
  • Перейдите в настройки Docky и отключите «Запуск при входе в систему» ​​

Теперь вы можете перезагрузить компьютер и проверить его.

Видеоинструкция

0
ответ дан 12 March 2013 в 02:39

Другие вопросы по тегам:

Похожие вопросы: