进程和计划任务管理

进程和计划任务管理

一、进程管理相当于Windows的任务管理:

程序是没有运行的代码。进程是运行起来的代码。
线程:线程相当于复制了进程的部分代码,程序运行起来之后,真正执行的是线程执行。
一个进程多个线程

Linux系统当中
启动程序的过程:
父进程先启动--------子进程。
子进程的资源由父进程进行分配。
结束的过程:
子进程先结束------父进程收回子进程的资源----------父进程才会终止。
特殊情况:
父进程结束了,子进程还在?僵尸进程

查看进程信息: 静态查看 、动态查看

ps--------------静态查看进程信息

方法一:ps -aux 静态查看进程信息的方法(常用)

a:显示终端上所有进程,包括其他用户的进程。
u:列出进程的执行用户。
x:显示当前终端进程的详细信息。

[root@localhost ~]# ps -aux     查看进程占用系统资源的情况
USER      PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

USER:进程的用户
PID:进程号,每个进程在系统运行中的唯一标识,每个pid不重复
%cpu:进程占用的cpu百分比
%MEN:进程占用物理内存的百分比
VSZ:进程使用的虚拟内存大小(KB)
RSS:进程占用物理内存的量(KB)
TTY:表示终端。?表示该进程不是从用户端启动,而是系统自启动
STAT:status 状态 进程的状态(以下五种状态比较重要)
S:处于休眠状态,但随时可唤醒。
D:处于不可唤醒的休眠状态。
R:运行
T:停止状态,后台进程暂停或者进程处于跟踪调试状态。
z:僵尸进程,父进程先结束,子进程还活着
补充说明:
状态后面的字符含义:
s:该进程包含子进程
l:该子进程有多个线程
<:进程优先级高
N:底优先级
+:该进程位于前台
L:该进程有一部分被锁进了内存

START:进程启动的时间
TIME:进程实际使用CPU运行的时间
COMMAND:进程启动命令

方法二、ps -elf 静态查看进程的方法

e:显示系统内的所有进程
l:显示进程的详细信息
f:完整的格式展示进程的信息
F:表示
S:进程的状态
UID:该进程的用户
ppid:该进程的父进程,谁启动的这个进程
c:进程在生命周期当中的CPU利用率
PRI:优先级,数字越大优先级越低
NI:谦让值
ADDR:进程在内存当中的地址
SZ:假如该进程被换出,需要交换空间的大小**(swap交换空间)**
WCHAN:如果进程处于休眠状态,显示睡眠中的系统函数名。
STIME:进程启动时间
time:进程实际使用cpu的时间
CMD:进程启动的详细命令

[root@localhost ~]# ps -elf 
F S UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY       TIME CMD

使用方法(配合管道符 | 使用)
ps -aux | grep nginx

方法三、动态获取进程信息

top
1(显示CPU数和状态)
c(根据CPU占用量的百分比大小,从大到小排列)
q (退出top)
top -b -n 1 (只运行一次之后退出)

[root@localhost opt]# top
top - 11:02:56 up  7:15,  2 users,  load average: 0.00, 0.01, 0.05 
Tasks: 222 total,   2 running, 220 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3861508 total,   910064 free,   864292 used,  2087152 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2530636 avail Mem 

top - 11:02:56 up 7:15, 2 users, load average: 0.00, 0.01, 0.05

11:02:56 系统时间
up:系统运行的市场
3 user :当前登录系统的用户
load average: 0.00(1分钟), 0.01(5分钟), 0.05(15分钟)系统处理任务数的平均数

Tasks: 222 total, 2 running, 220 sleeping, 0 stopped, 0 zombie

进程信息:总共222个进程 2个正在运行 220个正在休眠 0个终止进程 0个僵尸进程

%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st(必会看)

us :系统用户占用CPU的百分比
sy : 内核占用CPU的百分比
ni :优先级的调用占用的CPU
id :当前系统空闲的CPU的百分比(主要看)
wa : 磁盘的读写性能
hi:1分钟内CPU使用率si:5分钟内CPU使用率st:15分钟内CPU使用率

KiB Mem : 3861508 total, 910064 free, 864292 used, 2087152 buff/cache
KiB Swap: 4063228 total, 4063228 free, 0 used. 2530636 avail Mem

等同于 free -h

进程信息区各列的作用:

pid:进程号
user:进程的用户
pr:优先级
ni :谦让值
VIRT:进程使用的虚拟内存 KB
RES:进程使用的物理内存 KB
SHR:共享进程的内存
%MEM:进程占用物理内存的百分比
TIME+:进程使用CPU的时间
CMD:进程启动的详细命令

运维的指标:

五大负载:
CPU负载:监控CPU的使用率 工具:top htop 了解CPU是否过载
占用85%需要注意 90%告警
**内存负载:**监控内存 free/top 内存占用比一般是90%告警。
优化:关闭不需要的服务,清除缓存(echo 1 > /proc/sys/vm/drop_caches)

[root@localhost opt]# echo 1 > /proc/sys/vm/drop_caches    #清楚缓存文件命令

硬盘负载:I/O 磁盘读写命令
iostat 查看硬盘读写性能
网络负载:带宽利用率,流量的使用情况。 iftop ifconfig 需要epel源才可以下载
进程负载:监控进程使用资源的情况 top ps.

pgrep 查找进程ID 一般配合kill 一起使用。
-a 显示进程名和pid号

[root@localhost opt]# pgrep -a nginx
17082 nginx: master process /usr/sbin/nginx
18940 nginx: worker process
[root@localhost opt]# pgrep -a nginx | kill -9 17082

-c 仅显示匹配进程的数量(不常用)

[root@localhost opt]# pgrep -c nginx
3

-f 匹配进程名及其参数

[root@localhost opt]# pgrep -f nginx
18934
18935
18940

jobs 列出位于后台进程的状态信息
-l 列出后台所有进程的PID号,进程名

[root@localhost opt]# jobs -l
[1]  17429 停止 (信号)         top
[2]  17569 停止 (信号)         top

-p 列出后台进程组ID,只有pid

[root@localhost opt]# jobs -p
17429
17569

-n 仅列出最近运行中的后台进程

-r 仅显示正在运行的后台进程

-s 仅显示已停止的后台进程

如何把运行的程序调度到后台:

在命令行的结尾加一个 & 符号,就是把进程调度到后台运行。
fg 可以把后台的任务调度到前台。

进程管理:
结束进程的命令:kill -9 进程号 强制结束该进程
面试:kill进程是用什么来结束进程的?
kill 只是传递信号 -9是表示强制和立即执行 系统立即杀死此进程

僵尸进程(面试):

面试题:如果有僵尸进程应该怎么办?
1、少量的僵尸进程影响不大,僵尸进程占用资源很少,可以忽略
2、大量的僵尸进程怎么办? 僵尸进程使用kill命令杀不掉无法强制终结 重启

运维(运行,保证运行,维护正常运行)

二、计划任务:定时任务

***** ***** ***** ***** ***** 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-7 0/7都表示周日)

***************** +一般可执行的脚本或者命令

crontab

“ * ”表示该范围内的任意时间
“ , ”表示 间隔 多个不连续的时间点
1,3,5 * * * * ls 每个小时的第一分钟,第三分钟,第五分钟 都执行一次ls
“ / ” 表示间隔频率
*/5

30 8 * * * ls 每天的8点30分执行一次ls
30 13-16 * * * ls 每天的13-16点30分,执行一次ls
30 6 * /10 * ls 每个月,每隔十天的早上6点30分执行ls
30-35 17 * * 3 ls 每周三的下午17点的30-35分钟执行ls

创建定时任务:后台执行
crontab -e 创建定时任务,默认就是当前用户执行一般为root
crontab -e -u 用户名 指定用户创建定时任务
crontab -l -u 展示指定用户的定时任务

删除定时任务:
crontab -r 是全部清空 (不要用啊)

crontab -e 进去不需要那个dd删除哪个

crontab -l 查看定时任务

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码要你命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值