しばらく前に我々は発見した。pkill
プロセスを完全に整理するために、setuid(root用)スクリプトでこれを使い始めます。これにより、重要でない権限の制限により、一部のクライアントがスクリプトを使用して一般リソースを削除できない愚かなメンテナンス作業が大幅に削減されます。
しかし、少しの努力の後、私たちはちょうど考えましたpkill -v -u root <name>
(これまでは単純さを保ち、背中を使って長くて見苦しいスクリプトに進化するのを防ぐことを試みましたsed
)awk
。grep
もちろん動作しません。指定された名前と一致するプロセスを除くすべてのプロセスを終了します。
pkill
必要な結果を提供するこのコマンドの簡単な修正版はありますか?
PS:ユーザーに一種のルート権限を与える倫理についての議論は避けたいと思います。
実行中のオペレーティングシステムはSolaris 10(利用可能な場合)です。
ベストアンサー1
これは、指定された名前を持つプロセスのリストとルートとして実行される特定の名前のプロセスのリストを作成し、2番目のリストにない最初のリストからcomm
プロセスを見つけて終了します。
#!/bin/ksh
if test $# != 1
then
echo usage: "$0" processname
exit 1
fi
pname="$1"
kill $(comm -23 <(pgrep "$pname"|sort -n) <(pgrep -u root "$pname"|sort -n))