Làm cách nào để tự động khởi động lại docky sau khi gặp sự cố?


9

bến tàu gặp sự cố theo thời gian cho tôi. Làm thế nào tôi có thể làm cho nó tự động khởi động lại sau khi nó bị hỏng?


Bạn có thể điều chỉnh tập lệnh này được đăng bởi một người đã trả lời một câu hỏi tương tự trên superuser: superuser.com/questions/223449/auto-restart-

Câu trả lời:


10

Trước hết, tôi không sử dụng docky. Nhưng tôi cho rằng docky nằm trong $ PATH của bạn. Nếu không, sau đó chỉ định đường dẫn đầy đủ đến nhị phân.

Đây là cách sử dụng tuyệt vời của Bash:

Bắt đầu với một tệp, chẳng hạn như (vim thay vì gedit nếu bạn muốn):

  • gedit ~/process_monitor.sh
  • Gõ như sau:

    #!/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
    
  • Lưu các tập tin.

  • Đặt quyền:

    chmod a+x ~/process_monitor.sh
    

Bây giờ bạn có thể chạy một chương trình như vậy:

~/process_monitor.sh docky

và nó sẽ khởi chạy chương trình một lần và đảm bảo khởi động lại chương trình nếu bạn chọn thoát khỏi chương trình hoặc nó bị sập.

Để thêm một mục vào khởi động hệ thống để nó khởi chạy chương trình khi bạn đăng nhập và sẽ không dừng cho đến khi bạn thoát, hãy làm điều này:

  • Chuyển đến Unity Dash, nhập và tìm "Ứng dụng khởi động"
  • Nhấp vào Thêm
  • Tên: Docky hoặc bất cứ điều gì bạn thích
  • Chỉ huy: /bin/bash ~/process_monitor.sh docky
  • Nhận xét: Bất cứ điều gì bạn thích

Hãy chắc chắn rằng mục mới được kiểm tra. Đăng xuất trở lại và vào và bạn thấy bến tàu mọi lúc.


Điều gì xảy ra nếu tôi đang chạy Gnome 3 và tôi không có "Ứng dụng khởi động" và tôi muốn đặt nó trong tệp .desktop thay thế? Tôi sẽ đặt gì cho dòng "Exec ="?
guttermonk

Hiểu rồi! :) "Terminal = Sai" và "Exec = nohup bash -c '~ / process_monitor.sh docky; $ SHELL' &"
guttermonk

Cảm ơn! Tôi cũng sử dụng cái này cho Dropbox và Synergy. Hoạt động tuyệt vời!
guttermonk

Kịch bản hoạt động xuất sắc khi tôi chạy thủ công, nhưng tôi đã thêm vào /bin/bash ~/process_monitor.sh dockycác ứng dụng khởi động, nhưng không có gì xảy ra. Trên thực tế tôi thấy một nửa cửa sổ thiết bị đầu cuối nhấp nháy trên màn hình trong một giây sau khi đăng nhập, nhưng đó là tất cả. Kịch bản không khởi động ngay cả khi tôi đã thêm lệnh đó vào các ứng dụng khởi động. Tôi nên làm gì?
Revetahw nói Phục hồi Monica

@guttermonk Bạn có thể cung cấp bất kỳ trợ giúp về truy vấn của tôi trong bình luận ở trên? Tôi cũng đã đăng câu hỏi này dưới dạng một câu hỏi riêng biệt: Askubfox.com/questions/751465/ory
Revetahw nói Phục hồi Monica

1

Điều này tương tự như phương pháp theo dõi quá trình, sử dụng vòng lặp Until, nhưng chỉ cho chính docky.

Kịch bản đơn giản:

until docky; do
  sleep 1
done

Sau đó, xóa docky khỏi các ứng dụng khởi động của bạn và chỉ cần thêm sh [đường dẫn đến tệp], chẳng hạn như:

sh /usr/wegsehen/Scripts/docky.sh


0

Tôi đã viết một kịch bản "bao bọc" nhỏ dưới đây. Nó sẽ sinh ra docky và theo dõi nó. Sinh ra cái này một mình mà không có docky trong Ứng dụng khởi động.

#!/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 hoạt động rất tốt.

Nhưng chỉ khi tôi sử dụng Terminal hoặc yakuake ... vì vậy tôi mới có thể mở một vỏ mới, khi tôi sử dụng "~ / process_monitor.sh docky" hoặc "/ bin / bash ~ / process_monitor.sh docky"

Nhưng nếu tôi đi đến "Ứng dụng khởi động", nhấp vào thêm và làm theo các hướng dẫn sau thì không có gì xảy ra khi Máy tính của tôi khởi động. Tôi vẫn phải chạy lệnh đó bằng tay. Và nó đã thắng công việc, khi tôi đưa vào /home/"username"/ process_monitor.sh, quá.

Tôi đã tìm thấy hoặc tạo một giải pháp (chưa được đăng ở đâu đó) để tự động khởi động.

Thay vì sử dụng docky ~ / process_monitor.sh, hãy tạo một tệp văn bản mới:

  • gedit ~ / start.sh
  • gõ theo

#! / bin / bash

~ / process_monitor.sh docky

làm xong

  • Lưu tập tin
  • Đặt quyền:

chmod a + x ~ / start.sh

Bây giờ bạn có thể chạy chương trình trong terminal / yakuake hoặc bất cứ thứ gì bạn thích sử dụng:

~ / bắt đầu

và nó sẽ bắt đầu docky ~ / process_monitor.sh. Vì vậy, nó sẽ bắt đầu và khởi động lại nếu gặp sự cố.

Bạn có thể chọn bất kỳ tên nào bạn thích cho "process_monitor.sh" và "start.sh" .sh là quan trọng. Nhưng hãy chắc chắn để thay đổi nó trong tệp văn bản của bạn là tốt.

Bây giờ hãy truy cập Dash của bạn, nhập và mở "Ứng dụng khởi động".

  • Xóa cài đặt Docky Startup cài đặt
  • Tạo một cái mới
  • Tên: Docky hoặc bất cứ điều gì bạn muốn đặt tên nó
  • Lệnh: / home / "tên người dùng của bạn" /start.sh (đối với tôi là ex. /Home/kevin/startup.sh)
  • Nhận xét: Bất cứ điều gì bạn thích.
  • Chuyển đến cài đặt Docky của bạn và tắt "Bắt đầu đăng nhập"

Bây giờ bạn có thể khởi động lại máy tính của bạn và kiểm tra nó.

Video hướng dẫn


Tại sao không chỉ tạo một liên kết (tượng trưng) process_monitor.sh? Không cần chỉnh sửa tập tin hoặc thay đổi quyền.
David Foerster

bạn có ý nghĩa gì với liên kết tượng trưng?
Kevin

Điều này : ln -s process_monitor.sh start.shhoặcln -s ~/process_monitor.sh ~/Desktop/
David Foerster
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.