工具随笔:nohup命令使程序在后台运行
nohup 命令
nohup 可以让程序在后台运行并且不会因为关闭终端而中断:
nohup command > output.log 2>&1 &
command:例如python test.py、bash test.sh等命令> output.log:将标准输出重定向到 output.log。2>&1:将标准错误重定向到标准输出。&:使程序在后台运行。
可以通过查看 output.log 文件的内容来确认程序的输出。
在 Linux 和类 Unix 系统中,2>&1 是一种重定向符号,用于将标准错误输出重定向到标准输出
以下是详细的解释:
三个文件描述符 0,1,2
-
标准输入,文件描述符编号为 0,通常对应终端的输入,用于从键盘或其他输入设备读取数据。
-
标准输出,文件描述符编号为 1,默认输出到终端,用于输出正常信息。
-
标准错误,文件描述符编号为 2,默认也输出到终端,用于输出错误信息。
重定向符号 >
> 是将输出重定向到文件或其他目标,下面举几个例子:
# command > file 将 command 执行后的标准输出写入 file
# 举例: 将 heavy_file.txt 的前五条写入到 light_file 中
head -n 5 heavy_file.txt > light_file.txt
# 2 > file 将标准错误重定向到file中
# 举例: 将错误输出写入到 error.log 中( command仅作举例
command 2 > error.log
2>&1 的含义
- 2> 表示重定向标准错误(文件描述符 2)。
- &1 & 表示引用一个文件描述符,可以理解为取 文件描述符 1 的“地址”
重定向操作是按顺序执行的,顺序非常重要:
- 错误的用法:
python test.py 2>&1 > file.log
先将标准错误重定向到当前的标准输出,然后标准输出重定向到 file.log。
结果错误:标准输出写入文件,但标准错误仍输出到终端。
- 正确的用法:
python test.py > file.log 2>&1
先重定向标准输出到 file.log,然后将标准错误重定向到标准输出的目标。

浙公网安备 33010602011771号