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 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?
Câu trả lời:
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:
/bin/bash ~/process_monitor.sh docky
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.
/bin/bash ~/process_monitor.sh docky
cá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ì?
Đ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
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
./ 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:
#! / bin / bash
~ / process_monitor.sh docky
làm xong
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".
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ó.
process_monitor.sh
? Không cần chỉnh sửa tập tin hoặc thay đổi quyền.