Bash シェルのバックグラウンド プロセスで異なる動作が見られる理由を知りたい
ケース 1: Putty(SSH) を使用して Unix サーバーにログインした場合
- デフォルトでは csh シェルを使用します
- bashシェルに変更しました
- 型付きスリープ 2000 &
- エンターを押す
それは私に仕事番号を与えました。パテ ウィンドウで [x] をクリックしてセッションを強制終了しました。別のセッションを開き、プロセスを検索しようとしましたが、プロセスが強制終了しました。
ケース 2: ケース 1: Putty(SSH) を使用して Unix サーバーにログイン デフォルトでは csh シェルを使用
- bashシェルに変更しました
- vi mysleep.sh
- sleep 2000 & 保存された mysleep.sh
- ./mysleep.sh
ここでの違いは..スリープコマンドを直接実行する代わりに、スリープコマンドをファイルに保存してファイルを実行しています。
パテ ウィンドウで [x] をクリックしてセッションを強制終了しました。別のセッションを開き、プロセスを検索しようとしました。プロセスはまだ存在します。
なぜこれが起こっているのか分かりません。ログアウトした後でもプロセスを実行するには、bashでdisownを行う必要があると思いました。
親プロセスIDに見られる1つの違い..2番目のケース..スリープ2000の親プロセスIDは1になります.mysleep.shのプロセスが終了するとすぐに、カーネルが親プロセスを1に割り当てたように見えます.