докки время от времени падает для меня. Как сделать так, чтобы он автоматически перезагружался после сбоя?
докки время от времени падает для меня. Как сделать так, чтобы он автоматически перезагружался после сбоя?
Ответы:
Во-первых, я не использую Docky. Но я предполагаю, что доки в вашем $ 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
и он запустит программу один раз и обязательно перезапустит программу, если вы когда-нибудь решите выйти из нее или она решит сбой.
Чтобы добавить запись в автозагрузку системы, чтобы она запустила программу после входа в систему и не остановилась, пока вы не выйдете, сделайте следующее:
/bin/bash ~/process_monitor.sh docky
Убедитесь, что новая запись проверена. Выйдите из системы и войдите, и вы все время увидите докки.
/bin/bash ~/process_monitor.sh docky
в автозагрузку приложений, но ничего не происходит. На самом деле я вижу, как половина окна терминала мигает на экране в течение секунды после входа в систему, но это все. Скрипт не запускается, даже если я добавил эту команду для запуска приложений. Что мне делать?
Я написал небольшой сценарий «обертки» ниже. Он будет вызывать дока и следить за ним. Создайте это в одиночку, без Docky в Startup Applications.
#!/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 прекрасно работает.
Но только если я использую Terminal или yakuake ... так что я могу просто открыть новую оболочку, когда я использую "~ / process_monitor.sh docky" или "/ bin / bash ~ / process_monitor.sh docky"
Но если я захожу в «Автозагрузку приложений», нажимаю «Добавить» и следую этим инструкциям, ничего не происходит при запуске моего компьютера. Я все еще должен выполнить эту команду вручную. И он выиграл работу, когда я также добавил /home/"username"/process_monitor.sh docky.
Я нашел или создал решение (которое еще нигде не было опубликовано) для его автоматического запуска.
Вместо использования ~ / process_monitor.sh docky создайте новый текстовый файл:
#! / Bin / Баш
~ / process_monitor.sh docky
сделанный
chmod a + x ~ / start.sh
Теперь вы можете запустить программу в своем терминале / yakuake или как вы предпочитаете использовать:
~ / Start.sh
и он запустит док ~ / process_monitor.sh. Таким образом, он будет запущен и перезапущен в случае сбоя.
Вы можете выбрать любое имя для «process_monitor.sh» и «start.sh», только .sh важно. Но обязательно измените это и в ваших текстовых файлах.
Теперь перейдите в Dash, введите и откройте «Автозагрузка приложений».
Теперь вы можете перезагрузить компьютер и проверить его.
process_monitor.sh
? Не требуется редактирование файлов или изменение разрешений.