道一站 道一站
首页
  • 历史文明
  • 自我管理
  • 经济金融
  • 未来科技
  • 李笑来
  • 股票
  • 期货
  • 期权
  • 外盘
  • 量化
  • 区块
  • 认知
  • 数理
  • 收藏
  • 前端

    • JavaScript
    • TypeScript
  • 页面

    • HTML
    • CSS
  • 编程

    • C++
    • Python
    • Shell
    • 小程序开发
  • 笔记

    • 《Git》
    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
  • 技术文档
  • Linux
  • Docker
  • GitHub
  • 博客搭建
  • 效用工具
  • 周易基础
  • 奇门遁甲
  • 收藏资源
  • 学习方法
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
关于

daotoyi

静水流深
首页
  • 历史文明
  • 自我管理
  • 经济金融
  • 未来科技
  • 李笑来
  • 股票
  • 期货
  • 期权
  • 外盘
  • 量化
  • 区块
  • 认知
  • 数理
  • 收藏
  • 前端

    • JavaScript
    • TypeScript
  • 页面

    • HTML
    • CSS
  • 编程

    • C++
    • Python
    • Shell
    • 小程序开发
  • 笔记

    • 《Git》
    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
  • 技术文档
  • Linux
  • Docker
  • GitHub
  • 博客搭建
  • 效用工具
  • 周易基础
  • 奇门遁甲
  • 收藏资源
  • 学习方法
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
关于
  • 技术文档

  • Linux

    • 127001和0000地址的区别
    • arp_route
    • CMD_ip_ifconfig
    • IP与子网掩码的关系
    • libc,glibc和libc关系
    • Linux 路由表详解及 route 命令详解
    • Linux 系统中成功恢复已删除的文件
    • Linux_boot
    • Linux_chroot
    • Linux_chroot_RecoveryPass
    • Linux_chroot_SSHlogin
    • Linux_cmd_echo
    • LInux_cmd_sed
    • Linux_FTP
    • Linux_ldconfig_PATH
    • Linux_locale
    • Linux_Login_Repeat
    • d_faillock
    • Linux_SSH
    • Linux_systemctl_systemd
    • Linux_systemd_serivice
    • Linux_Terminal_HotKey
    • Linux-cmd-tar
    • LinuxTerminalHotkey
    • linux后台运行、挂起、恢复进程相关命令
      • Excerpt
      • 临时后台运行
        • nohup/setsid/&
        • 1.nohup
        • 2.setid
        • 3.&
      • screen
        • ctrl + z
        • jobs
        • fg
        • bg
        • kill
    • Linux认证
    • Net
    • Nginx 常用配置清单
    • Nginx通识
    • perf分析unixbench性能
    • ping请求错误分析
    • Remote_SSH&X11(Manjaro)
    • Remote_XDMCP(Redhat6)
    • Sql Or NoSql,看完这一篇你就懂了
    • systemd
    • Unicode_UTF
    • URL
    • 开源协议
    • 线程、进程、多线程、多进程和多任务
    • 正向代理与反向代理
  • Docker

  • GitHub

  • 博客搭建

  • 效用工具

  • 技术
  • Linux
daotoyi
2022-04-30
目录

linux后台运行、挂起、恢复进程相关命令

# (1条消息) linux后台运行、挂起、恢复进程相关命令_koberonaldo24的博客-CSDN博客

# Excerpt

记录一些日常会用到的linux真心好用的操作。后台运行临时后台运行如果只是临时有一个命令需要长时间运行,需要最简便的保证它在后台稳定运行:nohup/setsid/&我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于...


# 临时后台运行

如果只是临时有一个命令需要长时间运行,需要最简便的保证它在后台稳定运行:

# nohup/setsid/&

我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

# 1.nohup

nohup 无疑是我们首先想到的办法。顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号。nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&“来将命令同时放入后台运行,也可用”>filename 2>&1"来更改缺省的重定向文件名。
nohup示例

[root@pvcent107 ~]
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]
root      3059   984  0 21:06 pts/3    00:00:00 ping www.ibm.com
root      3067   984  0 21:06 pts/3    00:00:00 grep 3059
1
2
3
4
5
6

# 2.setid

nohup 无疑能通过忽略 HUP 信号来使我们的进程避免中途被中断,但如果我们换个角度思考,如果我们的进程不属于接受 HUP 信号的终端的子进程,那么自然也就不会受到 HUP 信号的影响了。setsid 就能帮助我们做到这一点。 setsid 的使用也是非常方便的,也只需在要处理的命令前加上 setsid 即可。
setsid 示例

[root@pvcent107 ~]
[root@pvcent107 ~]
root     31094     1  0 07:28 ?        00:00:00 ping www.ibm.com
root     31102 29217  0 07:29 pts/4    00:00:00 grep www.ibm.com
1
2
3
4

# 3.&

这里还有一个关于 subshell 的小技巧。我们知道,将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中,从而扩展出很多有趣的功能,我们现在要讨论的就是其中之一。

当我们将"&"也放入“()”内之后,我们就会发现所提交的作业并不在作业列表中,也就是说,是无法通过jobs来查看的。
subshell示例

[root@pvcent107 ~]
[root@pvcent107 ~]
root     16270     1  0 14:13 pts/4    00:00:00 ping www.ibm.com
root     16278 15362  0 14:13 pts/4    00:00:00 grep www.ibm.com
1
2
3
4

# screen

如果有大量命令需要在稳定的后台里运行,此时最方便的方法就是 screen 了。简单的说,screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。screen 的参数很多,具有很强大的功能,我们在此仅介绍其常用功能以及简要分析一下为什么使用 screen 能够避免 HUP 信号的影响。

使用 screen 很方便,有以下几个常用选项:

  • 用screen -dmS session name来建立一个处于断开模式下的会话(并指定其会话名)。
  • 用screen -list 来列出所有会话。
  • 用screen -r session name来重新连接指定会话。
  • 用快捷键CTRL-a d 来暂时断开当前会话。

screen 示例

[root@pvcent107 ~]
[root@pvcent107 ~]
There is a screen on:
        12842.Urumchi   (Detached)
1 Socket i
[root@pvcent107 ~]
1
2
3
4
5
6

当我们用“-r”连接到 screen 会话后,我们就可以在这个伪终端里面为所欲为,再也不用担心 HUP 信号会对我们的进程造成影响,也不用给每个命令前都加上“nohup”或者“setsid”了。

# ctrl + z

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

# jobs

查看当前有多少在后台运行的命令

jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

# fg

将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。

# bg

将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。

# kill

法子1:通过jobs命令查看job号(假设为num),然后执行kill %num
法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid

前台进程的终止:Ctrl+c

上次更新: 2023/10/10, 14:48:21
LinuxTerminalHotkey
Linux认证

← LinuxTerminalHotkey Linux认证→

最近更新
01
置身事内
10-10
02
基础知识|八卦五行天干地支
10-08
03
基础知识|推算年月日时的干支
10-08
更多文章>
Theme by Vdoing | Copyright © 2021-2023 Daotoyi | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式