进程和计划任务管理07
一、进程
进程管理相当于windows的任务管理器。
程序是一串没有运行的代码。
进程是运行起来的代码。
线程:相当于复制了进程的部分代码,程序运行起来之后,真正执行的是线程。
1、linux系统当中启动程序与结束的过程
启动的过程:
父进程先启动-------子进程的资源由父进程来进行分配。
结束的过程:
子进程先结束-----父进程收回子进程的资源-------父进程才会终止
特殊情况:
父进程结束,子进程还在-----僵尸进程
2、查看进程信息
查看进程信息主要有两种方式
1、静态查看
2、动态查看
3、ps命令
ps------静态查看进程信息。
3.1方法一:ps -aux
ps -aux
a:显示终端上的所有进程,包括其他用户的进程。
u:列出进程的执行用户。
x:显示当前终端详细的进程信息
3.1.1、ps -aux分析进程信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 202280 6660 ? Ss 5月22 0:49 /usr/lib/systemd/systemd --switched-root --sys
root 2 0.0 0.0 0 0 ? S 5月22 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 5月22 0:14 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 5月22 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 5月22 0:08 [migration/0]
root 8 0.0 0.0 0 0 ? S 5月22 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 5月22 1:00 [rcu_sched]
user:进程的用户
(重要)pid:进程号,每个进程在系统中运行时的唯一标志。每个pid都是不重复的
(重要)%CPU:进程占用cpu的百分比
(重要)%MEM :进程占用物理内存的百分比
vsz:进程使用的虚拟内存大小(kb)
(重要)RSS:占用物理内存的量(kb)
tty:表示终端。?表示该进程不是由终端启动的
(重要)STAT:status状态
进程状态:
1、S:sleep 处于休眠状态,但是随时可唤醒。
2、D:处于不可唤醒的休眠。
3、R:运行。
4、T:停止状态,后台进程暂停或者进程处于跟踪调试状态。
5、Z:僵尸进程,父进程先结束,子进程还在。
START:进程启动的时间。
(重要) TIME:进程实际使用cpu运行的时间。
COMMAND:进程启动的命令。
补充说明:
在状态后面的字符含义
s:该进程包含子进程
<:该进程优先级高
N:低优先级
l:该进程有多个线程
+:该进程位于前台运行
L:该进程有一部门被锁进内存。在内存中运行不会被写入磁盘。
ps -aux主要用来查看进程占用系统资源的情况。
3.2、第二种:ps -elf
ps -elf 也是静态查看进程信息的方法
e:显示系统内的所有进程
l:显示进程的详细信息
f:完整的格式显示进程的信息。
3.2.1、ps -elf分析进程的信息
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 50570 ep_pol 5月22 ? 00:00:49 /usr/lib/systemd/systemd --switched-
1 S root 2 0 0 80 0 - 0 kthrea 5月22 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 5月22 ? 00:00:15 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker 5月22 ? 00:00:00 [kworker/0:0H]
1 S root 7 2 0 -40 - - 0 smpboo 5月22 ? 00:00:08 [migration/0]
1 S root 8 2 0 80 0 - 0 rcu_gp 5月22 ? 00:00:00 [rcu_bh]
1 S root 9 2 0 80 0 - 0 rcu_gp 5月22 ? 00:01:03 [rcu_sched]
F:内核分配给进程的系统标识
S:进程的状态
UID:该进程的用户
pid:该进程的进程号
PPID:该进程的父进程,谁启动的这个进程
(重要)c:进程在生命周期当中的cpu利用率。
PRI:优先级 数字越大,优先级越低
NI:谦让值
ADDR:进程在内存当中的地址。
SZ:假如该进程被换出,需要的交换空间的大小
WCHAN:如果进程处于休眠状态,显示睡眠中的系统函数名
STIME:进程启动的时间
time:进程实际使用cpu运行的时间
cmd:进程启动详细命令
二、进程管理
1、僵尸进程
特殊的进程:僵尸进程
结束进程的命令:kill
kill -9 强制结束该进程
2、一问一答
问题一:kill 进程是谁来结束进程?
答:kill只是传递一个信号 ,标识-9表示强制和立即。系统将进程结束。
问题二:如果有僵尸进程你应该怎么办?
答:少量的僵尸进程影响不大,因为僵尸进程所占的系统资源很少,可以忽略不计。
问题三:僵尸进程太多了怎么办?
答:僵尸进程没有办法通过kill强制结束。
重启之后僵尸进程就消失。
3、top命令
top------------------------动态获取进程信息
3.1、top进程的信息
top - 11:05:24 up 1 day, 11:17, 4 users, load average: 0.00, 0.01, 0.14
Tasks: 235 total, 1 running, 233 sleeping, 1 stopped, 0 zombie
%Cpu(s): 5.4 us, 7.4 sy, 0.0 ni, 87.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
#free -h 内存信息
KiB Mem : 3861508 total, 473332 free, 999272 used, 2388904 buff/cache
KiB Swap: 4063228 total, 4057084 free, 6144 used. 2280536 avail Mem
11:05:24:系统时间
up:系统运行的时长
4 users:当前登录系统的用户
load average: 0.00, 0.01, 0.14
系统的负载 0.00 1分钟内 0.01 5分钟内 0.14 15分钟内 系统处理的任务数的平均值
Tasks: 235 total, 1 running, 233 sleeping, 1 stopped, 0 zombie
进程信息:219 total 系统总共有多少个进程
running 运行的进程数
sleeping 休眠的进程数
stop:终止的进程数
zombie:僵尸进程数
(重点)%Cpu(s): 5.4 us, 7.4 sy, 0.0 ni, 87.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us:系统用户占用cpu的百分比
(重点)sy:内核占用cpu的百分比
ni:优先级的调度占用的cpu
(重点)id:系统空闲的cpu比率 主要看id
wa:磁盘的读写性能
hi:1分钟内cpu的使用率
si:5分钟内cpu的使用率
st:15分钟内cpu的使用率
3.1.1、进程信息区各列的作用
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID:进程号
USER:进程用户
PR:优先级
NI:谦让值
VIRT:进程使用的虚拟内存(kb)
RES:进程使用的物理内存(kb)
SHR:进程使用共享内存的大小
S:进程的状态
(重点)%CPU:进程占用cpu的百分比
(重点) %MEM :进程占用物理内存的百分比
TIME+:进程使用cpu的时间总计1/100秒
COMMAND:进程启动的
小tips:按 数字键1 显示cpu的个数和状态
按 c键 根据cpu占用量的百分比大小,从大到小排序
按 q键 退出top
top -b -n 1:运行一次后立刻退出top相当于ps静态
4、运维的指标:
(重点)五大负载:
cpu负载:监控cpu的使用率 工具:top htop,了解cpu是否过载,cpu占用了85%需要注意了90%告警
(重点)内存负载:监控内存free top内存占用比一般是90%告警,
优化:关闭不需要的服务,释放缓存 .
清理缓存命令:echo 1 > /proc/sys/vm/drop_caches
(重点)硬盘负载:I/O 磁盘的读写性能
4.1、iostat命令
iostat:显示磁盘和输入/输出操作的统计信息
4.1.1、分析进程信息
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
kB_read/s:每秒读
kB_wrtn/s :每秒写
kB_read:总共读
kB_wrtn:总共写
网络负载:带宽的利用率,流量的使用情况。
进程负载:监控进程使用资源的情况 top ps。
4.2、pgrep命令
pgrep 查找进程id 一般配合kill一起使用。
(重点)-a:显示进程名和pid号
-c:仅显示匹配进程的数量,不显示其他内容,一般不用
-f:匹配进程名及其参数
4.3、jobs命令
jobs:列出位于后台进程
(重点)-l :列出后台进程的pid号,进程名
-p:列出所有后台进程进程组id 只有pid
-n:仅显示最近的后台进程
-r:仅显示正在运行的后台进程
-s:仅显示已经停止的后台进程
问题一:如何把运行的程序调度到后台:
答:在命令的结尾加一个 & 把进程调度到后台运行
tips:fg可以把后台的任务调度到前台
三、计划任务管理
1、计划任务(定时任务)
1.1、crontab命令
crontab -e 建立定时任务 默认当前用户执行
crontab -e -u 用户名 指定用户创建定时任务
定时任务在后台执行
crontab -l 展示当前定时任务
crontab -l -u 展示指定用户的任务
删除定时任务
crontab -r 是全部清空,慎用!!
crontabl -e 进去不用哪个删那个
1.2、执行脚本⁕⁕⁕⁕⁕
⁕ ⁕ ⁕ ⁕ ⁕ 对应表示 分 时 日 月 周
取值范围
分 :0-59
时 :0-23
日:1-31
月:1-12
周:0-7 0和7都表示周日
1.2.1、⁕⁕⁕⁕⁕用法
⁕ ⁕ ⁕ ⁕ ⁕ 一般是可执行的脚本
⁕:该范围内的任意时间
,:表示间隔 多个不连续的时间点
例如:每10分钟 20分钟 30分钟 执行一次
10,20,30 * * * * ls
-:表示连续的时间范围
/:表示间隔的频率
例如:每间隔5小时
*/5 * * *ls
举例:
每天早上的8点30分执行一次ls
30 8 * * * ls
每天早上的13-16点30分,执行一次ls
30 13-16 * * * ls
每个月中,每隔10天的早上6点30分执行一次
30 6 */10 * * ls
每周三的下午的17点的30-35分钟执行ls
30-35 17 * * 3 ls