nohup命令_掌握这几个命令,Linux后台任务提交,前后台任务转换随便玩

b62426a06a902f1ba9b021868273d94f.png

关于程序后台运行有很多的命令和操作,我们常常希望当关闭终端之后,我们运行的程序依然能够在后台正常的运行。实际上当我们退出终端或者是网络断开的时候,终端会收到一个HUP(hangup)信号从而关闭其所有的子进程,那么肯定有方法来使我们退出终端的时候程序依然能够在后台正常运行。

将程序放在后台运行和挂起的命令有很多,包括了fg、bg、jobs、&、nohup、setsid、ctrl+z命令等等,下面简单介绍一下这些命令的功能以及如何进行使用。

01

命令“&”

将 & 加到命令的最后,可以让命令在后台执行,相当于放入到一个作业队列当中,如command &,这里有一个小技巧可以让我们的程序忽略掉hangup信号,可以将命令行加上(),例如(command &)这样来使用,但是此时的任务是无法用jobs命令进行查看的,该方法之所以可以忽略hangup信号是因为通过该方法提交的父进程(PPID)为一个并不是当前终端下的进程ID,所以当我们关闭终端的时候,程序不会受到hangup信号的影响。

6827176d464f4d7f773c7fad57148d11.png

77ff4cb522175d8a85bc518ee46078dc.png

02

命令 “nohup”

该命令的用途是让提交的命令忽略hangup信号,当我们退出shell终端的父进程时候,父进程会发送hangup给所有的子进程,子进程收到该信号之后会自动退出运行的程序。所以当我们需要在退出shell终端的时候程序能够继续运行,需要在运行程序的前面加上nohup(或者setsid将将父进程设为init进程(进程号为1),同时标准输出和标准错误缺省都会被重定向到nohup.out文件当中。

adb160c0c8ec57fcbd06c43c7e52a272.png

03

命令“ctrl +z”

将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行。

e39b567c1a12e1343fdd5593efd979ac.png

04

命令“jobs”

查看当前的shell环境中,有多少任务在后台运行,并且显示所有任务的PID以及任务的状态,分别有running、stopped和Terminated。不过jobs命令显示的是当前shell环境中后台正在运行或者是被挂起的任务信息,所以当你重新开启一个新的终端的时候,使用jobs命令是显示不了另外一个终端的后台运行的任务。如果需要查找任务的PID号,可以使用ps -ef进行查找,该命令也可以查找到你所需要的后台运行的任务的所有PID。

908eb25d02a0b15486a4b2e56eb2736d.png

05

命令“bg”

该命令能够将在后台暂停的命令,变为在后台进行继续执行。

f56c31b84066d895fc4e00fa847ba733.png

06

命令“fg”

该命令能够将在后台运行的命令调至前台进行运行,如果后台运行的任务数量比较多,可以通过选择jobnumber(任务的序列号,非PID)来进行选择。另外关于当前任务,如果后台运行的任务号有2个时候,当1号任务执行完毕之后,2号任务此时就为当前任务,那么使用fg、bg等命令不加上job number的时候,默认为变动的都是当前任务。

07

命令“disown”

当我们已有的一个程序已经运行了,但是忘记加上nohup/setsid就在后台运行了,这个时候可以使用disown命令disown -h %1进行补救,但是使用了disown命令之后,此时运行的命令就不能使用jobs命令在后台看到了,可以使用ps -ef查找相关任务的PID。

08

命令“setsid”

在运行程序的时候可以使用setsid command ,该命令也可以将我们的父进程设置为与当前终端的父进程不一样,这样当我们关闭当前终端的时候,我们所运行的程序不会随着终端关闭而结束。

be885eb07928e7c6b28b7e20d3a6ab36.png

关于linux系统程序的后台运行以及挂起的介绍就到这里了,您想了解的内容也可给我们留言,后续小编会继续呈上精彩内容,欢迎关注哦~

【延伸阅读】

  • 送给热情的粉丝--awk命令之计算

  • Perl单行命令介绍

  • 命令行文本编辑器——sed

fd4ba5e54c1f276164b7f1d00a6583f2.gif

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值