当前位置 主页 > 服务器问题 > Linux/apache问题 >

Linux 下nohup 和 &有什么联系呢?

栏目:Linux/apache问题 时间:2018-12-04 14:36

  背景
  一直没搞清楚 nohup 与 & 的区别, 看着公司里遗留的shell, 也就稀里糊涂地用着... 这是很糟糕的态度
  结论放前面
  &
  使进程在后台运行, 默认输出到标准输出(即当前屏幕), 除非重定向输出.
  此时忽略 SIGINT 信号.
  ==若关闭会话, 则进程会结束==
  nohup
  进程仍旧在前台跑, 默认输出到 nohup.out .
  此时进程忽略 SIGHUP 信号, 关闭会话不影响进程.
  ==Ctrl+c会使进程中断==
  nohup + &
  进程在后台跑, 忽略 SIGINT, SIGHUP 信号.
  测试
  repeat=${1:-20}
  echo 循环次数 $repeat
  counter=0
  while [ $counter -lt $repeat ]
  do
  echo 第${counter}次循环
  let "counter ++"
  sleep 1
  done
  echo 结束循环
  直接运行
  [root@linuxidc tmp]# sh test.sh
  循环次数 20
  第0次循环
  第1次循环
  第2次循环
  ^C
  此时不论是直接 Ctrl+c 或 关闭当前ssh连接, 都会导致进程停止
  [root@linuxidc tmp]# sh test.sh > test.out
  ^C
  此时进程仍在前端跑, 查看 test.out 文件会发现在输出, 此时不论是直接 Ctrl+C 或 关闭当前ssh连接, 都会导致进程停止
  单独使用 &
  [root@linuxidc tmp]# sh test.sh &
  [1] 111418
  [root@linuxidc tmp]# 循环次数 20
  第0次循环
  第1次循环
  第2次循环
  ^C
  [root@linuxidc tmp]# 第3次循环
  第4次循环
  第5次循环
  ^C
  [root@linuxidc tmp]# 第6次循环
  第7次循环
  第8次循环
  第9次循环
  第10次循环
  第11次循环
  此时进程在后台跑, 同时默认会输出到屏幕上.
  此时 Ctrl+c 无效, 即进程忽略了 SIGINT 信号.
  但若是直接关闭ssh连接(会话), 则该进程会被关闭, 这是因为进程受到了 SIGHUP 信号影响.
  系统对SIGHUP信号的默认处理是终止收到该信号的进程。所以若程序中没有捕捉该信号,当收到该信号时,进程就会退出。
  [root@linuxidc tmp]# sh test.sh > test.out &
  [4] 111758
  [root@linuxidc tmp]#
  使进程在后台跑, 输出被重定向到指定文件
  可用 jobs -l 获取当前的所有后台进程
  [root@linuxidc tmp]# jobs -l
  [2]+ 113043 Running                 sh test.sh > /dev/null &
  单独使用 nohup
  [root@linuxidc tmp]# nohup sh test.sh > test.out 2>&1
  运行后是在前端跑, 若关闭会话, 进程不受影响.
  但此时 Ctrl+c会结束进程.
  nohup + &
  [root@linuxidc tmp]# nohup sh test.sh &
  [2] 112987
  [root@linuxidc tmp]# nohup: 忽略输入并把输出追加到"nohup.out"
  [root@linuxidc tmp]#
  忽略 Ctrl+c 以及 会话关闭的影响, 进程可以在后台持续运行.
  若会话未关闭, 可通过 jobs -l 查看当前该进程
  [root@linuxidc tmp]# jobs -l
  [1]+ 112987 Running                 nohup sh test.sh &
缩小 缩小 缩小 缩小
IIS7整站下载工具 IIS7批量查询排名 IIS7远程桌面连接工具 iis7-iis网站批量管理 iis7批量替换工具 IIS7服务器专用下载工具 IIS7日志分析工具 IIS7批量PING,服务器批量添加网卡IP小工具 IIS7远程同步备份工具
IIS7网站监控 站群批量SEO查询 批量获取排名域名 批量关键词排名查询 模拟各种蜘蛛 批量友情链接监测 批量检测死链 搜索引擎大全 批量查询外链
批量查询网站标题 批量查询KeyWords 批量查询描述 批量查询网站IP 批量百度收录查询 批量查询百度日收录 批量查询百度周收录 批量查询百度月收录 批量查询360总收录 批量查询360日收录 批量查询网站年龄 批量查询360PC权重 批量查询爱站移动权重 批量查询站长移动权重 批量查询360移动权重 批量查询神马权重 批量查询谷歌PR 批量查询搜狗PR 批量查询百度反链 批量查询爱站首页反链 批量查询爱站内页反链 批量查询百度快照 批量查询搜狗快照 批量icp备案查询 批量网站ip地址查询 批量查询导出链接 批量查询百度V认证 批量查询百度安全 批量查询站长PC权重 批量查询爱站PC权重 批量查询搜狗总收录 站长资源大全 IIS7-cms大全 IIS7站群大全 IIS7虚拟空间大全 IIS7服务器大全 IIS7-VPS大全