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