次のtest.sh
スクリプトを実行してください。
#!/bin/bash
sleep 15 & sleep 2000
次に、View Running Processesを使用して$ ps auxfwww | grep -i [2]000 -B 10
次の情報11886
と11887
PIDを取得します。
user 7070 0.0 0.0 4504 1444 ? Ss Nov15 0:00 \_ /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc
user 7081 0.0 0.0 324540 14064 ? Sl Nov15 0:00 | \_ xfce4-session
user 7100 0.0 0.3 562128 62800 ? Sl Nov15 0:48 | \_ tilix
user 23644 0.0 0.0 31132 6136 pts/11 Ss 14:32 0:00 | | \_ /bin/bash
user 11884 0.0 0.0 20024 3044 pts/11 S+ 14:58 0:00 | | | \_ /bin/bash ./test.sh
user 11886 0.0 0.0 14776 700 pts/11 S+ 14:58 0:00 | | | \_ sleep 15
user 11887 0.0 0.0 14776 704 pts/11 S+ 14:58 0:00 | | | \_ sleep 2000
sleep 2000
親プロセスから完全に独立してコマンドを実行できますか?たとえば、
user 7070 0.0 0.0 4504 1444 ? Ss Nov15 0:00 \_ /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc
user 7081 0.0 0.0 324540 14064 ? Sl Nov15 0:00 | \_ xfce4-session
user 7100 0.0 0.3 562128 62800 ? Sl Nov15 0:48 | | \_ tilix
user 23644 0.0 0.0 31132 6136 pts/11 Ss 14:32 0:00 | | | \_ /bin/bash
user 11884 0.0 0.0 20024 3044 pts/11 S+ 14:58 0:00 | | | | \_ /bin/bash ./test.sh
user 11886 0.0 0.0 14776 700 pts/11 S+ 14:58 0:00 | | | | \_ sleep 15
user XXXXX 0.0 0.0 XXXXX XXX XXXXXX S+ XX:XX 0:00 \_ sleep 2000
ベストアンサー1
はい、可能です。
ここで望むのは、プロセスを再び親化することです。元の親プロセスが終了すると、UnixはプロセスをPID 1にリセットします。
だからあなたがすべきことはオリジナルエクスポートの親ですsleep 2000
。
sleep 2000
サブシェルから背景を起動すると、これを行うことができます。
それは次のとおりです。
#!/bin/bash
sleep 15 &
( sleep 2000 & )
# do something else here, like:
sleep 1
echo "=== Listing 'sleep' process tree: ==="
ps auxfwww | grep -i [2]000 -B 10
echo "=== All done. ===