进程管理之工作管理详解(job control)


1 什么是工作管理(job control)

我们知道linux是多任务多终端工作的操作系统。我们可以在多个终端进行工作,也可以在一个终端进行多个任务工作。那在一个终端同时进行多个工作任务,就称为工作管理。比如这种情况,在一个终端,你想要复制文件,同时你还想压缩打包文件,甚至你还想编辑文件,这个时候就要用到工作管理。工作管理的情况,大概是这样的。直接上图。

首先,你要明白前台,后台的概念。前台就是当前我们登陆shell操作的终端,我们与之交互,看得见,摸得着得终端。后台就是与用户不用交互的操作环境。我们可以将执行的命令放入后台便不用再手动管理,能够自动完成任务。

  前台运行(Forebackground):将工作进程放入与用户交互的终端运行。  后台运行(Running):将工作进程放入不再与用户交互的后台运行。  后台暂停(Stopped):工作进程暂停状态。  完成(Done):工作完成。  终止(terminated):工作进程被终止。

2  如何进行工作管理

2.1 直接将指令放到后台执行:&

[root@big backup]# tar -zpcf /apps/backup/etc.tar.gz &>/apps/backup/backup.log /etc &
[1] 6798                    #第一步:打包并压缩/etc目录#第二步:将标准输出流写入文件#第三步:&将工作放入后台
[root@big backup]# jobs     #job 查看工作状态为Running,即后台运行
[1]+  Running                 tar -zpcf /apps/backup/etc.tar.gz /etc &>/apps/backup/backup.log &
[root@big backup]# jobs -l  #job -l 还可以查看工作进程的PID
[1]+  6798 Running                 tar -zpcf /apps/backup/etc.tar.gz /etc &>/apps/backup/backup.log &
[root@big backup]# jobs -l  #再次查看,发现工作状态Done,即结束状态,工作完成
[1]+  6798 Done                    tar -zpcf /apps/backup/etc.tar.gz /etc &>/apps/backup/backup.log解析:& 放入后台命令jobs -l 可查看四个内容:工作号 PID 工作状态 工作命令[1]+     工作号,+号表示第一个工作6798     进程IP(pid)Done     工作进程完成tar...   工作命令

2.2 将在前台进行的工作放入后台暂停(Stopped):(command+(ctrl+z))

[root@big backup]# tar -zpcf /tar -zpcf /apps/backup/etc.tar.gz  /etc         #打包压缩命令
tar: Removing leading `/' from member names
^Z                                                #ctrl+z 将前台工作进程放入暂停状态
[1]+  Stopped                 tar -zpcf /apps/backup/etc.tar.gz /etc
[root@big backup]# jobs -l                        #查看工作信息
[1]+  7214 Stopped                 tar -zpcf /apps/backup/etc.tar.gz /et    #Stopped 表示后台暂停

2.3 将后台工作放入前台运行:fg

[root@big backup]# jobs -l                        #查看工作信息
[1]+  7214 Stopped                 tar -zpcf /apps/backup/etc.tar.gz /et
[root@big backup]# fg %1            #将工作放入前台运行
tar -zpcf /apps/backup/etc.tar.gz /etc

2.4 将后台暂停工作(Stopped)放入后台运行(Running):bg

[root@big backup]# bg %1;jobs -l        #将工作号为1的工作放入后台运行,并且查看工作信息
[1]+ tar -zpcf /apps/backup/etc.tar.gz /etc &
[1]+  7434 Running                 tar -zpcf /apps/backup/etc.tar.gz /etc &
[root@big backup]# jobs -l              #再次查看工作状态:Done,即完成。
[1]+  7434 Done                    tar -zpcf /apps/backup/etc.tar.gz /etc

2.5 kill命令管理工作

很多人常常会把kill当作杀进程的命令,其实这样理解是不对的,kill命令的作用远远不止如此。kill更像是一种发送信号的命令,通过发送信号,告诉进程下一步该干什么。我们可以通过(kill -l)来查看kill支持的信号。在这我仅介绍四种与工作管理相关的信号。

[root@big backup]# kill -l1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP6) SIGABRT    7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    解析:四种常用的信号以及用法实例9) SIGKILL 强制杀死正在运行的进程15) SIGTERM 正常终止正在运行的进程18) SIGCON  继续运行,相当于bg19) SIGSTOP 后台暂停,进入后台暂停状态(Stopped)实例:[root@big apps]#  tar -zcf /apps/tmp.tar.gz / &>/apps/tmp.log &    #将打包压缩工作进程放入后台[1] 8482[root@big apps]# jobs -l                                           #查看工作进程信息[1]+  8482 Running                 tar -zcf /apps/tmp.tar.gz / &[root@big apps]# kill -19 %1                                       #将第一个工作放入后台暂停[1]+  Stopped                 tar -zcf /apps/tmp.tar.gz /[root@big apps]# jobs -l                                           #查看工作进程信息[1]+  8482 Stopped (signal)        tar -zcf /apps/tmp.tar.gz / [root@big apps]# kill -18 %1;jobs -l                               #将第一个工作放入后台运行[1]+  8482 Running                 tar -zcf /apps/tmp.tar.gz / &[root@big apps]# jobs -l[1]+  8482 Running                 tar -zcf /apps/tmp.tar.gz / &[root@big apps]# kill -15 %1                                       #正常终止工作[root@big apps]# jobs -l                                           #工作状态Teminated,终止。[1]+  8482 Terminated              tar -zcf /apps/tmp.tar.gz /[root@big apps]# jobs -l                                           #再次查看后台没有工作进程解析:通过以上实例分析,可得知(kill -19 )可将后台运行的工作进程放入后台暂停通过以上实例分析,可得知(kill -18 )可将后台暂停的工作进程放入后台运行通过以上实例分析,可得知(kill -15 )可将后台运行的工作进程正常终止

2.6 脱机管理工作进程:nohup

前面提到的工作管理都依赖于终端。一旦终端关闭,正在运行的或者是后台暂停的工作都会终止。那有没有办法,使我们执行的命令脱离终端的限制,也就是当我关闭了当前的终端,原先执行的命令会仍然继续运行。答案是:当然有,那就是给力的nohup命令。

格式:nohup command &

终端pts/0
[root@big apps]# nohup ping 10.0.0.1 &>/dev/null &            #使用nohup离线模式执行ping命令
[1] 8910
[root@big apps]# jobs -l                                      #查看后台工作状态
[1]+  8910 Running                 nohup ping 10.0.0.1 &>/dev/null &
[root@big apps]# exit                                         #退出当前终端
logoutConnection closed by foreign host.Disconnected from remote host( 7.3 10.0.0.73) at 14:23:18.终端pts/1
[root@big ~]# ps aux | grep ping                            #另一终端搜索ping工作进程
root       8910  0.0  0.1 127912  1228 ?        S    14:22   0:00 ping 10.0.0.1
root       8932  0.0  0.0 112648   960 pts/1    S+   14:23   0:00 grep --color=auto ping
[root@big ~]# kill 8910                                     #正常终止ping工作进程
[root@big ~]# ps aux | grep ping                            #查看进程是否被终止
root       8973  0.0  0.0 112648   960 pts/1    S+   14:25   0:00 grep --color=auto ping解析:pts/0使用nohup command & 离线模式执行命令在另一终端pts/1 查看ping工作进程,发现ping工作进程正在运行,由此证明nohup执行命令可脱离终端正常终止ping进程,验证是否终止实验到此结束

3  总结

好了,现在让我们通过下图回顾一下工作管理用到的命令。

作者:Michael Hu
时间:2017/05/14

转载于:https://blog.51cto.com/huwho/1925476

进程管理之工作管理详解(job control)相关推荐

  1. 第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

    第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍 安装 解压 安装依赖 修改配置 注册为系统服务 启动 登录一下,发现报错了 解决方法 介 ...

  2. linux常用的引导管理器,多重引导管理器Grub使用详解

    多重引导管理器Grub使用详解 1.问题的提出 目前发行的Linux版本大多用LILO实现多系统引导,但不同版本的LILO有同样的一个问题:根分区(/boot分区)不能分在1024柱面(约8.4GB ...

  3. mysql切换用户sql语句,MySQL用户管理及SQL语句详解

    [(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...

  4. redis cluster管理工具redis-trib.rb详解

    redis cluster管理工具redis-trib.rb详解 redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集 ...

  5. 第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor

    第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor 环境 准备 安装python3.7.4 问题 解决方法 安装supervisor 配置supervisor服务 启 ...

  6. KVM镜像管理利器-guestfish使用详解

    KVM镜像管理利器-guestfish使用详解 本文介绍以下内容: 1. 虚拟机镜像挂载及w2k8虚拟机启动自检慢问题解决办法 2. KVM虚拟化与guestfish套件 3. guestfish安装 ...

  7. Linux 系统管理 (进程管理、工作管理、系统资源查看、系统定时任务)

    一.进程管理 进程管理的作用: 1).判断服务器健康状态(最重要) 2).查看系统中所有进程 3).杀死进程 1-1.进程的查看--ps和pstree命令 # 查看系统中所有进程,使用BSD操作系统格 ...

  8. 超详细 Linux 进程管理与工作管理解析与应用(人工翻译命令选项帮助)

      系统中,程序与命令的执行都通过进程来完成,通过学习Linux的进程管理可以方便地查看与管理计算机执行的任务.尤其是在仅有命令行的系统中,工作管理可以更好地方便管理者进行任务的统筹安排而不需要队列等 ...

  9. nginx配置文件及工作原理详解

    nginx配置文件及工作原理详解 1 nginx配置文件的结构 2 nginx工作原理 1 nginx配置文件的结构 1)以下是nginx配置文件默认的主要内容: #user nobody; #配置用 ...

  10. SQL Server DBA工作内容详解

    原文:SQL Server DBA工作内容详解 在Microsoft SQL Server 2008系统中,数据库管理员(Database Administration,简称为DBA)是最重要的角色. ...

最新文章

  1. Centos7下编译安装python2.7.10
  2. 容器精华问答 | 如何进行跨机器的Container做Link ?
  3. 7-6 顺序存储的二叉树的最近的公共祖先问题 (10 分)
  4. Spring Boot 对接微信V3支付(附源码)
  5. 计算机维修难点,计算机组装与维修习重难点.doc
  6. 不同网段实现全网互通
  7. 订阅内容解码失败(非base64码)_【每日礼包】超杀默示录 密文解码礼包大全
  8. 网页版邮箱提取/采集软件
  9. Laravel接入SDK淘宝客调用
  10. LeetCode(179) Largest Number
  11. 仿高德地图首页效果,简单代码实现
  12. 带缓冲的输入/输入流
  13. 什么是有限状态机FSM
  14. 睿呈时代与袋鼠云签署战略合作协议,携手助推传统行业数字化转型
  15. OAI-PMH:元数据获取标准
  16. C++功能模块2:mkdir()创建文件夹目录
  17. VisualStudio神级插件Resharper技巧基础入门到骨灰玩家使用全教程+Resharper性能优化...
  18. 浮动练习之猫眼电影的电影页面
  19. 反调试/反汇编技术、TEB/PEB部分说明
  20. FFmpeg音频解码流程详解及简单demo参考

热门文章

  1. 025_MapReduce样例Hadoop TopKey算法
  2. POJ 1611 The Suspects(简单并查集)
  3. CAKeyframeAnimation简单实用
  4. SQLite 不能加密?
  5. 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
  6. MySQL 用户表损坏 无法导出数据 无法使用mysql_update mysqd --update=FORCE无效 措施之一
  7. 【树莓派之旅】第01期:一根网线搞定树莓派可视化界面
  8. vscode调试typescript
  9. PhpStorm连接docker容器内的php XDebug进行断点调试
  10. Android开发技巧:给Button的点击上色