Linux nohup …… &命令
使用场景:正常运行一个程序,想在后台运行并且在退出Linux账户的时候程序不会结束,该怎么办了? 这里就要用到nohup …… & 命令,这样程序会在后台中运行,即使退出账号了,程序也会接着运行。
命令使用:
-
格式: nohup 运行程序的命令 > 程序输出的文件 &
-
案例:
nohup python3 demo.py > demo.log &
-
说明:在后台运行demo.py 程序,程序产生的输出输出到demo.log 文件中
-
注意:
- 这里输出不会立即执行,会做缓冲,所以在日志中不能马上看到打印结果,不过可以用 -u 参数不做缓冲立即输出结果
nohup python3 demo.py -u > demo.log &
nohup python3 demo.py > demo.log &
产生的日志在下次执行同样的命令时会将日志清空,想要追加输出可以使用nohup python3 demo.py >> demo.log &
多加一个箭头,这样上次的输出内容就不会被删掉了,下面会具体讲到
- 这里输出不会立即执行,会做缓冲,所以在日志中不能马上看到打印结果,不过可以用 -u 参数不做缓冲立即输出结果
-
参数:
-
nohup: 不挂断地运行命令, 注意并没有后台运行的功能 , 可以使命令永久的执行下去,和用户终端没有关系 ,ctrl + c 可以结束掉 但是关掉客户端不可以
-
单 > : 覆盖式重定向 双 >>: 追加式重定向
- -
-u :输出不做缓冲,立即输出
-
& : 结尾的&表示后台运行,ctrl + c 不可以结束掉任务,要用kill 但是关掉客户端可以
-
基于nohup 和 & 的特性,一般这两个会结合起来使用
-
-
扩展:
-
2>&1, 2是标准错误输出, 1是标准输出,这里的&表示引用,> 表示将标准错误重定向到标准输出,命令结果是,标准错误输出和标准输出指向同一个文件
-
标准输出(standard output)和 标准错误(standard error),默认是连接至屏幕; 标准输入(standard input)默认是连接至键盘;
-
文件流包含三种, 即"输入, 输出, 错误", 对应"0, 1, 2";
-