3

特定のタスクのpidを見つけるための最良かつ最も効率的な方法は何ですか。言う:

ps -ef | grep "\/usr\/sbin\/watchdog" | cut -d" " -f2

同じものを見つけるためのより効率的な方法はありますか?アプリケーションからウォッチドッグプロセスを強制終了したい。システムコマンドを使って同じことをすることを考えています。

system("kill -9 `ps -ef | grep "\/usr\/sbin\/watchdog" | cut -d" " -f2`);

同じことを行うためのより最適化された方法はありますか?

4

6 に答える 6

3

あなたが使用することができますpidof

kill -9 `pidof <your application name>`

アプリケーション名は/usr/ sbin/watchdogである可能性があります

于 2011-07-19T09:50:21.180 に答える
2

多分これは理想的な世界の解決策です...

ウォッチドッグ PID を取得するには、ファイルを開くだけです'/var/run/watchdog.pid'

プロセスの PID がわかったら、プロセスを強制終了する最善の方法は、関数を呼び出すのではなく、UNIX API'system'の関数を呼び出すことです。'kill'

#include <sys/types.h>
#include <signal.h>

int
kill(pid_t pid, int sig);

これにより、新しいプロセスの生成が回避されます。

ファイル'/var/run/watchdog.pid'が存在しない場合は、system/kill/pidof に戻すことができます。

于 2011-07-20T10:08:24.457 に答える
1

現在のユーザーが所有するすべてのプロセスを表示するには、ps uxと入力し、returnキーを押します。

$ ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
jhaas 3064 0.1 3.6 18324 9088 ? S 17:55 0:00 /usr/bin/gnome-session
jhaas 3107 0.0 0.3 3128 968 ? S 17:55 0:00 /usr/bin/ssh-agent /etc/X11/xinit/Xclients
....

ここで、たとえばemacsプロセスを終了する場合は、上記の表(3216)でプロセス識別子(PID)を検索し、次のように言います。

$ kill -9 3216

ソース: http: //linux.about.com/library/cmd/blcmdl_kill.htm

于 2011-07-19T09:28:25.967 に答える
1

でサブディレクトリを繰り返し処理して、強制終了/procするプロセスを見つける必要があります。次に、を使用しますkill(2)

于 2011-07-19T09:29:31.087 に答える
1

見てください:http://linux.die.net/man/5/proc

/procファイルシステムを検索して、/proc/$(PIC)/exeを指すリンクを見つけることができます/usr/sbin/watchdog

あなたがそれだけでpidを取得したらkill(男2キルを参照)

于 2011-07-19T09:29:45.350 に答える
0

pgrep特に正規表現を使用してプロセス名と照合する場合は、実際には非常に便利です。これはprocpsパッケージの一部であり、どの Linux システムにも既にインストールされている必要があります (ps同じパッケージ内にあります)。使用例を次に示します。

psychotic@bismuth ~ $ pgrep 'fire.*'
2902
2903
2904
6979
psychotic@bismuth ~ $ pgrep -l 'fire.*'
2902 firegl
2903 firegl
2904 firegl
6979 firefox-bin
于 2011-07-20T09:31:17.023 に答える