一、软件包管理

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查看核心数,如果平均负载接近核心数,说明负载高
流程

  1. 通过监控软件发现系统负载高

  2. 判断是cpu还是io导致的负载高
    ·cpu高:top中的ur sy
    ·io高:top中的wa

  3. 如果是cpu导致的,排查出是哪个进程,通过ps aux过滤出具体进程;
    如果是io导致的,排查出是哪个进程,通过iotop -o查看具体进程

  4. 找出原因并找出对应的进程,根据进程找服务相关日志

  5. 通过jstack查看进程中的线程信息
    jstack中的线程是十六进制
    1、通过top -Hp 进程id,显示该进程中的线程信息,根据cpu的使用率,找出异常的线程的id
    2、异常的线程id转换成十六进制,echo “obase=16|线程id”|bc
    3、jstack过滤十六进制线程id,jstack 进程id | grep -i -A10 十六进制线程id

  6. 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密码找回

  1. 重启linux
  2. 进入GRUB菜单,按e编辑内核配置
  3. 找到linux16的行,将这一行的ro改为rw,在最后输入 init=/bin/bash,按ctrl+x启动系统进入救援模式
  4. 将/etc/passwd下root行的x去掉
  5. 重启后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 挂载

五、磁盘空间不足

  1. 经典:block块大量占用
    现象:提示空间不足,df -h查看空间存在不足
    解决:df -h 与 du -sh结合

  2. 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

  3. 文件未彻底删除
    现象:df -h发现空间不足,删除较大的文件后再次df -h发现空间还是不足,du -sh发现不存在磁盘占用较大的文件,原来的文件也已经被删掉
    解决:文件被彻底删除需要1、硬链接数为0,2、文件没有被服务或线程调用
    lsof查看文件是否被调用,kill掉相关进程或重启服务

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐