スクリプトのpkill

スクリプトのpkill

スクリプトで彼の名前でプロセスを終了しようとしています。

プロセス:

toto 15408     1  0 Nov13 ?        00:20:36 java -Xmx512m -XX:MaxPermSize=128m -cp /local/toto//conf/:/local/toto//lib/* com.toto.main.entry.Launchtoto processToto

私のスクリプトでは:

/usr/bin/sudo -u toto /usr/bin/pkill -9 -f $pname

sudoersから:

script_user server1=(toto) NOPASSWD: /usr/bin/pkill -9 -f java *

これはうまくいきません。 sudoエラー(sudo: no tty present and no askpass program specified)またはpkillエラー()があります/usr/bin/pkill: invalid option -- 'X'

pname含む:

java -Xmx512m -XX:MaxPermSize=128m -cp /local/toto//conf/:/local/toto//lib/* com.toto.main.entry.Launchtoto processToto

ベストアンサー1

二重引用符の外で変数置換を使用しました。これをしないでください。引用符がないため、値は$pname空白文字に分割されるため、パラメータ、、、、、、、、、、、pkill-9取得します。理解できないオプションに達すると、自然に文句を言うでしょう。-fjava-Xmx512m-XX:MaxPermSize=128m-cp/local/toto//conf/:/local/toto//lib/*com.toto.main.entry.LaunchtotoprocessTotopkill-X

pnameパラメータに値を渡すだけですpkill。つまり、

/usr/bin/sudo -u toto /usr/bin/pkill -9 -f "$pname"

sudoパスワードプロンプトの場合、私の修正ビーズはその項目を同じユーザー以外のNOPASSWD項目の前に置いたことを知らせます。NOPASSWDこのNOPASSWD項目は最後の項目でなければなりません。バラよりパスワードを要求せずにルートで特定のプログラムをどのように実行できますか?

おすすめ記事