GNU/Linux >> Linux の 問題 >  >> Linux

プロセスの pid を取得し、シェル スクリプトで kill -9 を呼び出す方法は?

初めに; "kill -9" は最後の手段です。

kill を使用できます プロセスにさまざまなシグナルを送信するコマンド。 kill によって送信されるデフォルトのシグナル 15 です (SIGTERM と呼ばれます)。プロセスは通常、このシグナルをキャッチし、クリーンアップしてから終了します。 SIGKILL シグナルを送信すると (-9 ) プロセスはただちに終了するしかありません。これにより、ファイルが破損し、プロセスを再起動したときに問題を引き起こす可能性のある状態ファイルと開いたソケットが残る可能性があります。 -9 プロセスはシグナルを無視できません。

これは私がそれを行う方法です:

#!/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 システムにインストールされていれば動作するはずです。

man pidof 言います:

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

編集:

アプリケーションには command substitution を使用できます :

kill -9 $(pidof gld_http)

@arnefm が述べたように、kill -9 最後の手段として使用してください。


Linux
  1. Unix / Linux でプロセスのパスを取得するにはどうすればよいですか

  2. シェルで PYTHONPATH を取得するには?

  3. nohupプロセスを強制終了するプロセスIDを取得するには?

  1. シェルスクリプトでフォークされた子プロセスから PID を取得する方法

  2. プロセス名でPIDを取得するには?

  3. bashスクリプトでpythonスクリプトを強制終了する方法

  1. Linuxでゾンビプロセスを見つけて殺す方法

  2. 簡単なシェルスクリプトで配布名とバージョン番号を取得するにはどうすればよいですか?

  3. 開始したばかりのプロセスのpidを取得する方法