iGMAS Innovation Application Center
@School of Geodesy and Geomatics, Wuhan University
Menu
Home
Products
Visualization
Group
Software
Feedback
Sign In
Group
学术动态
团队风采
研究方向与代表成果
GNSS轨道钟差
实时精密定位
低轨增强GNSS
多源融合导航
GREATers
Tools and PPT
Group
学术动态
团队风采
研究方向与代表成果
GNSS轨道钟差
实时精密定位
低轨增强GNSS
多源融合导航
GREATers
Tools and PPT
GREATers
Return
Linux后台执行程序:nohup和&命令
Create on
2020-11-13T09:32:59Z
written by Wang Qingyun
当我们在控制台或者各种服务器终端上运行程序时,程序可能会输出很多我们不需要的内容,我们希望这些内容不要输出到屏幕上,而是输出到日志文件中;又或者当我们关闭电脑时希望程序能够继续运行,除了***sbatch***之外,***nohup***和***&***也不失为一种有力的工具。  ## 1. nohup命令 用途:no hang up的缩写,指不挂断地运行命令。运行一个进程的时候,不想让其在你退出账号时关闭,即可用nohup。 语法:nohup command [ Arg … ] [ & ] 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。 如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。 如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。 ## 2. &命令 用途:当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上&实现后台运行。例如:python test.py & 在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中: command > out.file 2>&1 & ## 3. nohup和& **常见用法:nohup command > my.log 2>&1 &** *nohup*和*&*在上文中我们已经讲过了,现在说一下*2>&1*的含义 1. **0** 表示stdin标准输入,用户键盘输入的内容; **1** 表示stdout标准输出,输出到显示屏的内容; **2** 表示stderr标准错误,报错内容。 2. **2>&1** 是一个整体,**>** 左右不能有空格,即将错误内容重定向输入到标准输出中去。 ## nohup任务查看和取消 **【查看进程】** 1. nohup任务提交后,终端会出现该任务的进程号,也可以使用`jobs -l`命令查看当前终端的后台程序。 *注意:关闭终端后,在另一个终端使用该命令无法看到,此时利用ps(进程查看命令)*  2. 使用`ps -ef `查看 **【取消进程】** `kill -9 pid` 参考文章1:[Python后台运行—nohup及2>&1详解](https://blog.csdn.net/weixin_42840933/article/details/85780125) 参考文章2:[后台执行命令:&和nohup command & 以及关闭、查看后台任务](https://blog.csdn.net/liuxiao723846/article/details/47754479) 参考文章3:[nohup和&后台运行,进程查看及终止](https://www.cnblogs.com/baby123/p/6477429.html)