関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。たまに忘れてて、このエラーにハマるときがあるのでついでなのでここにメモメモ。。。
pkill や pgrepコマンドってプロセスを落とすときによく利用しますよね。
んで、たまにちゃんと指定しているのにプロセスが見つからないってエラーが出たりするときがあります。該当プロセスは確実に存在しているのにです。
そういうときは、プロセス名の文字数をチェックしましょう。
-fオプションを付与していない場合は15文字までしかマッチ対象になりません。
サンプルで作っているアプリとかだと app1とかtmp3みたいな名前で動かしたりすることが多いので、ほぼこの現象にはヒットしません。
実務とかだと、なぜかとても長いプロセス名を設計する人とかがいたりします。
なので、プロセス名が15文字よりも多い場合は -f オプションを付与して実行しましょう。
-fオプションが付与されていない場合は/proc/pid/statを参照するのでTASK_COMM_LEN定数の値、つまり終端込で16となります-fオプションが付与されている場合は/proc/pid/cmdlineを参照してマッチするかどうかを見てくれます
結構、スクリプトとか組んでて複数のプロセスを一括で探してkillするときとかに何故かエラー出るやつが出たりして焦るんですよね。こういうの。
面倒な場合は、常に -f オプションを付与するって覚えておけば大体大丈夫です。
たまに -f オプションを付与していると駄目な場合は -x オプションも使えます。
参考情報
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。