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