Linux的进程和作业
进程(processes)是指具有独立功能的程序的一次运行过程,也是系统资源分配和调试的基本单位
进程并不等于程序,进程是动态的,而程序是静态的文件,多个进程可以并发调用同一个程序,一个程序可以启动多个进程,为了区分不同的进程,系统为每一个进程分配了一个唯一的进程标识符(PID),即进程号。
1.进程的状态
2.进程的类型
3.进程的优先级
每个进程都有两个优先级值:静态值(niceness)和动态值(priority)。通常讨论的优先级是指静态优先级,这是因为我们无法控制动态优先级。
Linux中进程优先级(niceness)的取值范围是-20~19之间,取值越高,优先级越低。
4.作业
正在执行的一个或多个相关的进程被称为作业。
作业可以分为两类:前台作业和后台作业。前台作业运行于前台,与用户直接交互。后台作业运行于后台,不能直接与用户交互,但可以输出执行结果。
让一个作业在后台执行有两种方法:一是在输入Shell命令后加上&,二是当你正在执行一个前台操作的时候,使用Ctrl+z把当前的作业暂停,然后使用bg命令把该作业转到后台。当该作业在后台执行完毕后,再使用fg命令把该作业从后台转到前台。
5.用命令查看系统的进程①ps命令
-a 显示终端上所有用户的进程
-l 显示进程的详细信息
-u 以用户的格式显示进程的详细信息
-x 显示没有控制台的进程及后台进程
常用ps -aux组合来查看系统中的进程
②top
top命令在执行后会以指定的时间间隔来更新显示的进程信息,因此top命令可以动态地监控系统的性能。
6.设置进程的优先级
①nice命令:在启动进程时用以指定优先级
优先级的取值范围是-20~19之间,取值越高,优先级越低。其中-20~-1只有管理员可以设置,如果不使用nice命令,则默认的优先级为0,如果使用nice命令,而没有指定优先级值,则默认的优先级为10。
下面通过例子来说明nice命令的用法
#vi file1
& //以优先级0在后台执行vi程序 (均可通过#ps -l来查看各个进程的优先级)
#nice vi file2
& //未指定优先级,默认以优先级10在后台执行vi程序
#nice -30 vi
& //以优先级19在后台执行vi程序(-30说明参数的值是30,而正数的最大值为19,
所以只要值大于等于19,都是以优先级19在后台执行程序)
#nice -15 vi
& //以优先级15在后台执行vi程序
#nice --15 vi
& //以优先级-15在后台执行vi程序
#nice --30 vi
& //以优先级-20在后台执行vi程序(只要值小于等于-20,都是以优先级-20在后台执行程序)
②renice命令:对正在运行的进程,设定优先级
注:在使用nice命令时,指定优先级的数字时,要加上"-",如等级-10,则要输入"--10"。但在使用renice命令时,优先级前不需要加"-"。
-p 修改指定进程的优先级,为缺省
-u 修改指定用户所启动进程的默认优先级
-g 修改指定组中所有用户所启动进程的默认优先级
例:
#renice -15
2555 //将进程号为2555的进程的优先级变更为-15
#renice -6 -g teacher //将teacher组的进程优先级修改为-6
#renice -7 -u
tom //将tom用户的里程优先级修改为-7
7.终止进程
①kill命令(kill后加进程号)
-9 发送sigkill信号,当无选项的kill命令不能终进程时,可用其强制终止指定进程
-15 发送sigterm信号,当-9选项无效时使用
例:
#kill -9 2114 //强制终止进程2114
②killall命令(killall后加进程名)
如果系统中存在同名的多个进程,若要一次终止这些进程,可用此命令。killall的信号代码与kill相同
例:
#killall -9 vi //结束系统中所有的vi进程