jobs-l,jobsl命令
4-6 Linux 终止进程 --- kill (kill -15 实验)
kill -15 PID —— 正常方式终止一个程序。中断进程时应首先用 -15,以便于其能够预先清理临时文件和释放资源。-9?作为最后手段,应对那些失控的进程。
1)、kill -15 终止后台运行的进程。
红色下划线:sleep 10000 —— 后台运行延时 10000 秒的命令,进程 ID 为1550。
黄色下划线:ps -j —— 列出 1550 sleep 命令的进程。
(PID:进程 ID、PGID:线程组 ID、SID:会话 ID、TTY:进程运行的终端,标识那个终端控制。(pts远程终端、tty系统终端)、TIME:进程运行的时间 和 CMD:命令的名称和参数)。
jobs -l —— 列出后台运行的命令,1550 sleep 命令正在后台运行。
蓝色下划线:kill -15 1550—— 终止1550 进程。系统反馈?Terminated?终止 1550 进程。
绿色方框:ps -j 已查询不到?1550 sleep 的进程。jobs -l 也没有后台运行的命令。
2)、kill -15 配合 fg 查看终止挂起的进程。
红色下划线:sleep 10000 延时 10000 秒后 ctrl + z 挂起。
黄色下划线:ps -j 查看进程,有 1578 sleep 的进程。jobs -l 查看后台,1578 sleep 的状态是 stopped 暂停状态。
蓝色下划线:kill -15 终止 1578 进程。此时系统没有反馈信息。
绿色下划线:ps -j 查看进程,1578 sleep 进程仍在。jobs -l 查看后台,1578 sleep 的状态是 stopped 暂停状态。
红色下划线:fg 1 把后台运行的 sleep 调至前台继续运行。此时,系统首先提示 sleep 已经调至前台运行,然后又提示?Terminated 终止进程。
蓝色下划线:ps -j 查看进程已经没有了 1578 sleep 进程。jobs -j 查看也后台也没有命令在执行。
3)、kill -15 配合 bg 查看终止挂起的进程。
同样的,首先sleep 10000 后 ctrl + z 挂起。通过 ps -j 查看后台进程有 1590 sleep进程,josb -l 查看后台也有状态为 stopped? 的1590 sleep 命令。 然后,kill -15 1590 终止 1590 进程。再次通过 ps -j 查看1590 sleep进程仍在,josb -l 查看后台还有状态为 stopped? 的1590 sleep 命令。
红色下划线:bg 1 把挂起的 sleep 命令继续运行。此时,系统反馈 sleep 命令在后台运行。
黄色下划线:ps -j 查看进程,系统反馈 sleep 进程已经? Terminated? 终止。jobs -l 也查询不到sleep 在后台运行。
从实验上看:
1、后台命令运行时(Running),执行 kill -15 可以终止进程。
2、挂起命令,处于暂停状态时(Stopped),执行 kill -15 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是 Stopped 暂停状态。用 fg 把暂停的后台进程调至前台运行时,系统反馈一行 sleep 命令调至前台运行。跟着一条 Terminated 终止进程。再用 ps 查询不到进程。用 jobs 已经查询不到后台命令。(这里和 kill -2 不同,kill -2 后用 fg 系统只反馈一行 sleep 命令调至前台运行,没有提示进程已中断。)
3、挂起命令,处于暂停状态时(Stopped),执行 kill -15 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是?Stopped 暂停状态。用 bg 把暂停的后台命令恢复运行时,系统反馈 sleep 命令在后台运行。再用 ps 查询进程已经终止,用 jobs 已经查询不到后台命令。(这里和 kill -2一样)

如何将后台运行的程序转到前台来
一、Shell支持作用控制,有以下命令:
command???????? 让进程到后台运行
jobs? -l?? 查看后台运行的进程
fg?? %n?? 让后台运行的进程n到前台来
bg?? %n让进程n到后台去
PS : "n"为jobs查看到的金城编号
二、执行命令切换到后台
在linux终端运行命令的时候,在命令尾囧上符号,就可以让程序在后台运行。
三、切换正在运行的程序到后台
如果程序正在前台运行,可以使用Ctrl+z先把程序暂停,然后用bg?? %[number]? 命令把这个程序放在后台运行,这个步分三步若下:
1、暂停程序运行Ctrl+z
Ctrl+z跟系统任务有关的,Ctrl+z可以将一个正在前台执行的命令放到后台。并且暂停。
[Oracle@linuxidc ~]$ sh ins.sh
[1]+Stopped ins.sh
2、查看暂停的程序
查看jobs使用jobs或ps命令可以察看正在执行的jobs。.[oracle@linuxidc ~]$ jobs -l
[1]+ 4524Stopped ins.shjobs命令执行的结果,+表示是一个当前的作业,-表示当前作业之后的一个作业。
jobs ?-l 选项可显示所有任务的PID,jobs的状态可以是running,stopped。Terminated
3、切换程序之后台
bg ?将一个在后台的暂停的命令,变成据需执行弱国后台中有多个命令,可以用bg %jobnumber将选中的命令调出
[oracle@linuxidc ~]$ bg %1
[oracle@linuxidc ~]$ jobs -l
[1]+ 4524Running ins.sh
4.切换程序至前台
也可以用 fg %[number]指令把一个程序掉到前台运行
[oracle@linuxidc ~]$ fg %1
。/tcpserv01
jobs是什么意思?
jobs 是Linux命令
jobs 命令
用途
显示当前会话的作业状态。
语法
jobs [ -l | -n | -p ] [ JobID ... ]
描述
jobs 命令显示了当前 shell 环境中已启动的作业状态。如果 JobID 参数没有指定特定作业,就显示所有的活动的作业的状态信息。如果报告了一个作业的终止,shell 从当前的 shell 环境已知的列表中删除作业的进程标识。
/usr/bin/jobs 命令在自己的命令执行环境下执行就不会工作,因为此环境没有适用的作业来处理。基于这个原因, jobs 命令实现为一个 Korn shell 或 POSIX shell 的常规内建命令。
如果指定了 -p 标志,对于每一个进程标识,输出构成一行。如果没有指定标志,标准输出为带以下字段的几行:
job-number 指出进程组号,以和 wait、fg、bg 和 kill 命令一起使用。当和这些命令一起使用时,在作业号前面加上一个“%”(百分号标志)。
current 一个“+”(加标志)标识了将被 fg 或 bg 命令作为缺省值使用的作业。这个作业标识也能够使用 %+ (百分号、加号)或 %% (双百分号)来指定。
如果当前缺省作业退出,就用一个“-”(减号标志)来标识将要成为缺省作业的作业。这个作业标识也可以用 %-(百分号、减号)来指定。
对于其他的作业,current 字段是一个空格字符。仅一个作业能够用 + 来标识,并且仅一个作业能够用一个 - 来标识。如果有一个单一挂起作业,它就成为当前作业。如果存在至少两个挂起的作业,那么前面的作业被挂起。
state 显示以下值之一(在 POSIX 的语言环境下):
Running
表示此作业没有被信号挂起并没有退出。
Done
表示此作业已经完成并返回退出状态 0。
Done (code)
表示此作业已经正常完成和退出并返回指定的非零退出状态码。这个代码用一个十进制数来表示。
Stopped
表示此作业已经挂起。
Stopped (SIGTSTP)
表示 SIGTSTP 信号挂起作业。
Stopped (SIGSTOP)
表示 SIGSTOP 信号挂起作业。
Stopped (SIGTTIN)
表示 SIGTTIN 信号挂起作业。
Stopped (SIGTTOU)
表示 SIGTTOU 信号挂起作业。
command 给 shell 的有关命令。
如果指定了 -l 标志,就把一包含进程组标识的字段插入到 state 字段之前。另外,在一个进程组中更多的进程可以输出到一些独立行中,只使用 job-number 和 command 字段。
标志
-l (小写 L)提供了更多的关于列出的每一个作业的信息。此信息包括了作业号、当前作业、进程组标识、状态和启动作业的命令。
-n 显示自从最后一次通知后停止或退出的作业。
-p 显示了所选定的作业的进程组引导符的进程标识。
在缺省情况下,jobs 命令显示了所有已停止作业的状态、所有的在后台正在运行的作业和那些状态已经更改但没有被 shell 报告的作业。
退出状态
返回下面的退出值:
0 成功完成。
0 发生一个错误。
示例
1. 要显示当前环境下的作业的状态,请输入:
jobs -l
屏幕输出与以下输出类似的报告:
+[4] 139 Running CC - C foo c
-[3] 465 Stopped mail morris
[2] 687 Done(1) foo.bar
2. 要显示那些名字以“m”打头的作业的进程标识,请输入:
job -p %m
使用示例 1 中报告的作业,屏幕显示以下进程标识:
465
文件
/usr/bin/ksh 包含 Korn shell jobs 内置命令。
/usr/bin/jobs 包含 jobs 命令。
或者有可能是苹果的总裁乔布斯
4-7 Linux 强杀进程 --- kill (kill -9 实验)
kill -9 PID —— 强制杀死一个进程。
1、kill -9 杀死后台运行的进程。
红色下划线:sleep 10000 —— 后台运行延时 10000 秒的命令,进程 ID 为1317。
黄色下划线:ps —— 列出 1317 sleep 命令的进程。
(PID:进程 ID、PGID:线程组 ID、SID:会话 ID、TTY:进程运行的终端,标识那个终端控制。(pts远程终端、tty系统终端)、TIME:进程运行的时间 和 CMD:命令的名称和参数)。
jobs -l —— 列出后台运行的命令,1317 sleep 命令正在后台运行。
蓝色下划线:kill -9 1317—— 杀死?1317 进程。
绿色方框:ps 查询进程,1317 sleep进程已经被杀死(Killed)。jobs -l 已经没有后台运行的1317 sleep 命令。
2、kill -9 终止挂起的进程。
红色下划线:执行 sleep 10000 后 ctrl + z 挂起。
黄色下划线:ps -j 查看进程,有 1342 sleep 的进程。jobs -l 查看后台,1342 sleep 的状态是 stopped 暂停状态。
蓝色下划线:kill -9 杀死 1342 进程。此时系统没有反馈信息。
绿色下划线:ps -j 查看进程,1342 sleep 已经被杀死(Killed)。jobs -l 查看后台,已经没有了? 1342?sleep。
从实验上看:
1、后台命令运行时(Running),执行 kill -9 可以强杀进程。
2、挂起命令,处于暂停状态时(Stopped),执行 kill -9 后通过 ps 查询进程, 可以看到进程已经被杀死。jobs 也查不到有后台命令。(这里和 kill -2、kill -15 不一样。kill -2、kill -15 在挂起命令,处于暂停状态时(Stopped)时执行,通过 ps 还可以查询到进程,jobs 也可以查询到后台仍有处于暂停状态的命令。)
4-3 Linux中的会话和作业(1、后台运行 & 和 查看后台 jobs)
一、会话和作业的概念:
1、进程:Linux自身运行的独立程序。
2、进程组:进程组是一个或多个进程的集合。
_____________________________________________________
Linux包括三种不同类型的进程,每种进程都有自己的特点和属性:
3、交互进程 —— 由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。?
4、批处理进程 —— 这种进程和终端没有联系,是一个进程序列。?
5、监控进程(也称守护进程)—— linux系统启动时启动的进程,并在后台运行。
_______________________________________________________________
6、会话:一个用户登录终端后会新建一个会话,它是和控制终端产生IO交互的过程。这个过程可以称之为会话期。会话期可以产生一个 或 多个进程组的集合。(比喻打电话,首先要电话的接通,接通了才可以产生人与人之间的信息交互。在此会话期间可以产生一个或多个不同范畴的话题)
7、作业:作业类似于用户提交给系统的一个任务。一个作业可以包含一个或多个进程共同完成一个任务。(比喻会议上BOSS需要完成一个任务,根据需求可以分配到一个或多个人配合完成。)
8、作业控制:指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。这样用户就能在多个独立作业间进行切换。(比喻正在进行常规工作的员工,经理突发一个事情需要协助处理。这位员工放下手上的工作(挂起)。首先处理经理安排的事情,完事后再处理常规工作的事情。)
二、通过 date 和 sleep 命令理解前台、后台作业。date 命令是显示系统时间,sleep 命令是设置延时。
1、前台执行命令:
1)、前台执行命令。输入输出都是按部就班,执行完一个命令再执行下一个命令,把结果打印出来。
红色下划线:date 查看当前日期时间。
黄色下划线:sleep 10 延时10秒。
蓝色下划线:date 查看当前日期时间。
通过结果可以看出第一个 date 打印出日期时间后,延时10再执行一个 date 打印日期时间。两个时间相隔 10 秒。
2)、系统正在执行前台的命令时,再输入命令是不会马上执行。要执行完毕前面的命令才可以执行后面输入的命令。同样用 date 和 sleep做实验:
红色下划线:date 输出当前日期时间。
黄色下划线:sleep 60 系统执行延时 60 秒的操作。 [root@localhost ~]#?用户标识符没有出现。虽然光标可以进行输入,但输入的? ? ls /tmp/ 命令并没有马上执行,没有输出。因为此时,前台正在执行 sleep 60 延时60秒的指令。
红色下划线:等待 sleep 60 执行完毕后,再执行一个 date 输出当前日期时间。两个 date 之间时间相隔 60 秒。
黄色下划线:待整条?date ; sleep 60 ; date 命令都执行完毕后,再执行刚才延时 60 秒时输入的?ls /tmp/ 命令,输出结果。
蓝色下划线:[root@localhost ~]# 用户标识符出现才算前台命令执行完毕,可以继续正常操作。
2、后台执行命令:
:命令后面使用 符号,可以让命令在后台执行。
jobs:可以查看正在后台运行的作业。
jobs选项:-l —— 除了列出作业号外,同时列出 PID。
? ? ? ? ? ? ? ? ?-r —— 列出仅仅在后台运行的作业。
? ? ? ? ? ? ? ? ?-s —— 列出仅仅再后台暂停的作业。
1)、后台运行的命令进程不会影响到前台命令进程。
红色下划线:sleep 30 —— 把 sleep? 30 丢到后台运行。
黄色下划线:通过 jobs 命令跟踪进程情况。(Runing —— 正在运行,Done —— 完成)
绿色下划线:sleep 后台运行期间进行了 ls 和 tail 命令的查询输出,正常运作。
蓝色下划线:jobs 没有输出,代表 sleep 已经完结,没有后台进程。
2)、挂起 和 中断后台运行的命令。
Ctrl+c:中断后台进程。Ctrl+z:挂起后台进程。
jobs 命令可以查看到挂起的命令,不可以查看中断的命令。
3)、jobs选项:-l —— 除了列出作业号外,同时列出 PID。
红色下划线:sleep 100 ,后台运行延时100秒的程序。
黄色下划线:jobs -l 列出所有后台进程(-l —— 含作业号、PID、运行状态 和 执行的命令。)??
运行状态有 Running 、Stopped?和 Done,后台正在运行会显示 Running,当运行完毕后用 jobs 查看会显示 Done,并且命令后面的 符号也会消失。Done只出现一次,下次再用 jobs 查看后台程序就没有了系统曾提示过 Done 的命令。挂起正在运行的命令,后台会显示 Stopped 暂停状态。
?-r —— 列出仅仅在后台运行的作业。
-s —— 列出仅仅再后台暂停的作业。