有一些进程想要结束怎么办呢?进程的优先是怎样的呢?如何查看后台正在运行的进程呢?下面我就来讲讲
给进程发送信号(kill -l列出所有支持的信号)
[root@qianfeng ~]# kill -l
编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断Ctrl+C
3) SIGQUIT 键盘退出Ctrl+,类似SIGINT
9) SIGKILL 强制终止,无条件
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
打开两个终端:
1. 通过另一个终端,查询两个进程。
[root@qianfeng ~]# ps aux |grep vim
root 4362 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim file1
root 4363 0.1 0.2 11068 2948 pts/2 S+ 23:02 0:00 vim file2
2. 发送信号15 和信号9 ,观察两个终端程序状态。
[root@qianfeng ~]# kill -15 4362
[root@qianfeng ~]# kill -9 4363
观察两个终端,一个正常终止,一个非法杀死。
Linux 进程调度及多任务
每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
优先级图示:
系统中的两种优先级:
NI: 实际nice值
PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39
注意:
nice 值越高: 表示优先级越低,例如+19
nice 值越低: 表示优先级越高,例如-20
查看进程的nice级别:
[root@localhost ~]# ps axo pid,command,nice,cls --sort=-nice
注意:启动进程时,通常会继承父进程的 nice级别,默认为0。观察两个程序的不同nice值。
手动启动不同的优先级:
[root@localhost ~]# nice -n -5 sleep 6000 &
[1] 2220
[root@localhost ~]# nice -n -10 sleep 7000 &
[2] 2229
[root@localhost ~]# ps axo command,pid,nice | grep sleep
sleep 6000 2220 -5
sleep 7000 2229 -10
grep --color=auto sleep 2233 0
更改进程的nice级别:
使用shell更改nice级别
1 创建一个睡眠示例程序。
[root@localhost ~]# sleep 7000 &
[2] 2669
2 修改他的nice值。
[root@localhost ~]# renice -20 2669
2669 (进程 ID) 旧优先级为 0,新优先级为 -20,观察修旧的nice值。
作业控制是一个命令行功能,也叫后台运行。
解释:
& 后台运行程序
jobs 查询后台
kill %1 停止后台进程
foreground:前台进程:是在终端中运行的命令,占领终端。
background:后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
1.观察占领前台的现象
[root@qianfeng ~]# sleep 2000
运行一个程序,当前终端无法输入。观察占领前台的现象。
大部分命令行输入已经无效。
2.运行后台程序
[root@qianfeng ~]# sleep 3000 &
3.ps查询所有程序。
[root@qianfeng ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000
http://4.jobs查看后台进程。
[root@qianfeng ~]# jobs
[1]- Running sleep 3000 &
5.调动后台程序至前台。
[root@qianfeng ~]# fg 1 //将作业1调回到前台
6.消灭后台进程
[root@qianfeng ~]# kill %1
注意,“kill 1” 和 “kill %1” 不同,
前者终止PID为1的进程,
后者杀死作业序号为1的后台程序。