zoukankan      html  css  js  c++  java
  • Linux后台运行任务 nohup &

    Linux后台运行任务 nohup &

    & 不中断

    &表示在后台执行命令,没有办法通过Ctrl+C结束命令,但是可以通过关闭终端来杀掉进程。

    image-20200701192949473

    nohup 不挂起

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

    在我们关闭session时会发出SIGHUP信号,终端里运行的程序会结束,如果想要忽略SIGHUP信号,就需要在命令前增加nohup命令,此时关闭session后命令会继续执行。

    image-20200701162224060

    此时会忽略输入,并将输出重定向到nohup.out,当然,你可以使用管道符自定义输出文件

    image-20200701162808273

    这样就将输出重定向到myout.file,redirecting stderr to stdout的意思是告诉你标准错误也会重定向到标准输出。当然,你也可以自己将标准错误重定向到输出,这样就不会有警告。

    image-20200701163015536

    对于2 ,表示标准错误,stderr。

    对于&1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。

    结合nohup和&

    很多时候单独的nohup并不能满足我们的需求,你会发现在执行上面的命令只能等待任务执行完,在此之前任何输入都没有用除非新开个终端,所以nohup经常和&一起用。

    image-20200701193158150

    此时程序在后台运行,你可以继续执行其他操作,而且关闭终端也不会影响任务的执行。

    我们可以通过jobs -l来显示任务列表及状态,其中-l是显示进程号。但是jobs命令只对当前终端生效,当我们重新打开终端后jobs就不能显示任务状态了,此时只能用ps命令查看当前进程。

    image-20200701194949804

    其中29979就是进程ID,15965是父进程ID,如果要结束某个进程,可以使用kill命令

    kill -9 ID
    

    总结

    &会在后台执行,忽略Ctrl+C的SIGINT信号

    nohup会忽略关闭session的SIGHUP信号

    一般同时使用nohup+&

  • 相关阅读:
    【JAVASCRIPT】JS实现淘宝,百度评分功能
    【数据结构】链式线性表的几种常用用法
    【JAVASCRIPT】无刷新评论
    【JAVASCRIPT】表单序列化问题
    【JAVASCRIPT】如何不使用jquery函数和ajax框架实现ajax效果
    图灵北京作译者交流会
    是起点,而非终点——评《程序员的思维修炼》
    2011图灵新春特献
    图灵2011.01书讯
    图灵2010.12书讯
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/nohup_.html
Copyright © 2011-2022 走看看