これは私のスクリプトです。
$ cat count_tomcat.sh
ps -ef | grep tomcat| wc -l
$ ./count_tomcat.sh
2
これwatch
でコマンドを使用すると、他の結果が表示されます。
$ watch ./count_tomcat.sh
Every 2.0s: ./count_tomcat.sh Fri Oct 15 16:50:43 2021
5
ベストアンサー1
速く走る:
watch -x pgrep -c -f tomcat
定期的にコマンドラインにインクルードをインポートしますtomcat
。
または
watch -x pgrep -c -x tomcat
ps -e
名前によるプロセスに関する情報(コマンドラインではない、wrt出力のようにps -ef
)はいスコー洋。
または:
watch -x pgrep -c -u tomcat
ユーザーとして実行されるプロセスの数(一致する出力列がtomcat
わからないため)。ps -ef
の場合、-x
少なくともprocps-ng
実装のためにwatch
シェル実行をスキップし、代わりにコマンドを直接実行します。
pgrep -f tomcat
(コマンドラインに含まれていても)それ自体は報告しませんが、コマンドを計算してtomcat
コマンドに追加しません。これは、実装が最後のコマンドの分岐を最適化しない場合にコマンドラインを解析するために呼び出すことができます。 。watch
-x
watch
sh -c 'pgrep -f tomcat'
watch
sh
watch -x pgrep -cf '[t]omcat'
[t]omcat
パターン自体が一致しないため、この状況を回避できます。
(そうでない場合は、-x
次のようにする必要があります。
watch 'pgrep -cf "[t]omcat"'
同様にシェルはワイルドカードなので、シェルと[x]
実行中のシェルの両方でwatch
エスケープする必要があります。)
vi tomcat.conf
もちろん、実行中のプロセスやatomcatalog
。コマンドラインベースの一致プロセスは非常に脆弱です。pgrep
より多くのオプションを追加して、フィルタを具体化し、誤ったプロセスを識別するリスクを制限することができます。
最新のLinuxシステムでは、制御グループに依存するか、その情報を照会できる必要がありますsystemd
(tomcat
サービスとして正しく設定されている場合)。