将nohupredirect到stdout

是否有可能让一个进程开始nohup,写入标准输出,而不是在一个文件? 或者可能在文件和屏幕上?

nohup python start.py & 

写到nohup.out ,但我想它输出到屏幕上,nohup只是当连接中断时的对冲。

    man nohup

    如果标准input是terminal,则从/ dev / nullredirect它。 如果标准输出是一个terminal,如果可能的话,将输出附加到nohup.out ,否则$HOME/nohup.out 。 如果标准错误是terminal,则将其redirect到标准输出。 要将输出保存到FILE,请使用nohup COMMAND > FILE

    (根据意见完全修改)
    当退出一个shell或closures一个terminal时,subprocess将被发送SIGHUP(挂断,这个名字源于terminal将拨入UNIX计算机的时间)告诉他们terminal不再连接。 另外,当shell进程结束时,subprocess的stdin,stdout和stderrstream将被closures。 通常这会导致subprocess死亡。 通常这是一件好事,因为它避免了在没有用户的情况下运行。

    nohup程序的目的是在shell终止和terminal断开之后保持进程正常运行。 因此,将其输出导向terminal完全违背了目的。 我原来的回答( nohup COMMAND | cat )并没有什么帮助,因为:当terminalclosures时,cat的输出被closures,所以猫死了,这会中断pipe道并发送一个SIGPIPE给nohup进程,导致它死亡。 我没有想到目的就回答了这个问题。

    为了实现你的目的,运行nohup COMMAND > FILE来select文件的名字来直接输出。 然后使用tail -f FILE来观察terminal上的输出。

    同样,可以使用下面的shell结构: COMMAND >FILE 2>&1 </dev/null &运行一个命令,其stdiostream没有连接到terminal,并且可以在terminalclosures后继续运行。 另外,在zsh中,运行shell-builtin disown告诉zsh离开进程,而不是在shell结束时将其杀死。

    1. nohup python start.py & tail -f nohup.out tail -f可以被杀死并随意重启。

    2. screen python start.pyscreen python start.py /重新连接screen python start.py