nohup,disown和的区别
nohup,disown和&是Linux中用来进行作业控制的命令,它们都与作业的执行过程控制有关系。这三个家伙主要的区别在于对作业执行的调度动作上,区别还是很明显的。
一、先说说nohup
老胡打算先说nohup的主要原因是想说造成nohup、disown和&容易混淆的原因:HUP信号。Linux的shell在远程登录断开和用户登出时,会收到系统发送的HUP信号,然后就会陆续关闭它的子进程。无论我们是在本机的终端上登录的shell,还是远程登录的shell,在这个shell里面运行的所有命令都是它的子进程。如果在shell收到HUP的时候,我们不想自己运行的脚本或者命令被杀死,就需要用到nohup:
nohup 命令或脚本
这样一来,nohup后面的命令就会无视shell发来的HUP信号继续运行直到结束。
nohup会将紧随其后的命令或者脚本的标准输出重定向到
nohup.out
文件,一般我们使用它的时候都会将其重定向到自己定义的文件名:
nohup 命令或脚本 > filename 2>&1
通常我们使用nohup的时候,末尾都会加一个&一起使用。在上面的截图中可以看到,nohup后面的命令依然是当前shell的子进程。nohup不会将执行命令的作业与shell断开联系。
二、&都干了些什么
如果将一个命令后面加上&来执行,那么这条命令会被提交到作业列表,并且能够响应标准输入,命令的输出结果也能够输出到标准输出流和标准错误流:
使用jobs命令来查看作业列表可以看到这个任务的身影:
如果使用()将需要放置在后台执行的命令括起来的话,jobs就查不到这条作业了。
(ping www.baidu.com & )
原因是()以子shell进程运行,其父进程是系统进程init:
所以&与()配合使用,可以将命令作为init的子进程执行。
三、disown的作用
disown主要用于作业列表的控制。它可以根据作业号,将指定的作业从作业列表中删除,并将作业进程转为init的子进程。例如:
disown -h %1
就是将作业号为1的作业从作业列表中删除,在shell退出的时候将其作为init的子进程继续执行。
实际的应用中,比如我们在运行一条用时比较长的命令的时候,忽然临时需要登出系统或者关闭shell,而在当时运行这个命令时没有考虑到要提交为作业放到后台运行。可以先用Ctrl+z来挂起当前进程,使用jobs获得作业号,然后再使用disown来切断这个命令与当前shell进程的联系,这样就可以避免shell关闭的时候会中断命令的执行。
总结一下,nohup,disown和&之间的区别可以用作业调度的能力来看,排序如下:
disown>&>nohup。nohup只能让命令在执行时忽略shell传来的HUP信号,使命令能够无视shell的退出继续执行完毕;disown可以随意调度正在执行的作业,使之与shell断开联系从而避免被HUP信号终止;&配合()进行子shell调用可以实现将命令作为init的子进程执行。
nohup,disown和的区别相关推荐
- linux 使进程后台运行:/nohup/disown
在linux机器上工作,大多都是本地电脑通过xshell之类的工具连接到远端的linux主机上.当我们在终端或者控制台工作时,不希望由于运行比较耗时的作业而占用了当前屏幕: 也可能我们的电脑和远端的l ...
- Linux让进程(正在运行)在后台运行:nohup//disown/screen/Tmux
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...
- linux的nohup disown setsid screen
```nohup 可以将进程挂起 帐号退出时不受影响 nohup cp -r a b/ [>/~/cp.log] & setsid 作用类似于nohup swtsid cp -r a b ...
- /a.out , nohut ./a.out , nohup ./a.out 的区别
首先,先看个小程序 生成可执行程序a.out, 下面, 我会在我的linux机器上进行测试!!! &的意思是在后台运行, 什么意思呢? 意思是说, 当你在执行 ./a.out & 的时 ...
- nohup command > out.file 2>1 命令详解
nohup hup是hang up的缩写,是挂断.挂起的意思,而顾名思义,nohup就是不挂断.不挂起的意思.在 Unix 的早期版本中,每个终端都会通过modem和系统通讯.当用户 logout 时 ...
- Linux 后台运行程序方法总结
在用服务器跑数据的时候经常会遇到数据量大,速度慢的情况,动不动需要用好几天甚至上十天,但电脑总不能好几天不关终端,且保证不断网吧.所以这时候我们就需要将程序放到后台运行,不依赖于终端.关于原理,我 ...
- 使用Hexo搭建个人博客的终极资料
# 一.前言 Hexo 是一个基于 NodeJs 博客框架,可以快速的帮我们搭建一个博客系统,Hexo使用的是Markdown(下文简称MD)解析文章的,在几秒内即可利用靓丽的主体生成静态网页. 推荐 ...
- 关于SIGHUP信号的讨论
参考链接: <Linux终端关闭后台进程也结束原因分析和nohup的使用> <理解SIGHUP产生的过程> <Linux shell 退出后任务仍然运行引发的探究> ...
- Linux服务器运维常用命令(持续更新)
1.ip addr 查看本机IP地址 Windows上查看IP地址是ipconfig, Linux上是ifconfig,但是Linux上还有一个命令叫ip addr可以查看IP地址. 2.serv ...
最新文章
- 华为员工实力炫富,工作六年一套房一辆豪车,存款六十万
- 月薪3万的程序员都避开了哪些坑
- 查询存在表1但不存在表2的所有数据
- SecureCRT录制的安卓电视切换台脚本
- python网络编程能做什么_python网络编程——什么是socket?
- linux常用命令技巧--更新中
- Python爬虫解析网页的4种方式 值得收藏
- 你准备好了吗,江湖来了
- Linux学习笔记019---Centos7下安装Maven
- ASM相关概念及实例创建
- 海狮号水下机器人_美军派出动物特种兵搜寻失踪水下机器人
- gitlab 项目分支管理的一种策略
- snmp trap 如何在浏览器中_SNMP Trap的功能介绍
- mumu模拟器点击无响应_常用安卓模拟器介绍?PC模拟器哪个好用
- 计算机管理中看不到iis,win10找不到“internet信息服务(IIS)管理器”怎么办
- 使用plf更新Mandriva系统
- xss(跨站脚本攻击)详解
- 山东省公安厅交通管理局异地容灾系统运维、综合应用平台复制库升级项目
- 【教程】阿里云服务器挂载硬盘(其中硬盘为从快照中创建的云硬盘)
- python游戏编程
热门文章
- 堆栈溢出一般是由什么原因导致
- 快排(java实现)
- K8s中Pod生命周期和重启策略
- Python3网络爬虫教程2——urlopen的返回对象
- 王者服务器正在维护中是什么意思,王者营地转移系统维护中是什么意思
- Ymodem协议要点
- Cocos Creator 3D 麒麟子回来了!(入门心法)
- FPGA从入门到精通(8)-BRAM
- 计算机学院大学毕业晚会标题,“告白青春,感谢有你” 计算机学院2018届毕业晚会圆满举行...
- 男子用计算机rap劫匪,连Lex都在推荐的新番《催眠麦克风》直接一首rap将抢劫犯给rap崩溃!...