Bagaimana cara memulai kembali docky secara otomatis setelah mogok?

9

docky crash dari waktu ke waktu untuk saya. Bagaimana saya membuatnya restart secara otomatis setelah crash?

Paul Woitaschek
sumber
Anda mungkin dapat mengadaptasi skrip ini diposting oleh seseorang yang menjawab pertanyaan serupa pada superuser: superuser.com/questions/223449/auto-restart-process-on-crash

Jawaban:

10

Pertama, saya tidak menggunakan docky. Tapi saya berasumsi docky ada di $ PATH Anda. Jika tidak, maka tentukan path lengkap ke biner.

Inilah penggunaan Bash yang luar biasa:

Mulailah dengan file, seperti (vim bukannya gedit jika Anda mau):

  • gedit ~/process_monitor.sh
  • Ketikkan yang berikut ini:

    #!/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
    
  • Simpan file.

  • Tetapkan izin:

    chmod a+x ~/process_monitor.sh
    

Sekarang Anda dapat menjalankan program seperti:

~/process_monitor.sh docky

dan itu akan meluncurkan program sekali, dan pastikan untuk me-restart program jika Anda pernah memilih untuk berhenti atau memilih untuk crash.

Untuk menambahkan entri ke startup sistem sehingga meluncurkan program begitu Anda masuk dan tidak akan berhenti sampai Anda berhenti, lakukan ini:

  • Pergi ke Unity Dash, ketik dan cari "Aplikasi Startup"
  • Klik Tambah
  • Nama: Docky atau apa pun yang Anda suka
  • Perintah: /bin/bash ~/process_monitor.sh docky
  • Komentar: Apa pun yang Anda suka

Pastikan entri baru dicentang. Log out dan masuk dan Anda melihat docky sepanjang waktu.

Neil Huang
sumber
Bagaimana jika saya menjalankan Gnome 3 dan saya tidak memiliki "Aplikasi Startup" dan saya ingin meletakkannya di file .desktop? Apa yang akan saya masukkan untuk baris "Exec ="?
guttermonk
Oke! :) "Terminal = False" dan "Exec = nohup bash -c '~ / process_monitor.sh docky; $ SHELL' &"
guttermonk
Terima kasih! Saya juga menggunakan ini untuk Dropbox dan Sinergi. Bagus sekali!
guttermonk
Script bekerja dengan sangat baik ketika saya menjalankannya secara manual, tetapi saya telah menambahkan /bin/bash ~/process_monitor.sh dockyke aplikasi startup, namun tidak ada yang terjadi. Sebenarnya saya memang melihat setengah jendela terminal berkedip di layar sebentar setelah masuk, tapi itu saja. Script tidak masuk bahkan jika saya menambahkan perintah itu ke aplikasi startup. Apa yang harus saya lakukan?
Revetahw mengatakan Reinstate Monica
@guttermonk Bisakah Anda menawarkan bantuan pada permintaan saya di komentar di atas? Saya telah memposting ini sebagai pertanyaan terpisah juga: askubuntu.com/questions/751465/...
Revetahw mengatakan Reinstate Monica
1

Ini mirip dengan metode proses monitor, menggunakan loop sampai, tetapi hanya untuk docky itu sendiri.

Skrip sederhana:

until docky; do
  sleep 1
done

Kemudian, hapus docky dari aplikasi startup Anda, dan cukup tambahkan sh [path to file], seperti:

sh /usr/wegsehen/Scripts/docky.sh

Clarke
sumber
0

Saya menulis skrip "pembungkus" kecil di bawah. Ini akan memunculkan docky dan memonitornya. Menelurkan ini sendirian tanpa docky di Aplikasi Startup.

#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: [email protected] 
# 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
Sergiy Kolodyazhnyy
sumber
-1

./Process_monitor.sh berfungsi dengan baik.

Tetapi hanya jika saya menggunakan Terminal, atau yakuake ... jadi saya bisa membuka shell baru, ketika saya menggunakan "~ / process_monitor.sh docky" atau "/ bin / bash ~ / process_monitor.sh docky"

Tetapi jika saya pergi ke "Aplikasi Startup", klik tambahkan dan ikuti instruksi ini tidak terjadi apa-apa ketika Komputer saya mulai. Saya masih harus menjalankan perintah itu secara manual. Dan itu tidak berhasil, ketika saya memasukkan /home/"username"/process_monitor.sh docky juga.

Saya menemukan, atau membuat solusi (yang belum diposting di suatu tempat) untuk mendapatkannya autostarted.

Alih-alih menggunakan ~ / process_monitor.sh docky membuat file teks baru:

  • gedit ~ / start.sh
  • ketik berikut

#! / bin / bash

~ / process_monitor.sh docky

selesai

  • Menyimpan file
  • Tetapkan izin:

chmod a + x ~ / start.sh

Sekarang Anda dapat menjalankan program di terminal / yakuake atau apa pun yang Anda suka gunakan:

~ / start.sh

dan itu akan memulai docky ~ / process_monitor.sh. Jadi itu akan memulai dan memulai kembali jika crash.

Anda dapat memilih nama yang Anda suka untuk "process_monitor.sh" dan "start.sh" saja .sh penting. Tapi pastikan untuk mengubahnya di file teks Anda juga.

Sekarang pergi ke Dash Anda, ketik dan buka "Aplikasi Startup".

  • Hapus yang lain ini mengatur pengaturan Startup Docky
  • Buat yang baru
  • Nama: Docky atau apa pun yang Anda ingin beri nama
  • Command: / home / "your username" /start.sh (untuk saya misalnya /home/kevin/startup.sh)
  • Komentar: Apa pun yang Anda suka.
  • Buka pengaturan Docky Anda dan nonaktifkan "Mulai saat masuk"

Sekarang Anda dapat me-restart Komputer Anda dan mengujinya.

Video tutorial

Kevin
sumber
Mengapa tidak membuat tautan (simbolis) saja process_monitor.sh? Tidak diperlukan pengeditan file atau perubahan izin.
David Foerster
apa maksudmu dengan tautan simbolik?
Kevin
Ini : ln -s process_monitor.sh start.shatauln -s ~/process_monitor.sh ~/Desktop/
David Foerster