Linux:遗忘nohup,后悔莫及。

摘要

Linux中,如果忘记使用nohup命令,关闭终端后进程也会关闭。但别担心,我们有方法挽救!只需使用CTRL+Z暂停进程,然后使用bg命令将其放到后台运行即可。

正文

Linux :忘掉应用nohup该怎样挽救

文中得出一种忘掉应用nohup该怎样挽救的方法。

Linux :忘掉应用nohup该怎样挽救

文件目录

  • Linux :忘掉应用nohup该怎样挽救
    • 0x00 引言
    • 0x01 难题叙述
      • 1.1 为什么关掉过程
      • 1.2 nohup 功效
    • c002 概述
      • 2.1 实际操作编码序列
      • 2.2 示例
    • c003 基本原理
      • 3.1 CTRL Z
      • 3.2 jobs
      • 3.3 bg
      • 3.4 disown
      • 3.5 ps
      • 3.6 fg
    • c0EE 私人信息
    • c0FF 参照

0x00 引言

在Linux做开发设计的同学们或许会碰到这类窘境:

  1. 运作了一个程序流程两个小时以后,你想着:还有一个小时程序流程就运作完后,因此你兴高采烈的提前准备看結果。
  2. 女友忽然破口大骂让自身马上发生。
  3. 这时你忽然察觉自己沒有应用 nohup,这就代表着这一程序流程在自身离开以后会死了。以前两个小时的运作時间就消耗了。
  4. 因此你怀着懊悔的按住了CTR c,随后应用 nohup 再次运作程序流程。

慢着,实际上这类忘掉 nohup 的状况是能够挽救的,下边大家就看看怎样实际操作。

0x01 难题叙述

1.1 为什么关掉过程

当客户销户(logout)或是互联网断掉时,终端设备会接到 HUP(hangup)数据信号进而关掉其全部子过程

缘故是:SSH对话关掉时,ssh所关系的pty关掉,系统软件会给这一pty所关系的session中的全部过程推送SIGHUP数据信号,SIGHUP的默认设置信号分析程序流程是停止过程,除非是过程自身解决了SIGHUP。

因而,大家的解决方案就会有二种方式:

  • 要不让过程忽视 HUP 数据信号;
  • 要不让过程运作在新的对话里进而变成不属于此终端设备的子过程;

1.2 nohup 功效

nohup指令对过程干了三件事。

  • 阻拦SIGHUP数据信号发至这一过程。
  • 关掉规范键入。该过程不会再可以接受一切键入,即便 运作在前台接待。
  • 跳转规范輸出和规范不正确到文档nohup.out

换句话说,nohup指令事实上将子过程与它所属的 session 分离出来了。因此当shell对话框关掉情况下,nohup 指令所属的过程也不会被完毕。

c002 概述

假如忘掉应用了 nohup,该怎样挽救?具体步骤以下:

2.1 实际操作编码序列

具体步骤编码序列以下:

  1. 针对已经运作的过程,我们可以应用 ”CTRL z“ 来将当今过程挂具有后台管理中止运作;
  2. 此刻过程早已进到后台管理中止,大家应用 “jobs” 寻找以前中止的过程,每一个后台任务具备一个 jobnumber(每日任务的系列号,非PID)。
  3. 应用 “bg jobnumber” 让该过程进到后台程序;
  4. 再度应用 “jobs”查看进程情况,这时过程早已进到running 情况;
  5. 应用disown指令 “disown -h %jobnumber” 开展解决,那样该过程便会具有了 nohup 的一样功效;这时做好了。
  6. 假如想再次查询,能够应用 ps 指令来查看进程情况;
  7. 能够应用 “fg” 把后台任务转成前台接待每日任务运作,这时能够对该过程开展实际操作,例如完毕;

2.2 示例

大家以运作一个redis为例子得出具体步骤编码序列,实际如下图:

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server
mylinux $ jobs
[1]   Stopped                 redis-server
mylinux $ bg 1
[1]  redis-server &
mylinux $ jobs
[1]   Running                 redis-server &
mylinux $ disown -h %1
mylinux $ ps -elf| grep redis
501 1987 521 4006 0 31 0 4289624 1932 - T 0 ttys001  0:00.01 redis-server *:6  9:49早上
mylinux $ fg
redis-server
^C1987:signal-handler (1616291836) Received SIGINT scheduling shutdown...
1987:M 21 Mar 09:57:16.634 # User requested shutdown...
1987:M 21 Mar 09:57:16.634 * Saving the final RDB snapshot before exiting.
1987:M 21 Mar 09:57:16.641 * DB saved on disk
1987:M 21 Mar 09:57:16.641 # Redis is now ready to exit, bye bye...      

c003 基本原理

下边大家对系统命令的基本原理一一开展剖析。

3.1 CTRL Z

Ctrl Z是把当今的程序流程挂起来,中止实行这一程序流程。

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server  

那样程序流程就被挂起来进入了后台管理。能够挂起来许多过程到后台管理。

3.2 jobs

jobs指令用于查询当今有多少在后台程序。

在Linux中,运行、终止、停止及其修复工作的这种作用通称为作业控制。作业控制中的重要指令是jobs指令,jobs指令容许查询shell当今已经解决的工作。jobs指令中輸出有减号和减号,带减号的工作被作为默认设置工作,带减号的为下一个默认设置工作。

一旦当今的默认设置工作中解决进行,则带减号的工作中便会全自动变成新的默认设置工作中,也就是说,无论这时有多少已经运作的工作中,一切時间都是会只有一个带减号的工作中和一个带减号的工作中。

我们可以见到,这时 redis-server 就在后台程序,[1] 表明过程序号为 1。

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server
mylinux $ jobs
[1]   Stopped                 redis-server  

3.3 bg

bg指令可以将在后台管理中止的指令,变成在后台管理开展执行。

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server
mylinux $ jobs
[1]   Stopped                 redis-server
mylinux $ bg 1
[1]  redis-server &  

应用了bg以后,能够见到輸出 redis-server 以后带了一个 &,表明早已后台程序。

大家还可以再度应用 jobs 查看进程情况。

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server
mylinux $ jobs
[1]   Stopped                 redis-server
mylinux $ bg 1
[1]  redis-server &
mylinux $ jobs
[1]   Running                 redis-server &  

3.4 disown

disown 指令 能够将特定每日任务从”后台任务”目录(jobs指令的回到結果)当中清除。一个”后台任务”只需没有这一目录当中,session 就毫无疑问不容易向它传出SIGHUP数据信号。那样就做到了 nohup 同样的功效。

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server
mylinux $ jobs
[1]   Stopped                 redis-server
mylinux $ bg 1
[1]  redis-server &
mylinux $ jobs
[1]   Running                 redis-server &
mylinux $ disown -h %1   

3.5 ps

当应用过 disown 以后,会将把总体目标工作从工作目录中清除,大家将不可以再应用jobs来查询它,可是仍然可以用ps -ef搜索到它。

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server
mylinux $ jobs
[1]   Stopped                 redis-server
mylinux $ bg 1
[1]  redis-server &
mylinux $ jobs
[1]   Running                 redis-server &
mylinux $ disown -h %1
mylinux $ ps -elf| grep redis
501 1987 521 4006 0 31 0 4289624 1932 - T 0 ttys001  0:00.01 redis-server *:6  9:49早上

3.6 fg

fg 指令可以将在后台程序的指令调至前台接待开展运作,假如后台程序的每日任务总数比较多,能够根据挑选jobnumber(每日任务的系列号,非PID)来开展挑选。

此外有关当前任务,假如后台程序的每日任务号有两个情况下,当2号每日任务实行结束以后,2号每日任务这时就为当前任务,那麼应用fg、bg等指令不再加上job number的情况下,默认设置为变化的全是当前任务。

mylinux $ redis-server
* The server is now ready to accept connections on port 6379
^Z
[1]   Stopped                 redis-server
mylinux $ jobs
[1]   Stopped                 redis-server
mylinux $ bg 1
[1]  redis-server &
mylinux $ jobs
[1]   Running                 redis-server &
mylinux $ disown -h %1
mylinux $ ps -elf| grep redis
501 1987 521 4006 0 31 0 4289624 1932 - T 0 ttys001  0:00.01 redis-server *:6  9:49早上
mylinux $ fg
redis-server    

c0EE 私人信息

★★★★★★生活中和技术性的思索★★★★★★

微信平台账户:罗西的思索

假如您想立即获得本人编写文章内容的消息提醒,或是想看看本人强烈推荐的技术文档,敬请期待。

在这里插入图片描述

c0FF 参照

https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

https://www.ibm.com/developerworks/cn/linux/l-cn-screen/

nohup指令_把握这好多个指令,Linux后台任务递交,前后台任务变换随意玩

Linux的jobs指令

Linux jobs指令:查询当今终端设备放进后台管理的工作中

Linux xinetd的运行方式

Linux中shell关掉后,nohup让程序流程仍然在后台程序

nohup:关掉shell程序流程仍然实行

关注不迷路

扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!

温馨提示:如果您访问和下载本站资源,表示您已同意只将下载文件用于研究、学习而非其他用途。
文章版权声明 1、本网站名称:宇凡盒子
2、本站文章未经许可,禁止转载!
3、如果文章内容介绍中无特别注明,本网站压缩包解压需要密码统一是:yufanbox.com
4、本站仅供资源信息交流学习,不保证资源的可用及完整性,不提供安装使用及技术服务。点此了解
5、如果您发现本站分享的资源侵犯了您的权益,请及时通知我们,我们会在接到通知后及时处理!提交入口
0

评论0

请先

站点公告

🚀 【宇凡盒子】全网资源库转储中心

👉 注册即送VIP权限👈

👻 全站资源免费下载✅,欢迎注册!

记得 【收藏】+【关注】 谢谢!~~~

立即注册
没有账号?注册  忘记密码?

社交账号快速登录