докі час від часу збоїть для мене. Як я можу зробити так, щоб він перезавантажився автоматично після його аварії?
докі час від часу збоїть для мене. Як я можу зробити так, щоб він перезавантажився автоматично після його аварії?
Відповіді:
По-перше, я не використовую докі. Але я припускаю, що докі знаходиться у вашій $ 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
до запуску програм, але нічого не відбувається. Насправді я бачу, як половина вікна терміналу спалахує на екрані на секунду після входу, але це все. Сценарій не починається, навіть якщо я додав цю команду до запуску програм. Що я повинен зробити?
Я написав нижче невеликий сценарій "обгортки". Він породжить докі і стежить за ним. Помістіть це поодинці без стику у програмах запуску.
#!/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 створіть новий текстовий файл:
#! / бін / баш
~ / process_monitor.sh docky
зроблено
chmod a + x ~ / start.sh
Тепер ви можете запустити програму у своєму терміналі / yakuake або будь-якому іншому, що ви бажаєте використовувати:
~ / start.sh
і він запустить док ~ ~ process_monitor.sh. Таким чином, він буде запущений і перезапущений у разі збоїв.
Ви можете вибрати будь-яке ім’я, яке вам подобається, лише для "process_monitor.sh" та "start.sh". Але не забудьте змінити це також у своїх текстових файлах.
Тепер перейдіть до своєї тире, наберіть і відкрийте "Запуск програм".
Тепер ви можете перезапустити комп'ютер і протестувати його.
process_monitor.sh
? Не потрібно редагування файлів або змін дозволу.