linux基础随心记五-系统管理
一、软件包管理
1、rpm
| 安装 | -ivh xxx.rpm |
| 查看 | -qa |grep xxx.rpm 查看软件包是否安装 |
| -ql xxx.rpm 查看软件包内容 | |
| -qf 绝对路径 查看所归属的软件包 | |
| 升级 | -Uvh xxx.rpm |
| 删除 | -e xxx.rpm |
2、yum
一、配置yum源(/etc/yum.repos.d/)
查看yum源列表
yum repolist
配置为阿里云
https://developer.aliyun.com/mirror/ 官方地址
#/etc/yum.repos.d/CentOS-Base.repo
[base] #源名字
name=CentOS-$releasever - Base - mirrors.aliyun.com #详细名字
failovermethod=priority #如果yum地址失败了,就用下面的地址
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1 #校验
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #校验
enabled=1
二、yum命令配置文件(/etc/yum.conf)
几乎很少修改,可以将yum安装过的rpm包保存下来,否则自动删除
[main]
cachedir=/var/cache/yum/$basearch/$releasever #缓存路径
keepcache=0 #是否开启缓存
debuglevel=2
logfile=/var/log/yum.log #日志路径
三、增删改查
| 安装 | yum install -y tree |
| 查看 | yum provides tree 精确查询 |
| yum search tree 模糊查询 | |
| yum list available/installed/all | |
| 查看源列表 | yum repolist |
| 清空缓存 | yum clean all |
| 删除软件包以及依赖,不建议用,因为不但会删除软件包,还会删除相关依赖建议使用rpm -e进行卸载 | yum remove xxx |
| 更新 | yum update |
二、进程管理
| R(running) S(sleeping) T(stopped) Z(zombie) D(Disk sleep) X(dead) |
|---|
R+ 前台运行进程 |
| R 后台运行进程 |
| S 可中断进程(大部分进程) |
| T 后台挂起进程 |
D 不可中断进程(io进程) |
| Ss 可中断进程 管理进程 |
| S< 可中断的高优先级进程 |
| SN 可中断的低优先级进程 |
Ssl 可中断的多线程的管理进程 |
Z 僵尸进程 |
1、ps
- ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Mar18 ? 00:01:34 /usr/lib/systemd/systemd
- ps aux
#VSZ 占用虚拟内存
#RSS 占用物理内存
#TIME 占用cpu时间
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 128184 6872 ? Ss Mar18 1:34 /usr/lib/systemd/systemd
- pstree -p
- ps axo user,pid,%cpu
ps axo user,pid,%cpu,stat,command
USER PID %CPU STAT COMMAND
root 1 0.0 Ss /usr/lib/systemd/systemd --switched-root --system
ps aux | awk {'print $1'}
2、top

| 排序 | P 按CPU使用率排序 |
| M 按内存占用排序 | |
| T 按运行时间排序 | |
| N 按PID排序 | |
| 进程操作 | k 终止进程 |
| r 调整进程优先级 | |
| 视图控制 | 1 展开/折叠多核CPU详情(显示每个核心状态)) |
| u 按用户过滤进程 | |
| f 自定义显示的列 | |
| h 打开帮助菜单 | |
| 刷新设置 | 空格 立即刷新 |
| s 修改刷新间隔 | |
| 颜色设置 | z 进入颜色模式 |
| x 标记以哪列排序(shift+< 或 shfit+> 向左或向右选择) | |
| 退出 | q/ctrl C |
top - 13:59:24 up 6 days, 20:03, 2 users, `load average: 0.00, 0.01, 0.05`
Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, `0 zombie`
%Cpu(s): `0.0 us`, `0.2 sy`, 0.0 ni, 99.8 id, `0.0 wa`, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861300 total, 1932072 free, 363900 used, 1565328 buff/cache
KiB Swap: 3145724 total, `3145724 free`, 0 used. `3191208 avail Mem`
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
702 root 20 0 272976 6852 3660 S 0.3 0.2 10:52.14 vmtoolsd
非交互模式
-b 非交互模式 -n1 只输出一次结果
[root@xkm ~]# top -bn1 | awk 'NR==2{print $(NF-1),$NF}'
0 zombie
3、后台运行
| 方法 | 说明 |
|---|---|
| & | 最常用,如果命令会持续输出到终端时不可用 |
| 先运行命令,再按下ctrl+z | bg 后台,fg前台 |
| screen | 稳定 |
| nohup ** & | 会记录输出到一个nohup.out文件 |
| jobs | 查看后台运行的程序 |
4、java系统负载高排查
lscpu查看核心数,如果平均负载接近核心数,说明负载高
流程
-
通过监控软件发现系统负载高
-
判断是cpu还是io导致的负载高
·cpu高:top中的ur sy
·io高:top中的wa -
如果是cpu导致的,排查出是哪个进程,通过ps aux过滤出具体进程;
如果是io导致的,排查出是哪个进程,通过iotop -o查看具体进程 -
找出原因并找出对应的进程,根据进程找服务相关日志
-
通过jstack查看进程中的线程信息
jstack中的线程是十六进制
1、通过top -Hp 进程id,显示该进程中的线程信息,根据cpu的使用率,找出异常的线程的id
2、异常的线程id转换成十六进制,echo “obase=16|线程id”|bc
3、jstack过滤十六进制线程id,jstack 进程id | grep -i -A10 十六进制线程id -
jmap导出jvm信息,通过mat工具进行内存分析
jmap -heap java-pid # 打印java进程的jvm内存使用情况,jdk8及之前可以
jmap -dump:format=b,file=8080.hprof java-pid # 生成堆转储文件
三、服务管理
1、管理命令
#检查服务状态
systemctl status firewalld
#开机自启动
systemctl enable nginx
#运行
systemctl start nginx
#所有服务运行情况
systemctl list-units
2、运行级别
| 运行级别 | c7 |
|---|---|
| 0 | 关机 init 0 |
| 1 | 救援模式secure(找回root密码) |
| 2 | 多用户模式(无网络) |
| 3 | 多用户模式 multiuser(命令行模式) |
| 4 | 多用户模式 |
| 5 | 图形化界面模式 |
| 6 | 重启 init 6 |
3、linux启动流程
按下电源 -> 开机自检(bios) -> MBR、GPT引导系统启动(硬盘、光盘) -> GRUB菜单(选择内核、救援模式)-> 加载内核(/boot内核文件加载到内存中) -> 运行systemd进程 -> 读取运行级别 -> 系统初始化 -> 并行启动服务 -> 运行getty显示登录界面
4、root密码找回
- 重启linux
- 进入GRUB菜单,按e编辑内核配置
- 找到linux16的行,将这一行的ro改为rw,在最后输入 init=/bin/bash,按ctrl+x启动系统进入救援模式
- 将/etc/passwd下root行的x去掉
- 重启后passwd设置密码
四、磁盘管理
1、RAID
提高数据可靠性和 I/O 性能
参考 RAID相关描述
老男孩相关总结:
2、磁盘分区
分区->格式化->挂载
一、MBR与GPT
MBR:4个主分区或3个主分区加一个扩展分区加不限数量的逻辑分区
MBR和GPT详解
二、MBR创建分区
#分区
fdisk /dev/sdb
#格式化,创建文件系统
mkfs.xfs /dev/sdb
#临时挂载
mount /dev/sdb /mnt
df -h
#永久挂载
1、使用rc.local,把挂载命令写入到/etc/rc.lpcal下
2、专业的开机自动挂载配置文件/etc/fstab,根据要求写入
三、lvm
lvm相关动态扩容操作
lvm相关操作
动态扩容操作
可以lvm+raid搭配使用
raid5+lvm结合
四、swap
交换分区/虚拟内存
swapon /tmp/1g 挂载
五、磁盘空间不足
-
经典:block块大量占用
现象:提示空间不足,df -h查看空间存在不足
解决:df -h 与 du -sh结合 -
inode大量占用(存在大量小文件)
现象:提示空间不足,df -h查看发现空间充足,df -i查看发现inode存在不足
解决:
1、find 找出目标路径下size较大的目录,比如大于1M
find / -type d -size +1M
2、find 找出目标路径下文件较多的目录
find / type f |xargs dirname |sort |uniq -c -
文件未彻底删除
现象:df -h发现空间不足,删除较大的文件后再次df -h发现空间还是不足,du -sh发现不存在磁盘占用较大的文件,原来的文件也已经被删掉
解决:文件被彻底删除需要1、硬链接数为0,2、文件没有被服务或线程调用
lsof查看文件是否被调用,kill掉相关进程或重启服务
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)