作业与进程

一、程序、进程、作业


(一)程序
程序是一组指令及数据的集合,指令按照既定的逻辑控制计算机运行来完成特定任务。
程序是静态的,运行后成为进程。

(二)进程
进程是运行着的程序,是操作系统执行的基本单位,是程序运行的过程,是动态的,有生命周期和运行状态。

1.进程的状态
进程状态包括以下五种:
(1)TASK_RUNNING(运行态):进程正在执行,或者在运行队列中等待执行。
(2)TASK_INTERRUPTIBLE(可中断睡眠态):进程被阻塞,等待某些条件的完成。一旦完成这些条件,内核就会将该进程的状态设置为运行态。
(3)TASK_UNINTERRUPTIBLE(不可中断睡眠态):进程被阻塞,等待某些条件的完成。与可中断睡眠态不同的是,该状态进程不可被信号唤醒。
(4)TASK_ZOMBIE(僵死态):该进程已经结束,但是其父进程还没有将其回收。
(5)TASK_STOP(终止态):进程停止执行。通常进程在收到SIGSTOP、SIGTTIN、SIGTTOU等信号的时候会进入该状态。

(三)作业
就是用户提交给系统的一个任务。
若干进程共同完成一个作业。作业可以包含一个或多个进程。

jobs的状态可以是running, stopped, Terminated。

(四)进程与作业的区别与联系
1.联系
一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
用户提交作业以后,当作业被调度,系统会为作业创建进程,一个进程无法完成时,系统会为这个进程创建子进程。

2.区别
进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。

作业有作业id,叫jobid
进程有进程id,叫pid

使用作业id时,必须在前面加%
使用进程id时,直接使用数字,不需要加%


二、信号signal


linux是通过一个信号(signal)去告知进程要做什么。主要信号代号与名称含义如下:

代号名称含义
1SIGHUP启动被终止的进程,可让该pid重新读取自己的配置文件,类似重新启动
2SIGINT相当于用键盘输入 ctrl-c 来终端一个进程的运行
9SIGKILL强制终止一个进程的运行,如果该进程进行到一半,那么尚未完成的部分可能会有半成品产生,类似 vim 会有 .filename.swp 保留下来
15SIGTERM正常终止该进程。由于是正常的终止,所以后续的动作会完成。不过,如果该进程已经发生问题,就无法使用正常的方法终止时,输入该 signal 也是没有用的
19SIGSTOP相当于用键盘输入 ctrl-z 来暂停一个进行的进程


三、查看所有进程或作业

(一)使用ps命令,查看所有进程,可以查看pid
(二)使用jobs命令,查看所有作业,可以查看jobid,job状态
jobs -l选项可显示作业对应进程的pid。

概念:当前作业

如果后台的作业号有2个,分别是[1],[2];当[1]作业执行完毕,[2]作业还在执行中,当前作业便会自动变成[2]作业。所以可以得出一点,即当前作业是会变动的;当用户输入fg、bg命令时,如果不加任何序号,则默认均是当前作业。


四、前台与后台

进程或作业可分为前台运行与后台运行。
(一)前台:是在终端中运行的命令,那么该终端就是进程的控制终端,一旦这个终端关闭,这个进程也随之消失。
(二)后台:是运行在后台的进程,不受终端控制,它不需要终端的交互。
键入命令后,在最后加一个&,将进程放在后台运行。


五、前后台切换


1.将前台切换到后台
先使用Ctrl+z把作业暂停,然后用 bg %jobid命令把它放到后台运行
2.将后台切换到前台

fg %jobid(或者简单的用%jobid)将后台中的命令调至前台继续运行。


六、暂停


(一)后台进程或作业的挂起


kill -19 pid将进程挂起;
kill -19 %jobid,将作业挂起;


(二)前台进程或作业的挂起

 ctrl+z


八、恢复


当要恢复被挂起任务时,通过bg %jobid 使其在后台执行;
当要使其在前台执行时,通过fg %jobid即可;


九、终止


(一)使用kill %jobid,终止作业。%%代表最近的作业,%-代表次最近的作业
(二)使用kill pid,终止进程
(三)前台进程或作业的终止:使用ctrl+c


十、nohup


如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
以下命令在后台执行 root 目录下的 runoob.sh 脚本:
nohup /root/runoob.sh &
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值