マシンで実行中のプロセスを強制終了するには、ローカルプロセス(またはカーネル)が強制終了シグナルを発信する必要があります。そのため、プロセスにそのシグナルを発行させる方法が必要です。また、新しいプロセスを作成できないため、すでに実行中のプロセスのみに依存する方法を見つける必要があります。
そこで役立つ標準のデーモンはありません。彼らはすべてあなたの認証を処理し、それからあなたとして実行されている新しいプロセス(シェルなど)をフォークします。したがって、コンソールにアクセスできず、マシンとの既存の対話がない場合、運が悪いです。
あなたのコメントから、まだマシン上にシェルがあるように聞こえます。次に、できることがあります。あなたのような、任意の外部プロセスを実行することはできませんls
かps
。しかし、あなたのような組み込みコマンドを実行することができecho
、read
およびkill
(kill
すべてのシェルに内蔵、それは、そのようなbashのやzshのようジョブ制御をサポートするすべてのシェル、1つであるされていません)。
各プロセスには、次のディレクトリが関連付けられています/proc
:/proc/12345
12345はプロセスIDです。したがって、を探索することでexisingについての情報を得ることができます/proc
。echo
ここでは、ワイルドカードを使用すると便利です。たとえばcd /proc; echo [0-9]*
、実行中のすべてのプロセスのプロセスIDを表示します。シェルがzshの場合、glob修飾子で多くのことができます。たとえばecho /proc/*(u$UID)
、ユーザーIDで実行されているプロセスのみが表示されます。
フォークせずにファイルの内容を表示する方法は
while read -r line; do
echo "$line"
done </path/to/file
すべてをに渡すことで、一度に多くのプロセスを強制終了できkill
ます。あなたのデーモンに属しているプロセスを特定した場合、とそのプロセスグループを殺害しようとしkill -9 -PGID
た場合PGID
、グループリーダーのプロセスIDです。プロセス123のプロセスグループIDはで見つけることができます</proc/123/stat read pid tcomm state ppid pgrp sid more; echo $pgrp
。(同じ情報がより読みやすい形式で存在しますが、それ/proc/123/
を読むのに適した状態ではありません。)次のコマンドを使用して、すべてのプロセス(発信元のシェルを含む)
trap : NUM
kill -NUM -1
KILL
(9)以外のNUMの値を選択して、trap
コマンドがシェルにシグナルを無視させるようにします(KILL
トラップできません)。