nohupしなかったプロセスをあとから。

[via] 一度 tty から起動したプロセス (csh/ksh 版)

subtech – Pink Blossom Diary StrikerS – 一度 tty から起動したプロセス

をバックグラウンドで動かしてシェルから抜けた後も動かし続けるにはどうしたらいいんだろ。時間がかかる処理を screen を起動させずフォアグラウンドで実行しちゃって ssh 切れてイヤン、ということが時々ある。

一度 C-z で suspend させてから切り離しさせることってできるのかしら。あと標準入出力の差し替えってできるのかしら。
追記

typoさん情報(thx!)に disown (bash/zsh 組み込み)でいけることを教えてもらった!あとは標準出力/エラー出力をどうにかできれば…。

disown知らなかった。いままでこういう状況になったときにはPC立ち上げっぱなしで帰ってました。
得てしてこれが必要になるときって終電に乗るかどうか気にしてる。

あと、

一度 tty から起動したプロセス (csh/ksh 版) – にぽたん研究所

元記事の人はbgした後シェルを抜ける状況をいっているんだとおもわれ。(t)csh なら bg で exit すればそのまま走りますけど、zsh だと

rock% perl -e ‘1 while 1’
^Z
zsh: suspended perl -e ‘1 while 1’
rock% bg
[1] + continued perl -e ‘1 while 1’
rock% exit
zsh: you have running jobs.
rock% exit
zsh: warning: 1 jobs SIGHUPed

で殺されちゃうので。

(t)cshならbgのプロセスは殺されないんだ。

こういうことって小さいようだけど、知ってると知らないの差は大きい。

コメント

  1. sugi より:

    zsh でも unsetopt hup するとログアウトの時に HUP 送らないですよ。

  2. yoshuki より:

    なるほど、zsh使ってるんですがそのオプションは知りませんでした。
    ありがとうございます。

タイトルとURLをコピーしました