一.查看进程和控制进程
程序和进程的关系
程序
保存在硬盘、光盘等介质中的可执行代码和数据
文件中静态保存的代码
二进制文件,静态**/bin/data、/usr/sbin/sshd**
进程
在CPU及内存中运行的程序代码‘
动态执行的代码
父、子进程
每个程序可用创建一个或多个进程
进程是程序运行的过程、动态,有生命周期及运行状态
线程
线程被包含在进程中,是进程中的实际运作单位,也是操作系统中能够独立运行的基本单位,也称为轻量进,一个进程中可以并发多个线程.
程序—>进程—>线程
僵尸进程:
一个进程结束了,但是如果该进程的父进程已经先结束了,
那么该进程就不会变成僵尸进程,因为每个进程结束的时候,
系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,
如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。
但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
2)进程的几个状态
① 运行状态:R
② 可中断睡眠状态:S
③ 不可中断睡眠状态:D
④ 僵死状态:Z
⑤ 停止状态:T
CPU同一时刻只能运行一个进程,存在cpu时间片:给一个进程分配一个时间,实际这个时间非常短;
二.查看进程命令
1.ps
ps -aux
a:显示终端上的所有进程,包括其它用户的进程。
u:表示列出进程的用户。
x:显示所有终端的进程信息。
![](https://img-blog.csdnimg.cn/img_convert/ca489b15f3b94007adb8113ae53a4873.png)
USER 产生进程的用户
PID pid进程号
%CPU 占用cpu的百分比
%MEM 占用内存的百分比
VSZ 占用的虚拟内存
RSS 实际用到的物理内存
TTY 进程运行的终端 TTY本机 PTS/0 远程终端
STAT 进程运行的状态 R正常运行状态 S可中断睡眠状态 D不可中断的睡眠状态 Z僵死状态 T停止状态 X死亡状态 Ss 小s表示控制进程 S< <表示高优先级 SN N表示低优先级 l表示多个进程 +表示前台进程
START 进程触发的时间
TIME 占用cpu的时间
COMMAND 执行进程的命令 []内核产生的进程(内核态) 不带【】是用户产生的进程
ps -elf
-e:显示系统内的所有进程信息。
-l:使用长格式显示进程信息。
-f:使用完整的格式显示进程信息。
-a:显示所有进程pid。
-T:查看线程信息。
![](https://img-blog.csdnimg.cn/img_convert/b195788247e2481bb3b2920da74d8e2e.png)
F:代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
S:代表这个程序的状态 (STAT)
UID:代表执行者身份
PID:进程的ID号
PPID:父进程的ID;
C:CPU 使用的资源百分比
PRI:指进程的执行优先权(Priority的简写),其值越小越早被执行;
NI :进程的nice值,可以调整影响优先级PRI的大小;只能root可以修改值;(若PID=80,NI=0,想要更改优先级,就把NI=-20,PRI就变成60)
ADDR :这个是内核函数,指出该程序在内存的那个部分。如果是个执行
的程序,一般就是『 - 』
SZ: 使用掉的内存大小;
WCHAN:目前这个程序是否正在运作当中,若为 - 表示正在运作;
TTY:登入者的终端机位置
TIME:使用掉的 CPU 时间。
CMD:执行命令
ps默认以PID的顺序列出
ps -o 指定输出内容
ps -o user,pid,stat(指定查看用户,pid号和进程状态)
![](https://img-blog.csdnimg.cn/img_convert/6e99d63c8ac54733b03fc3bc225c2161.png)
2.top命令
查看实时的进程,每3秒更新一次
![](https://img-blog.csdnimg.cn/img_convert/fdc9d2fcbf7c41fe8fa9c50b5277fd15.png)
top 当前时间 up 进程时间 load aveaage CPU的平均负载参数
状态 一共163进程 1个运行 162个处于睡眠状态 0个停止 0个死亡
top用法
c 键:根据CPU使用百分比大小进行排序
q 键:退出 top 程序
数字1 键:显示CPU个数和状态
3.pstree
查看进程以树状结构显示
-u 显示用户
-p 显示PID
![](https://img-blog.csdnimg.cn/img_convert/d2e2777af92d42b0a4720428625cc604.png)
4.kill
kill 进程号 杀死进程
-l 查看可用选项
-1 重启
-9 强制杀死
-15 走完流程再杀死,系统默认为15
killall 进程名 杀死所有进程
5.进程相关操作
进程后面+d,表示是daemon守护进程
图形化界面:
ctrl+alt+f1键:图形界面
ctrl+alt+f2-6键:字符界面
starts:返回图形界面(打开新的图形界面)
前台进程:中止后台仍在运行
后台进程:中止即停止进程
命令模式
ctrl+z 将进程调到后台
比如vim tom:编辑内容到一半需要做别的事情,就可以把编辑一半的资料放在后台
命令写到一半想要存放后台 直接在命令后面加上“&”
jobs:查看后台进程
fg+后台任务号,将进程调出到前台,
若命令后面不加&,中间摁键:ctrl+z:暂停放在后台;
bg+任务号,取消暂停在后台回复运行
直接中断停止进程:ctrl+c
kill -9 %1:杀死后台进程号1
三.计划任务管理
1.crontab周期性任务设置
crontab命令
按照预先设置的时间周期重复执行用户指定的命令操作;执行此命令需要运行守护进程:crond,但是现在系统一般都是自动运行的。
代表意义 分钟 小时 日期 月份 周 命令
数字范围 0~59 0~23 1~31 1~12 0~7 需要执行的命令
#周的数字为 0 或 7 时,都代表“星期天”的意思。
*表示该范围内的任意时间
,表示间隔的多个不连续时间点 1,3,5
-表示一个连续的时间范围 2-10 * * * *1-3
/表示间隔的时间频率 */10 * * * * */10
crontab -e
1.每分钟定时执行一次规则:
每1分钟执行: */1 * * * *或者* * * * *
每5分钟执行: */5 * * * *
2.每小时定时执行一次规则:
每小时执行: 0 * * * *或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午7点10分执行:10 7 * * *
3.每天定时执行一次规则:
每天执行 0 0 * * * --每天的24点执行
4.每周定时执行一次规则:
每周执行 0 0 * * 1 --每周的第一天,24点,执行
5.每月定时执行一次规则:---每个月的第一天,24点执行
每月执行 0 0 1 * *
6.每年定时执行一次规则 ---第一个月的第一天,24点执行
每年执行 0 0 1 1 *
7.其他例子
5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]