博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux nohup后台运行命令
阅读量:6813 次
发布时间:2019-06-26

本文共 1163 字,大约阅读时间需要 3 分钟。

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

一般都是在linux下nohup格式:
nohup 命令
或者 
nohup 命令 & 
这之间的差别是带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上); 
它把标准输出(STDOUT)和标准错误(STDERR)结果输出到nohup.txt文件这个看似很方便,但是当输出很大的时候,nohup.txt文件会非常大,或者多个后台命令的时候大家都会输出到nohup.txt文件,不利于查找结果和调试程序。 
所以能够重定向输出会非常方便。下面要介绍标准输出,标准输入 和标准错误了。 
其实我们一直都在用,只是没有注意到,
比如 
>./command.sh > output 
#这其中的>就是标准输出符号,其实是 1>output 的缩写 
>./command.sh 2> output 
#这里的2>就是将标准错误输出到output文件里。 
而0< 则是标准输入了。 
下面步入正题,重定向后台命令 
>nohup ./command.sh > output 2>&1 & 
解释:前面的nohup 和后面的&我想大家都能明白了把。 
 
主要是中间的 2>&1的意思 
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,
所以结果是标准错误和标准输出都导入文件output里面了。 
至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。 
这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的. 
 
这就是为什么有人会写成: 
nohup ./command.sh >output 2>output出错的原因了 
------------------------------------------------------------------------------------
最后谈一下/dev/null文件的作用 
这是一个无底洞,任何东西都可以定向到这里,但是却无法打开。 
所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里>./command.sh >/dev/null 2>&1
 
使用 jobs 查看任务
nohup停止
使用 fg %n 关闭。

转载于:https://www.cnblogs.com/qiminghaonan/p/8126105.html

你可能感兴趣的文章
重新回归
查看>>
AngularJs 知识
查看>>
Linux下修改Mysql的用户(root)的密码
查看>>
Spring.NET的AOP怎么玩
查看>>
Linux下配置Mysql允许远程访问详解
查看>>
nginx作为tcp代理 虚拟主机配置 模板
查看>>
超市购物小票案例
查看>>
file.src.rpm 使用方法的简单介绍
查看>>
如何恢复【cisco 3560】交换机的【密码】
查看>>
Map接口
查看>>
一步一步教你做ios推送
查看>>
DOCKER windows 7 详细安装教程
查看>>
Linux:-bash: ***: command not found
查看>>
用D盘做游戏菜单 省内存又省心
查看>>
全新Linux+Python高端运维班-Linux vim 末行模式,sed命令,基本bash脚本
查看>>
搭建局域网CentOS Yum服务器
查看>>
关于MySQL里的found_row()和row_count()解释及用法
查看>>
windows10除了自带的edge能上网,别的应用都不能上网
查看>>
DHCP通过NAP认证
查看>>
界面设计的8条黄金规则
查看>>