Linux系统管理
信号管理
kill
语法:kill [选项][进程号]
kill -l
列出所有支持的信号
1
HUP: 挂起信号 重配置文件 (类似重启)
2
INT:终止信号,类似ctrl+c
3
QUIT: 停止信号,有些服务没有停止命令,则可以用kill -3
9
KILL:强制杀死进程,不能被进程捕获
15
TERM:kill的默认终止信号 kill -15=kill
18
CONT:将暂停的信号恢复运行
19
STOP:暂停进程
20
TSTP:用户停止请求,类似ctrl+z
#ctrl+z是停止运行,放后台 bg是真正放后台
kill all
后面接服务名 优化进程 全部杀掉
pkill
语法: pkill [选项][服务名]
pkill 杀终端
pkill -9 -t pts/0
优先级扩展
nice值越高:表示优先级越低,例如19,该进程容易将CPU使用量让给其他进程
nice值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。
nice指定优先级
语法:nice [选项][命令]
例如:nice -n -20 vim zls.txt
renice修改优先级
语法:renice [选项] [进程号]
例如:renice -n -20 7535
后台进程管理
1.将进程直接放在后台运行 &
ping baidu.com &
2.bg 在进程被Ctrl + z的时候,将进程放入后台
jobs 查看后台的进程
bg是放入后台
fg调出到前台
后台管理的工具
1.nohup
nohup &
nohup ping baidu.com &
2.screen
yum install -y screen
创建一个新的屏幕
screen -S ping_baidu
退出screen创建的屏幕
Ctrl + ad
查看后台使用screen命令的程序都有哪些
screen -list
进入指定的屏幕中
screen -r [屏幕名字|pid]
系统负载
每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统的负载情况。
[Tue Jun 29 11:22:17 root@localhost /etc/yum.repos.d]
#uptime
15:05:59 up 7:24, 2 users, load average: 0.00, 0.01, 0.05
#平均负载
#平均负载是指单位时间内系统处于可运行状态和不可中断状态的平均进程数 也就是平均活跃进程数
PS:平均负载与CPU的使用率没有直接关系
平均负载其实就是单位时间内的活跃进程数
平均负载达到多少是合理的?
查看cpu的核心数
top 按 1
glances
htop
grep 'model name' /proc/cpuinfo |wc -l
#平均负载如何分析(实战)
先了解几个命令
stress 是Linux系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
mpstat 是多核CPU性能分析工具,用来实时检查每个CPU的性能指标,以及所有CPU的平均指标。
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的CPU,内存,IO,以及上下文切换等性能指标。
安装stress命令
yum install -y stress
#领导说,10.0.0.10这台机器特别卡,检查一下什么原因
#1.使用uptime检查服务器的负载情况
load average: 10.40, 8.37, 4.31
分析:负载在持续上升
#2.分析什么原因导致服务器的负载持续上升
- cpu使用率
mpstat -P ALL 5
5指的是每5秒刷新一次
- 磁盘的IO
- 进程太多
#3.什么进程导致CPU使用率比较高
pidstat -u 5
stress进程导致CPU使用过高,服务器负载上升
#4.比如说查出来是Java程序占用CPU过高
1)查看Java程序的日志
2)导出日志给Java开发
#总结1.平均负载高有可能是CPU密集型进程导致的
#2.平均负载高并不一定代表CPU的使用率就一定高,还有可能是I/O繁忙
#3.当发现负载高时,可以使用mpstat、pidstat等工具,快速定位到,负载高的原因,从而做出处理
Linux系统中的开机启动流程
Linux的启动流程
CentOS6系统
1.内核引导
运行BIOS的加电自检
2.运行init
#init 老祖宗,所有的进程都被init控制
0:关机
1:切换到单用户模式,root权限,禁止远程连接
2:多用户状态(没有文件系统)
3:完全多用户状态,有文件系统,登录后使用命令行控制
4:unused 没有被使用
5:切换到图形化界面(装图形化)
6:重启
查看运行级别
[Tue Jun 29 15:12:05 root@localhost /etc/yum.repos.d]
#runlevel
N 3
N:上一次的运行级别
3:当前的运行级别
3.系统初始化
4.建立终端
5.用户登录系统