次のシェルスクリプトが必要です。
my-app &
echo $my-app-pid
しかし、先ほど実行したコマンドのpidを取得する方法がわかりません。
私はjobs -p my-app
コマンドを使用してpidをgrepできることを知っています。ただし、シェルを複数回実行したい場合、この方法は機能しません。なぜなら作業仕様あいまいだ
答え1
最後に実行されたコマンドのPIDは、次の場所にあります。$!
シェル変数:
my-app &
echo $!
答え2
取得PID
:
#!/bin/bash
my-app &
echo $!
PID
変数に保存:
#!/bin/bash
my-app &
export APP_PID=$!
すべてのインスタンスをPID
テキストファイルに保存します。
#!/bin/bash
my-app &
echo $! >>/tmp/my-app.pid
出力、エラーをPID
別々のファイルとして保存:
#!/bin/bash
my-app >/tmp/my-app.log 2>/tmp/my-app.error.log &
echo $! >>/tmp/my-app.pid
echo "my-app PID's: $(cat /tmp/my-app.pid)"
答え3
次のことを試してください
pidof my_app >> /tmp/my_app.pid
答え4
次のようにしてみてください。
ps ef | grep "[m]y-app" | awk '{print $2}'
プロセスの最初の文字を間に入れると、そのプロセスはリストに追加され[
]
ません。grep
必要に応じてユーザー名をgrepすることもできます。