Doki od czasu do czasu ulega awarii. Jak sprawić, by uruchomił się ponownie automatycznie po awarii?
Doki od czasu do czasu ulega awarii. Jak sprawić, by uruchomił się ponownie automatycznie po awarii?
Odpowiedzi:
Po pierwsze, nie używam doków. Ale zakładam, że docky jest w twojej $ PATH. Jeśli nie, podaj pełną ścieżkę do pliku binarnego.
Oto niesamowite wykorzystanie Bash:
Zacznij od pliku, takiego jak (vim zamiast gedit, jeśli chcesz):
gedit ~/process_monitor.sh
Wpisz następujące polecenie:
#!/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
Zapisz plik.
Ustaw uprawnienie:
chmod a+x ~/process_monitor.sh
Teraz możesz uruchomić taki program:
~/process_monitor.sh docky
i raz uruchomi program, i upewnij się, że uruchomisz go ponownie, jeśli kiedykolwiek zechcesz go zamknąć lub zawiesi się.
Aby dodać wpis do uruchamiania systemu, aby uruchamiał program po zalogowaniu i nie zatrzyma się, dopóki nie wyjdziesz, wykonaj następujące czynności:
/bin/bash ~/process_monitor.sh docky
Upewnij się, że nowy wpis jest zaznaczony. Wyloguj się ponownie i zaloguj, a będziesz cały czas widoczny.
/bin/bash ~/process_monitor.sh docky
do aplikacji startowych, ale nic się nie dzieje. Właściwie widzę pół okna terminala migającego na ekranie przez sekundę po zalogowaniu, ale to wszystko. Skrypt nie uruchamia się, nawet jeśli dodałem to polecenie do aplikacji startowych. Co powinienem zrobić?
Napisałem mały skrypt „otoki” poniżej. Odrodzi się dokujący i monitoruje go. Odradzaj to sam bez dokowania w aplikacjach startowych.
#!/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
Plik ./process_monitor.sh działa świetnie.
Ale tylko jeśli używam terminala lub yakuake ... więc mogę po prostu otworzyć nową powłokę, gdy używam „~ / process_monitor.sh docky” lub „/ bin / bash ~ / process_monitor.sh docky”
Ale jeśli przejdę do „aplikacji startowych”, kliknij dodaj i postępuj zgodnie z tymi instrukcjami, nic się nie dzieje, gdy mój komputer się uruchamia. Nadal muszę uruchomić to polecenie ręcznie. I zadziałało, gdy wstawiłem także dok /home/"username"/process_monitor.sh.
Znalazłem lub stworzyłem rozwiązanie (które nie zostało gdzieś opublikowane), aby uruchomić je automatycznie.
Zamiast używać dokowanego pliku ~ / process_monitor.sh utwórz nowy plik tekstowy:
#! / bin / bash
~ / process_monitor.sh docky
gotowy
chmod a + x ~ / start.sh
Teraz możesz uruchomić program na swoim terminalu / yakuake lub cokolwiek, czego wolisz:
~ / start.sh
i uruchomi dokowanie ~ / process_monitor.sh. Więc uruchomi się i uruchomi ponownie, jeśli ulegnie awarii.
Możesz wybrać dowolną nazwę dla „process_monitor.sh” i „start.sh” tylko .sh jest ważne. Ale pamiętaj, aby to zmienić również w plikach tekstowych.
Teraz przejdź do Dash, wpisz i otwórz „Aplikacje startowe”.
Teraz możesz ponownie uruchomić komputer i przetestować go.
process_monitor.sh
? Nie wymaga edycji pliku ani zmian uprawnień.