मैं क्रैश के बाद स्वचालित रूप से डॉक को कैसे पुनः आरंभ करूं?


9

गोदी मेरे लिए समय-समय पर दुर्घटनाग्रस्त होती है। क्रैश होने के बाद मैं इसे अपने आप कैसे पुनः आरंभ कर सकता हूं?


आप किसी ऐसे व्यक्ति द्वारा पोस्ट की गई इस स्क्रिप्ट को अनुकूलित करने में सक्षम हो सकते हैं, जिसने

जवाबों:


10

सबसे पहले, मैं डॉक का उपयोग नहीं कर रहा हूँ। लेकिन मुझे लगता है कि गोदी आपके $ पेट में है। यदि नहीं, तो बाइनरी के लिए पूर्ण पथ निर्दिष्ट करें।

यहाँ बैश का भयानक उपयोग है:

फ़ाइल के साथ प्रारंभ करें, जैसे कि (यदि आप चाहें तो 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

और यह कार्यक्रम को एक बार लॉन्च करेगा, और यदि आप कभी भी इसे छोड़ना चाहते हैं या यह दुर्घटनाग्रस्त हो जाता है, तो प्रोग्राम को पुनः आरंभ करना सुनिश्चित करें।

सिस्टम स्टार्टअप में एक प्रविष्टि जोड़ने के लिए इसलिए यह प्रोग्राम लॉन्च करता है एक बार जब आप लॉग इन करते हैं और जब तक आप इसे नहीं छोड़ते हैं, तब तक ऐसा नहीं करेंगे:

  • एकता डैश पर जाएं, टाइप करें और "स्टार्टअप एप्लिकेशन" देखें
  • जोड़ें पर क्लिक करें
  • नाम: Docky या जो भी आपको पसंद हो
  • कमान: /bin/bash ~/process_monitor.sh docky
  • टिप्पणी: आपको जो भी पसंद हो

सुनिश्चित करें कि नई प्रविष्टि की जाँच की गई है। लॉग आउट करें और हर समय आपको डॉक दिखाई देता है।


क्या होगा अगर मैं गनोम 3 चला रहा हूं और मेरे पास "स्टार्टअप एप्लिकेशन" नहीं है और मैं इसके बजाय एक .desktop फ़ाइल में रखना चाहता हूं? मैं "Exec =" लाइन के लिए क्या रखूंगा?
गटरमनोक

समझ गया! :) "टर्मिनल = गलत" और "एक्सेक = नोहप बैश -c '~ / process_monitor. docky; $ SHELL' &"
guttermonk

धन्यवाद! मैं ड्रॉपबॉक्स और सिनर्जी के लिए भी इसका इस्तेमाल करता हूं। बहुत अच्छा काम करता है!
1

स्क्रिप्ट उत्कृष्ट रूप से तब काम करती है जब मैं इसे मैन्युअल रूप से चलाता हूं, लेकिन मैंने /bin/bash ~/process_monitor.sh dockyस्टार्टअप एप्लिकेशन में जोड़ा है, फिर भी कुछ नहीं होता है। असल में मुझे लॉग इन करने के बाद स्क्रीन पर एक सेकंड के लिए आधा टर्मिनल विंडो फ्लैश दिखाई देता है, लेकिन यह सब है। यदि मैंने उस एप्लिकेशन को स्टार्टअप एप्लिकेशन में जोड़ा है, तो भी स्क्रिप्ट किक नहीं करती है। मुझे क्या करना चाहिए?
रेवेटहॉव ने

@guttermonk क्या आप उपरोक्त टिप्पणी में मेरी क्वेरी पर कोई मदद दे सकते हैं? मैंने इसे एक अलग प्रश्न के रूप में भी पोस्ट किया है: askubuntu.com/questions/751465/…
Revetahw का कहना है कि मोनिका

1

यह प्रक्रिया मॉनिटर विधि के समान है, जब तक कि लूप का उपयोग नहीं किया जाता है, लेकिन सिर्फ गोदी के लिए।

सरल स्क्रिप्ट:

until docky; do
  sleep 1
done

फिर, अपने स्टार्टअप एप्लिकेशन से डॉक हटाएं, और केवल sh [फ़ाइल में पथ] जोड़ें, जैसे:

sh /usr/wegsehen/Scripts/docky.sh


0

मैंने एक छोटा "रैपर" स्क्रिप्ट लिखी। यह गोदी को फैलाएगा और उसकी निगरानी करेगा। स्टार्टअप एप्लिकेशन में डॉक के बिना इसे अकेले चलाएं।

#!/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

-1

./Process_monitor.sh बढ़िया काम करता है।

लेकिन केवल अगर मैं टर्मिनल, या याकूबेक का उपयोग करता हूं ... तो मैं सिर्फ एक नया शेल खोल सकता हूं, जब मैं "~ / process_monitor.sh डॉक्य" या "/ बिन / बैश ~ / process_monitor.sh डॉक" का उपयोग करता हूं

लेकिन अगर मैं "स्टार्टअप एप्लिकेशन" पर जाता हूं, तो इन निर्देशों का पालन करें और जोड़ें जब मेरा कंप्यूटर शुरू हो रहा है तब कुछ भी नहीं होता है। मुझे अभी भी उस कमांड को मैन्युअल रूप से चलाना है। और यह काम जीत गया, जब मैंने /home/"username"/process_monitor.sh डॉक में भी डाल दिया।

मैंने पाया, या एक हल बनाया (जो कहीं पोस्ट नहीं किया गया है) इसे स्वतः प्राप्त करने के लिए।

इसके बजाय ~ / process_monitor.sh डॉक का उपयोग करके एक नया टेक्स्टफाइल बनाएं:

  • gedit ~ / start.sh
  • टाइप करें

#! / Bin / bash

~ / process_monitor.sh गोदी

किया हुआ

  • फाइल सुरक्षित करें
  • अनुमति सेट करें:

chmod a + x ~ / start.sh

अब आप अपने टर्मिनल / याकुके या जो भी आप उपयोग करना चाहते हैं, उसमें कार्यक्रम चला सकते हैं:

~ / Start.sh

और यह ~ / process_monitor.sh डॉक शुरू करेगा। तो यह शुरू हो जाएगा और अगर दुर्घटनाग्रस्त हो गया।

आप "process_monitor.sh" और "start.sh" के लिए कोई भी नाम चुन सकते हैं जो केवल .sh महत्वपूर्ण है। लेकिन इसे अपने टेक्स्टफाइल्स में भी बदलना सुनिश्चित करें।

अब अपने डैश पर जाएं, "स्टार्टअप एप्लिकेशन" टाइप करें और खोलें।

  • डॉकटी स्टार्टअप सेटिंग्स को हटाएं
  • एक नया बनाएँ
  • नाम: Docky या जो भी आप इसे नाम देना चाहते हैं
  • कमांड: / होम / "आपका उपयोगकर्ता नाम" /start.sh (मेरे लिए पूर्व के लिए। / home/kevin/start.gov)
  • टिप्पणी: आपको जो भी पसंद हो
  • अपनी डॉक सेटिंग पर जाएं और "लॉगिन पर प्रारंभ करें" को अक्षम करें

अब आप अपने कंप्यूटर को पुनरारंभ कर सकते हैं और उसका परीक्षण कर सकते हैं।

वीडियो ट्यूटोरियल


सिर्फ (प्रतीकात्मक) लिंक ही क्यों नहीं बनाया process_monitor.sh? कोई फ़ाइल संपादन या अनुमति परिवर्तन की आवश्यकता नहीं है।
डेविड फ़ॉस्टर

आप प्रतीकात्मक लिंक के साथ क्या मतलब है?
केविन

यह : ln -s process_monitor.sh start.shयाln -s ~/process_monitor.sh ~/Desktop/
डेविड फोमरस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.