13

これは私が今bashスクリプトに持っているものです:

ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9

これに伴う問題は、他の誰かがログインしてGlassfishに関連するものをプルすると、そのPIDもプルすることです。したがって、間違ったPIDを強制終了することになります。

だから私の質問は、正しいPIDをプルするだけでよいものを修正する方法と、glassfishが生成するPIDファイルからPIDをプルするように書き換える方法です。

4

2 に答える 2

17

プロセスを開始する行の直後の行に、glassfish を開始するスクリプトを編集し、次のようなものを配置しますecho $$ > /path/to/PID-file(これには~、ホーム ディレクトリまたはユーザー固有にするような他のメカニズムを含めることができます)。$USER次に、を使用して正しいプロセスを強制終了できますkill $(cat /path/to/PID-file)

于 2012-07-26T15:30:37.013 に答える
0
ps aux | grep ^$USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9

以下ではスイッチを間違えたpsので、上記のgrepは問題ないはずです。


ああ、それは機能していません。このpsように使用できますps -ao pid,tty,comm -u $USER。上記のこのgrepは問題ないはずです...

他の誰かがログインしている...

その場合は、スイッチ -u を追加します

ps aux -u $USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9

$USER は、選択されて一覧表示されるユーザー名です。既定では、OS 環境で既に設定されている必要があります。複数のユーザーをカンマで選択できますps aux -u root,$USER

注意:システムに特定のユーザー名がない場合、ps はERROR: User name does not exist をスローします。

詳細をお読みくださいman ps

-u userlist 実効ユーザー ID (EUID) または名前で選択します。これにより、有効なユーザー名または ID が userlist にあるプロセスが選択されます。有効なユーザー ID は、プロセスによって使用されるファイル アクセス許可を持つユーザーを表します (geteuid(2) を参照)。U および --user と同じです。

于 2012-07-30T20:12:18.780 に答える