重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 182|回复: 0
打印 上一主题 下一主题

[基础命令] nohup和&的区别

[复制链接]
跳转到指定楼层
楼主
发表于 6 小时前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
同样都是后台执行进程,但是nohup和&有什么区别呢?


& 是指后台运行;


nohup 的功能和& 之间的功能并不相同。


其中,nohup 可以使得命令永远运行下去和用户终端没有关系。


当我们断开ssh 连接的时候不会影响他的运行。


而& 表示后台运行。当ssh 断开连接的时候(用户退出或挂起的时候),命令也自动退出。


当然我们可以把两者结合起来使用:  
nohup command &   


来实现命令的后台运行并且和用户终端没有关系。  


由 nohup 文档来看:  
If the output file nohup.out cannot be created in the current directory, the nohup utility uses the directory named by HOME to create the file.  


表示:
nohup 命令执行后,会产生日志文件,把命令的执行中的消息报损到这个文件之中。


如果当前文件不可写,那么会自动保存到执行这个命令的home 目录下面。


如果是超级管理员root 对应的是/root 目录。


从上面对比我们发现:


1. & 可以使得命令 免疫 ctrl c 的 SIGINT 信号,不能是的命令对 SIGHUP 信号进行免疫。


2. nohup 可以使得命令对两个信号都可以进行免疫。  为了使得 & 达到相同的效果:


总结:


1.nohup可以挂载后台执行,同样终端退出或者断开不会影响进程,同样如果使用默认的nohup command 的话,默认会出现一个nohup.out文件来输出进程执行的内容,前提是运行的用户有当前目录的写权限。但执行nohup command的时候,不会显示命令行,直到程序结束


2.& 同样可以挂载到后台执行,但是终端退出或者ssh端口,都会引起后台进程停止


两者同时使用是最好的结果


nohup command &


来达到推出中端也不会影响后台进程运行


如果想要查看正在后台执行的进程


可以使用jobs命令来查看


直接命令行输入jobs即可查看使用&或者nohup xx &


再或者直接使用ps -ef 或者ps aux 直接查看进程即可


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2025-3-12 20:53 , Processed in 0.111968 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表