SSHで最後のバックグラウンドプロセスのPIDを取得する方法

SSHで最後のバックグラウンドプロセスのPIDを取得する方法

私のシェルスクリプトはSSHを介して実行されます。

ssh -i mycert.pem [email protected] <<SSHBLOCK
pm2 logs --lines 100 &
pid=$!
sleep 3
kill $pid
SSHBLOCK

スクリプトはローカルサーバーで期待どおりに動作します(sshblockにラップされていません)。ただし、リモートサーバーからログを取得する必要がある場合、$ pidは空です。なぜ$!上記のSSHBLOCKで使用すると空ですか?

ベストアンサー1

変数をリモートで拡張するには、引用符 ''またはエスケープ\を使用する必要があります。したがって、ここで文書を使用する<<'SSHBLOCK'か、<<\SSHBLOCK

おすすめ記事