
以下は、 と呼ばれるスクリプト内の基本的なコードの一部ですtest.sh
。
bash -c "sleep 10; echo \$(pidof unshare)" &
sudo unshare --mount --uts --ipc --net --pid --fork /bin/sh -c "
... do stuff ...
sleep 60
" &
PID=$!
スクリプトを実行すると、最初の行のバックグラウンド bash コマンドで識別されるプロセス ID と PID に割り当てられた値が異なります。さらに、ps
スクリプトで を実行しても、どちらのプロセス ID も表示されません。すべてをバックグラウンドで単一のプロセスとして実行するために、unshare にコードを誤って渡しているのではないかと思います。新しい名前空間でバックグラウンドで実行されているプロセスの実際の PID を取得するにはどうすればよいですか。