गोदी मेरे लिए समय-समय पर दुर्घटनाग्रस्त होती है। क्रैश होने के बाद मैं इसे अपने आप कैसे पुनः आरंभ कर सकता हूं?
गोदी मेरे लिए समय-समय पर दुर्घटनाग्रस्त होती है। क्रैश होने के बाद मैं इसे अपने आप कैसे पुनः आरंभ कर सकता हूं?
जवाबों:
सबसे पहले, मैं डॉक का उपयोग नहीं कर रहा हूँ। लेकिन मुझे लगता है कि गोदी आपके $ पेट में है। यदि नहीं, तो बाइनरी के लिए पूर्ण पथ निर्दिष्ट करें।
यहाँ बैश का भयानक उपयोग है:
फ़ाइल के साथ प्रारंभ करें, जैसे कि (यदि आप चाहें तो 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 बढ़िया काम करता है।
लेकिन केवल अगर मैं टर्मिनल, या याकूबेक का उपयोग करता हूं ... तो मैं सिर्फ एक नया शेल खोल सकता हूं, जब मैं "~ / process_monitor.sh डॉक्य" या "/ बिन / बैश ~ / process_monitor.sh डॉक" का उपयोग करता हूं
लेकिन अगर मैं "स्टार्टअप एप्लिकेशन" पर जाता हूं, तो इन निर्देशों का पालन करें और जोड़ें जब मेरा कंप्यूटर शुरू हो रहा है तब कुछ भी नहीं होता है। मुझे अभी भी उस कमांड को मैन्युअल रूप से चलाना है। और यह काम जीत गया, जब मैंने /home/"username"/process_monitor.sh डॉक में भी डाल दिया।
मैंने पाया, या एक हल बनाया (जो कहीं पोस्ट नहीं किया गया है) इसे स्वतः प्राप्त करने के लिए।
इसके बजाय ~ / process_monitor.sh डॉक का उपयोग करके एक नया टेक्स्टफाइल बनाएं:
#! / Bin / bash
~ / process_monitor.sh गोदी
किया हुआ
chmod a + x ~ / start.sh
अब आप अपने टर्मिनल / याकुके या जो भी आप उपयोग करना चाहते हैं, उसमें कार्यक्रम चला सकते हैं:
~ / Start.sh
और यह ~ / process_monitor.sh डॉक शुरू करेगा। तो यह शुरू हो जाएगा और अगर दुर्घटनाग्रस्त हो गया।
आप "process_monitor.sh" और "start.sh" के लिए कोई भी नाम चुन सकते हैं जो केवल .sh महत्वपूर्ण है। लेकिन इसे अपने टेक्स्टफाइल्स में भी बदलना सुनिश्चित करें।
अब अपने डैश पर जाएं, "स्टार्टअप एप्लिकेशन" टाइप करें और खोलें।
अब आप अपने कंप्यूटर को पुनरारंभ कर सकते हैं और उसका परीक्षण कर सकते हैं।
process_monitor.sh
? कोई फ़ाइल संपादन या अनुमति परिवर्तन की आवश्यकता नहीं है।