• 一、示例
  • 二、&
  • 三、nohup
  • 四、&和nohup同时使用
  • 五、总结

一、示例

我们用python代码loop_hello.py做示例,代码的作用是循环输出循环次数和hello world!,每次输出后sleep 1秒

  • 示例代码如下
import timedef main():i = 0 while True:i += 1print('%d:  hello world!' %(i))time.sleep(1)if '__main__' == __name__:main()
  • 运行 loop_hello.py,输出结果如下:

  • 程序每隔一秒会在终端输出一个字符串,此时如果键入Ctrl+C ,程序会收到一个SIGINT信号,如果不做特殊处理,程序的默认行为是终止(如上图)。

二、&

  • 使用 python loop_hello.py &,效果如下所示:

  • 首先会在终端显示进程号是2367

  • 键入Ctrl + C,发出SIGINT信号,程序会继续运行

  • 关掉session,程序会收到一个SIGHUP信号,通过 ps aux | grep loop_hello.py 可以看到,进程2367也关闭了

三、nohup

1、使用 nohup python loop_hello.py ,效果如下:

  • 前台没有出现进程号
  • 有一个 忽略输入并把输出追加到"nohup.out" 的提示
  • hello的输出也没有出现在前台

2、如果关掉session,程序会不会关闭呢?

  • 使用 ps aux | grep loop_hello 查看进程号
  • 关掉session,程序会收到一个SIGHUP信号
  • 再次使用 ps aux | grep loop_hello ,发现进程仍然存在
  • kill掉进程

3、测试一下Ctrl +C

  • 使用nohup启动loop_hello.py,如果键入Ctrl+C ,程序收到SIGINT信号后,直接关闭了

四、&和nohup同时使用

  • 使用 nohup python loop_hello.py & 运行程序,效果如下:

  • 键入Ctrl + C,发送SIGINT信号 使用ps aux查看,进程仍然存在

  • 关闭session,发送SIGHUP信号 使用ps aux查看,进程依然存在

  • 如果想要终止进程的话,只能使用kill了

五、总结

1、使用&后台运行程序:

  • 结果会输出到终端
  • 使用Ctrl + C发送SIGINT信号,程序免疫
  • 关闭session发送SIGHUP信号,程序关闭

2、使用nohup运行程序:

  • 结果默认会输出到nohup.out
  • 使用Ctrl + C发送SIGINT信号,程序关闭
  • 关闭session发送SIGHUP信号,程序免疫

3、平日线上经常使用nohup和&配合来启动程序:

  • 同时免疫SIGINT和SIGHUP信号

详解Linux中nohup和的用法和区别相关推荐

  1. linux中用zip压缩文件,详解Linux中zip压缩和unzip解压缩命令及使用详解

    下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩myda ...

  2. linux用户密码管理,Linux_详解Linux中的用户密码管理命令passwd和change,passwd 修改用户密码参数 nbsp - phpStudy...

    详解Linux中的用户密码管理命令passwd和change passwd 修改用户密码 参数 -k 保持未过期身份验证令牌 -l 关闭账号密码.效果相当于usermod -L,只有root才有权使用 ...

  3. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  4. java system sleep_详解Java中的sleep()和wait()的区别

    详解Java中的sleep()和wait()的区别 对于sleep()方法,我们首先要知道该方法是属于Thread类中的.而wait()方法,则是属于Object类中的. sleep()方法导致了程序 ...

  5. linux中create命令详解,linux中 pmap 命令详解

    通过查看帮助,返回了如下信息: Usage: pmap [options] pid [pid ...] Options: -x, --extended show details -X show eve ...

  6. linux压缩命令zip详解,Linux中zip压缩和unzip解压缩命令详解

    如果你的英文足够好,那完全可以不靠任何人就精通linux,只要你会用man.Man实际上就是查看指令用法的help,学习任何一种UNIX类的操作系统最重要的就是学会使用man这个辅助命令.接下来是小编 ...

  7. linux中ping命令详解,linux中的ping命令的详细解释

    linxu下的ping命令的主要功能就是确定网络状态,下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux的ping命令的详细解释的相关知识,希望对大家有帮助! 一.linux中的 ...

  8. linux中dd命令详解,Linux中DD命令详解

    Linux中DD命令详解 1.dd命令简介 功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换.可以用该命令实现DOS下的diskcopy命令的作用.先用dd命令把软盘上的 ...

  9. linux中less命令详解,linux中的less命令的详细解释

    linxu下的less命令可以查看文本文件.下面由学习啦小编为大家整理了linux的less命令的详细解释的相关知识,希望对大家有帮助! 一.linux中的less命令的详细解释 less命令语法 l ...

  10. linux中替换命令详解,linux中sed命令字符串替换的用法详解

    Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...

最新文章

  1. ASP.NET C# 货币转换函数 中文大写金额 英文金额
  2. shell训练营Day18
  3. C#中的快捷键,可以更方便的编写代码
  4. sc169 lecture note
  5. 安装虚拟机和docker封装
  6. Android近场通信---NFC基础(三)
  7. python装饰器@深度加工(三分钟读懂)
  8. paip.输入法编程---增加码表类型
  9. linux远程ssh的端口映射,SSH端口映射
  10. 专业的Windows鼠标右键菜单管理工具
  11. can和could的用法_can和could的区别和用法
  12. 免费下载《WindowsPE权威指南》百度云
  13. obs弹幕助手android版,OBS Studio 使用全屏弹幕教程
  14. 精密制造业行业_精密制造业的发展:精密制造业的深度报告
  15. 谷粒商城二十订单服务
  16. 职场中职员如何向上管理?
  17. 企业愿景不能是忽悠,而是发自内心的渴望
  18. GNU Bison 2.1 中文手册
  19. 对等网络(P2P)--网络大典
  20. Ant是什么东西(初级)

热门文章

  1. 面试题算法题 URL化and重新排列字符
  2. 中科院30m二级分类土地利用数据Arcgis预处理及获取
  3. leetcode 877 stone game
  4. 【图论】Kruskal算法求最小生成树详解
  5. HTML小作业---网站首页/新闻栏目/banner图/js下拉框
  6. hint用法mysql,使用hint优化Oracle的执行计划
  7. android 3dtouch插件,iOS-3DTouch的简单实现
  8. 试用版本重装系统才能用是怎么回事_电脑重装系统老是失败,到底是怎么回事?这种现象是第一次碰到!...
  9. php 去除空格和换行
  10. php session的一些理解