Natukasi
@Natukasi

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

huponexitを有効にしたときの挙動

前提

LPIC101の資格勉強でhuponexitの挙動を確認しています

解決したいこと

huponexitを有効にして、ターミナルexit時にプロセス終了しない。
理解間違いがあったら指摘してほしい。

自分で試したこと

[linuxstudy@xxxx ~]$ shopt | grep hup
huponexit      	on
[linuxstudy@xxxx ~]$ ./sample.sh
^Z
[1]+  停止                  ./sample.sh
[linuxstudy@xxxx ~]$ bg %1
[1]+ ./sample.sh &
[linuxstudy@xxxx ~]$ ps -el | grep -e sample -e PID
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  27138  26832  0  80   0 - 28321 do_wai pts/1    00:00:00 sample.sh
[linuxstudy@xxxx ~]$ exit

exit後に別ターミナルを立ち上げてプロセスを確認。
プロセス(PID:27138)は残ったまま。
参考書にはプロセスが消えると書いています。

[linuxstudy@xxxx ~]$ ps -el | grep -e sample -e PID
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  27138      1  0  80   0 - 28321 do_wai ?        00:00:00 sample.sh
0

1Answer

bashならログインシェルでないのでは?

$ bash --login
$ shopt -s huponexit
$ sleep 10000&
[1] 12030
$ exit
ログアウト
$ ps -f -p 12030
UID          PID    PPID  C STIME TTY          TIME CMD
$
1Like

Comments

  1. @Natukasi

    Questioner

    @dameyodamedame
    ご回答をありがとうございます!!
    提示頂いたコードで実行したところプロセスが見事に消滅いたしました!!!
    centos7起動してgnomeからターミナルを起動しただけではloginになっていないということなんですかね。

  2. あまりいい資料が見つからなかったのですが、ログインがつくと、起動時にログインスクリプトが実行され、終了時対話シェルなら管理下のプロセスにHUPシグナルが送られます。

    huponexit
    If set, Bash will send SIGHUP to all jobs when an interactive login shell exits (see Signals).

    端末エミュレータ上の普通の対話シェルはログインシェルでないことも多いです。コンソールから直にログインしていたり、sshなどで接続している場合はログインシェルになっています。bashならshopt login_shellでログインシェルかどうか確認できます。

  3. @Natukasi

    Questioner

    追加情報をありかどうございます。ログインシェルか確認できるのですね。自分の環境で確認してみます。

Your answer might help someone💌