回答:
Bashを使用している場合は、実行できます disown -h job
disown [-ar] [-h] [jobspec ...]
オプションがない場合、各jobspecはアクティブなジョブのテーブルから削除されます。場合は
-h
オプションが指定され、ジョブがテーブルから削除されていませんが、シェルがSIGHUPを受信した場合にSIGHUPがジョブに送信されないようにマークされています。jobspecが存在せず、-a
nor-r
オプションも指定されていない場合、現在のジョブが使用されます。jobspecが指定されていない場合、-a
オプションはすべてのジョブを削除またはマークすることを意味します。-r
jobspec引数なしのオプションは、実行中のジョブに操作を制限します。
disown %1
、あなただけの使用ここで、1は、ジョブ仕様であれば、FGやBGとは異なり、bg 1
serverwatch.com/tutorials/article.php/3935306/...
レプティルを使用
READMEから:
reptyr - A tool for "re-ptying" programs.
-----------------------------------------
reptyr is a utility for taking an existing running program and
attaching it to a new terminal. Started a long-running process over
ssh, but have to leave and don't want to interrupt it? Just start a
screen, use reptyr to grab it, and then kill the ssh session and head
on home.
USAGE
-----
reptyr PID
"reptyr PID" will grab the process with id PID and attach it to your
current terminal.
After attaching, the process will take input from and write output to
the new terminal, including ^C and ^Z. (Unfortunately, if you
background it, you will still have to run "bg" or "fg" in the old
terminal. This is likely impossible to fix in a reasonable way without
patching your shell.)
著者によるいくつかのブログ投稿:
あるttyから現在のttyにプロセスを盗むには、このハックを試してみてください:
http://www.ucc.asn.au/~dagobah/things/grab.c
現在のLinux / glibcバージョンにコンパイルするには、再フォーマットが必要ですが、それでも動作します。
プロセスが開始されると、STDIN、STDOUT、およびSTDERRが何かに接続されます。通常、コマンドを開始すると変更できません。あなたが説明している場合、それはおそらくsshセッションに関連付けられたttyです。nohupはほとんど何もしません...
command < /dev/null > nohup.out 2>&1
つまり、STDINを/ dev / nullに、STDOUTをファイルに、STDERRをSTDOUTに設定します。Screenは、それ自体に直接アクセスするttyのセットアップを含む、はるかに高度なことを行います。
実行中のプロセスを遡及的にnohupまたはスクリーニングする方法は知りません。/ proc / $ pid / fdにcdして、0、1、および2が指すものを確認した場合。
プロセスがSTDIN、STDOUT、またはSTDERRで何かを行おうとする場合はそうではありませんが、disownで多少の幸運があるかもしれません。
Cryopidは、プロセスをファイルにフリーズするgrab.cの作成者によるさらなる開発であり、それを(画面内で)実行してプロセスを再開します。
画面部分の理由なしに、単純な「いいえ」のみを提供することができます。自分自身の理由に興味があります。
ただしdisown
、試してみましたか(bashビルトイン)
~ $ echo $SHELL
/bin/bash
~ $ type disown
disown is a shell builtin
~ $ help disown
disown: disown [-h] [-ar] [jobspec ...]
By default, removes each JOBSPEC argument from the table of active jobs.
If the -h option is given, the job is not removed from the table, but is
marked so that SIGHUP is not sent to the job if the shell receives a
SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all
jobs from the job table; the -r option means to remove only running jobs.
Solaris / OpenSolarisのnohupには、実行中のプロセスをnohupするための-pフラグがあります。たとえば、Solaris 10 nohupのマニュアルページを参照してください。
私はおそらくこれを考えていないので、私を自由に修正してください(私はすでに否認について知っています!)...少なくともプロセスをバックグラウンドで実行させるためにctrl-Zと「bg」は機能しませんか?それとも、実行中にSTDOUTを見たいという重要な問題ですか?
プロセス出力をgdbでファイルにリダイレクトできます
https://blog-en.openalfa.com/how-to-detach-from-the-terminal-a-running-process-in-linux
そしてそれを否認する
Upd:Ubuntu 18.04でsudoと少し異なるgdbコマンドを使用してgdbを実行する必要がありました。
p (int)dup2(open("/tmp/test.stdout", 1), 1)
私が使用したいnohup
開始する(または類似の)links
複雑な認証プロセスでASP.NETのWebサイトからファイルや仕事を使用することが困難になる隠されたビューステートの多くをダウンロードするには、コマンドラインのブラウザをした後、それに接続しますとcurl
/ wget
。
私は最終的に使用tmux
することになり、それは仕事をうまく解決しました:
tmux
links
私の場合)、実行したままにしますtmux attach
してアプリを画面に戻します
disown
。blogs.oracle.com/ksplice/entry/disown_zombie_children_and_the