次のようなシェルスクリプトが必要です。
my-app &
echo $my-app-pid
しかし、実行したばかりのコマンドのPIDを取得する方法がわかりません。
jobs -p my-app
コマンドでpidをgrepします。しかし、シェルを複数回実行したい場合、このメソッドは機能しません。 jobspecがあいまいだからです。
最後に実行されたコマンドのPIDは $!
シェル変数:
my-app &
echo $!
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)"
のようなものを試してください
pidof my_app >> /tmp/my_app.pid
このためにpkillを使用することもできます。pkillを使用すると、プロセス名を指定するだけで、pidを取得する必要がなくなります。