GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendapatkan pid dari suatu proses dan mengaktifkan kill -9 di skrip Shell?

Pertama; "kill -9" harus menjadi pilihan terakhir.

Anda dapat menggunakan kill perintah untuk mengirim sinyal yang berbeda ke suatu proses. Sinyal default dikirim oleh kill adalah 15 (disebut SIGTERM). Proses biasanya menangkap sinyal ini, membersihkan dan kemudian keluar. Saat Anda mengirim sinyal SIGKILL (-9 ) suatu proses tidak punya pilihan selain segera keluar. Ini dapat menyebabkan file rusak dan meninggalkan file status dan soket terbuka yang dapat menyebabkan masalah saat Anda memulai ulang proses. -9 sinyal tidak dapat diabaikan oleh suatu proses.

Inilah cara saya melakukannya:

#!/bin/bash

# Getting the PID of the process
PID=`pgrep gld_http`

# Number of seconds to wait before using "kill -9"
WAIT_SECONDS=10

# Counter to keep count of how many seconds have passed
count=0

while kill $PID > /dev/null
do
    # Wait for one second
    sleep 1
    # Increment the second counter
    ((count++))

    # Has the process been killed? If so, exit the loop.
    if ! ps -p $PID > /dev/null ; then
        break
    fi

    # Have we exceeded $WAIT_SECONDS? If so, kill the process with "kill -9"
    # and exit the loop
    if [ $count -gt $WAIT_SECONDS ]; then
        kill -9 $PID
        break
    fi
done
echo "Process has been killed after $count seconds."

pidof gld_http harus bekerja jika diinstal pada sistem Anda.

man pidof mengatakan:

Pidof  finds  the process id’s (pids) of the named programs. It prints those id’s on the standard output.

EDIT:

Untuk aplikasi Anda, Anda dapat menggunakan command substitution :

kill -9 $(pidof gld_http)

Seperti yang disebutkan @arnefm, kill -9 harus digunakan sebagai upaya terakhir.


Linux
  1. Bagaimana cara mendapatkan nama cabang git saat ini menjadi variabel dalam skrip Shell?

  2. Bagaimana cara mendapatkan PYTHONPATH di shell?

  3. Bagaimana cara mendapatkan ID proses untuk mematikan proses nohup?

  1. Cara mendapatkan PID dari proses anak bercabang di skrip Shell

  2. Bagaimana cara mendapatkan PID dengan nama proses?

  3. Cara membunuh skrip python dengan skrip bash

  1. Cara Menemukan dan Membunuh Proses Zombie di Linux

  2. Bagaimana agar hanya pengguna, pid dan perintah yang dijalankan untuk proses tertentu? (Ubuntu 11.10)

  3. Cara mendapatkan pid dari proses yang baru saja dimulai