sudoは子プロセスを作る
とあるコマンドをsudo経由で実行したらpsで2つプロセスが見えた。
単純化した実行例:
$ sudo sleep 300 &
[1] 26061
$
$ ps -ef | grep [s]leep
root 26061 18849 0 18:44 pts/1 00:00:00 sudo sleep 300
root 26066 26061 0 18:44 pts/1 00:00:00 sleep 300
$
sudoのman pageにしっかり書いてあった。
https://linuxjm.osdn.jp/html/sudo/man8/sudo.8.html
sudo は、コマンドを実行するとき、まず fork(2) を呼び、 実行環境を上記のように設定してから、子プロセスで execve システムコールを呼び出す。 メインの sudo プロセスは、コマンドが完了するまで wait し、完了したら、 コマンドの終了ステータスをセキュリティポリシーの close 関数に渡してから、 終了する。