Ubuntu18 上使用 nohup 执行脚本发现如果将输出定向到一个文件,无法输出内容。
但如果直接运行,终端输出正常。

python3 filename.py > runlog.out	# no output
python3 filename.py					# normal output

检查文件输出定向,挂起运行后找到到对应的PID,进入/proc/{PID}/fd目录查看文件的输出定向:
查看文件输出定向
发现正常。
在脚本输出后加入

sys.stdout.flush()

发现再挂起时输出到文件成功,找到问题。

执行时加入-u参数:

python3 -u filename.py > runlog.out

-u参数可以强制使标准输出不经过缓冲区,直接输出到屏幕上。
或者可以在每次输出后在脚本内手动刷新缓冲区(如上文),也可以解决这个问题。

It looks like you need to flush stdout periodically (e.g. sys.stdout.flush()). In my testing Python doesn't automatically do this even with print until the program exits. You can run Python with the -u flag to avoid output buffering 解决办法之一:加-u nohup python -u Bilstm-My-Exp-Char.py --train python文件可以直接使用命令python  xxx.py来启动文件,但是这样会有一个弊端,就是关闭ssh连接,python文件就会自动的进行停止。 所以需要使用利用nohup来开启python文件nohup python webSocketFlashServer_inner.py --fork 因为nohup是不中断的意思,也就是ssh终端关闭以后,不会自动停止。 如果出现appe It looks like you need to flush stdout periodically (e.g. sys.stdout.flush()). In my testing Python doesn't automatically do this even with print until the program exits. You can run Python wit nphup 用法总结代码示例nohup指令2>&1 错误内容重定向到标准输出& 后台运行若不指定输出文件名,默认会在当前目录生成nphup.out文件可能存在的问题原因Reference 运行python程序 – my.py脚本 nohup python my.py >> my.log 2>&1 & nohup pyt... 以前只知道使用nohup可以让一个程序后台执行,但是生成的日志文件都放到nohup.out中了,不能自己指定,尤其是在同一个目录下我需要让两个甚至多个程序都要后台执行,这样看日志就比较麻烦了,如何可以指定重定向文件呢,小查了一下 以前后台执行a.sh,我是这样写 nohup sh a.sh &  这样就自动将生成的日志写到nohup.out中了,如果重定向候,以为直接是 nohup liunx screen使用今天因工作需要使用到screen工具,感觉挺有意思,记录一下GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。会话恢复只要Screen本身没有终止,在其内部运行的会话都可以... 牛客网&赛码网 输入输出格式 python&C++ Note: 你的程序需要stdin(标准输入)读取输入,然后stdout(标准输出)来打印结果,举个例子,你可以使用c语言的scanf或者c++的cin来读取输入,然后使用c语言的printf或者c++的cout来输出结果。 一次处理多个case,所以代码需要循环处理,一般通过while循环来出来多个case。 以下例子为空格隔开,使用cin、cout读入读出。赛码网与牛客网一致。 1)单行输入 #include<iostre nohup /opt/servers/hive-1.2.1/bin/hive --service metastore 2>&1> /dev/null & nohup /opt/servers/hive-1.2.1/bin/hive --service hiveserver2 2>&1> /dev/null & 改为以下: nohup /opt/module/hive/bin/hive --service metastore >/dev/null 1. shell 环境变量 执行 export PYTHONUNBUFFERED=1, 那么再此shell下源码执行nohup python xx.py & 将不再将日志刷新到缓冲区而是直接输出nohup.out 2. python -u nohup python -u xx.py & , 日志将直接输出nohup.out ,不走缓冲区 如果... 0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。 在一般使用,默认的是标准输出,既1.当我们需要特殊用途,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:./program 2&gt;log...     使用nuhup来后台运行python程序发现,尽管已经将输出重定向文件中,但是文件中并没有任何输出内容。 nohup python hello.py > output.log&     这个问题应该是由于输出内容到暂存到缓冲区中,没有及输出写进文件,解决方式有两个: 在命令行运行python加入-u参数 nohup python -u hello.py > output.log& 在python程序中加入下面的语句 sys.stdout.