충돌 후 도키를 자동으로 다시 시작하려면 어떻게합니까?


답변:


10

먼저 도키를 사용하지 않습니다. 하지만 도키가 $ PATH에 있다고 가정합니다. 그렇지 않은 경우 바이너리의 전체 경로를 지정하십시오.

Bash의 멋진 사용법은 다음과 같습니다.

(원하는 경우 gedit 대신 vim)과 같은 파일로 시작하십시오.

  • 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

프로그램을 한 번 시작한 다음 프로그램을 종료하거나 중단하기로 선택한 경우 프로그램을 다시 시작해야합니다.

시스템 시작에 항목을 추가하여 로그인 한 후 프로그램을 시작하고 종료 할 때까지 멈추지 않게하려면 다음과 같이하십시오.

  • Unity Dash로 이동하여 "Startup Applications"를 입력하고 찾으십시오.
  • 추가 클릭
  • 이름 : 도키 또는 당신이 좋아하는 것
  • 명령: /bin/bash ~/process_monitor.sh docky
  • 의견 : 당신이 좋아하는 것

새 항목을 확인하십시오. 다시 로그 아웃하고 로그인하면 항상 도키가 나타납니다.


Gnome 3을 실행 중이고 "Startup Applications"가없고 대신 .desktop 파일에 저장하려면 어떻게해야합니까? "Exec ="줄에 무엇을 넣을까요?
guttermonk

알았다! :) "Terminal = False"및 "Exec = nohup bash -c '~ / process_monitor.sh docky; $ SHELL'&"
guttermonk

감사! Dropbox와 Synergy에도 사용합니다. 잘 작동합니다!
guttermonk

스크립트는 수동으로 실행할 때 훌륭하게 작동하지만 /bin/bash ~/process_monitor.sh docky시작 응용 프로그램에 추가 했지만 아무 일도 일어나지 않습니다. 실제로 로그인 한 후 화면에 터미널 창이 절반 만 깜박입니다. 그러나 그게 전부입니다. 시작 응용 프로그램에 해당 명령을 추가해도 스크립트가 시작되지 않습니다. 어떻게해야합니까?
Revetahw는 Reinstate Monica

@guttermonk 위의 의견에서 내 질문에 대한 도움을 줄 수 있습니까? 또한 별도의 문제로이 게시 한 : askubuntu.com/questions/751465/...
Revetahw는 분석 재개 모니카 말한다

1

이것은 until 루프를 사용하는 프로세스 모니터 방법과 유사하지만 도킹 자체에만 사용됩니다.

간단한 스크립트 :

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는 훌륭하게 작동합니다.

그러나 터미널 또는 yakuake를 사용하는 경우에만 "~ / process_monitor.sh docky"또는 "/ bin / bash ~ / process_monitor.sh docky"를 사용할 때 새 쉘을 열 수 있습니다.

그러나 "시작 응용 프로그램"으로 이동 한 후 추가를 클릭하고이 지침을 따르면 컴퓨터가 시작될 때 아무 일도 일어나지 않습니다. 여전히 해당 명령을 수동으로 실행해야합니다. /home/"username"/process_monitor.sh docky에 넣으면 작동합니다.

자동 시작하기 위해 솔루션을 찾았거나 (어딘가에 게시되지 않은) 솔루션을 만들었습니다.

~ / process_monitor.sh 도키를 사용하는 대신 새 텍스트 파일을 작성하십시오.

  • gedit ~ / start.sh
  • 다음과 같은 유형

#! / bin / bash

~ / process_monitor.sh docky

끝난

  • 파일을 저장
  • 권한 설정 :

chmod a + x ~ / start.sh

이제 터미널 / 야 쿠아 케 또는 원하는 것을 사용하여 프로그램을 실행할 수 있습니다.

~ / start.sh

~ / process_monitor.sh 도키가 시작됩니다. 따라서 충돌이 발생하면 시작되고 다시 시작됩니다.

"process_monitor.sh"및 "start.sh"에 대해 원하는 이름을 선택할 수 있습니다. .sh 만 중요합니다. 그러나 텍스트 파일에서도 변경해야합니다.

이제 대시로 가서 "시작 응용 프로그램"을 입력하고 엽니 다.

  • 설정된 Docky 시작 설정 삭제
  • 새로 만들기
  • 이름 : Docky 또는 원하는 이름
  • 명령 : / home / "사용자 이름"/start.sh (예 : /home/kevin/startup.sh의 경우)
  • 의견 : 당신이 좋아하는 것.
  • Docky 설정으로 이동하여 "로그인시 시작"을 비활성화하십시오.

이제 컴퓨터를 다시 시작하고 테스트 할 수 있습니다.

비디오 튜토리얼


왜 (기호) 링크를 만들지 process_monitor.sh않습니까? 파일 편집이나 권한 변경이 필요하지 않습니다.
David Foerster

심볼릭 링크 란 무엇입니까?
케빈

: ln -s process_monitor.sh start.shln -s ~/process_monitor.sh ~/Desktop/
데이비드 푀르 스터
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.