Linux之centos 系统常用命令详解(附实战案例)
CentOS 系统常用命令详解(附实战案例)
前言
本文针对 CentOS 7/8 系统,整理了运维工作中高频使用的命令,涵盖系统信息、文件操作、用户权限、软件管理、服务控制、网络配置等核心场景,并结合实战案例说明具体用法,适合运维人员日常查阅与新手学习。
一、系统基础信息查询
1. 系统版本与内核信息
命令 | 功能说明 | 实战案例 | 输出解析 |
---|---|---|---|
uname -a | 显示完整系统内核、主机名、硬件架构等 | [root@centos7 ~]# uname -a | Linux centos7 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux - centos7 :主机名 - 3.10.0-1160.el7.x86_64 :内核版本 - x86_64 :64位架构 |
cat /etc/redhat-release | 查看 CentOS 发行版本 | [root@centos7 ~]# cat /etc/redhat-release | CentOS Linux release 7.9.2009 (Core) 明确系统为 CentOS 7.9 版本 |
hostnamectl | 查看/修改主机名及系统信息 | [root@centos7 ~]# hostnamectl | 显示静态主机名、操作系统、内核、硬件架构等,比 hostname 更全面 |
2. 硬件资源查询
命令 | 功能说明 | 实战案例 | 关键参数 |
---|---|---|---|
lscpu | 查看 CPU 详细信息 | [root@centos7 ~]# lscpu | 关注:CPU(s) (总核心数)、Core(s) per socket (每颗CPU核心数)、Socket(s) (CPU颗数) |
free -h | 查看内存使用情况(人类可读单位) | [root@centos7 ~]# free -h | 输出:Mem: 15Gi 2.3Gi 10Gi 180Mi 2.7Gi 13Gi - total :总内存 - used :已使用 - free :空闲内存 |
df -h | 查看磁盘分区使用情况 | [root@centos7 ~]# df -h | 常用:df -h / 查看根分区使用;df -i 查看 inode 占用(避免因 inode 满导致无法创建文件) |
du -sh <目录> | 统计目录占用空间 | [root@centos7 ~]# du -sh /var/log | 输出:856M /var/log (日志目录总占用 856MB) |
lsblk | 查看磁盘分区结构 | [root@centos7 ~]# lsblk | 示例输出:sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 199G 0 part / |
二、文件与目录操作
1. 目录切换与查看
命令 | 功能说明 | 实战案例 | 场景说明 |
---|---|---|---|
cd | 切换工作目录 | 1. cd /etc/nginx → 切换到 nginx 配置目录 2. cd .. → 返回上级目录 3. cd ~ → 切换到当前用户家目录(root 为 /root ,普通用户为 /home/用户名 ) | 日常操作中最频繁的命令,结合 pwd 确认当前路径 |
pwd | 显示当前绝对路径 | [root@centos7 nginx]# pwd → /etc/nginx | 避免因“不知道当前在哪”导致的误操作 |
ls | 列出目录内容 | 1. ls -l → 详细列表(权限、所有者、大小、时间) 2. ls -a → 显示隐藏文件(以 . 开头的文件) 3. ls -lh → 详细列表+人类可读大小(如 1.2M 而非 1234567 ) | ls -lh /var/lib/mysql 可快速查看数据库文件大小 |
2. 文件/目录创建与删除
命令 | 功能说明 | 实战案例 | 注意事项 |
---|---|---|---|
mkdir | 创建目录 | 1. mkdir /data/backup → 创建单个备份目录 2. mkdir -p /data/nginx/{logs,html} → 递归创建多级目录(同时创建 logs 和 html ) | -p 确保父目录不存在时自动创建,避免报错 |
touch | 创建空文件/更新时间戳 | 1. touch /data/test.txt → 创建空文件 2. touch -d "2024-01-01 10:00" test.txt → 修改文件时间戳为指定时间 | 常用于创建日志文件或测试文件 |
rm | 删除文件/目录 | 1. rm /data/test.txt → 删除文件(需确认) 2. rm -f /data/test.txt → 强制删除(无提示) 3. rm -rf /data/old_logs → 强制删除目录及所有内容 | rm -rf 极其危险! 避免在根目录(/ )下使用,建议删除前先用 ls 确认路径 |
cp | 复制文件/目录 | 1. cp /etc/nginx/nginx.conf /data/backup/ → 复制配置文件到备份目录 2. cp -r /etc/nginx/ /data/backup/ → 递归复制 nginx 整个目录 | -r 必须用于目录复制,否则会报错 |
mv | 移动/重命名 | 1. mv /data/test.txt /home/user/ → 移动文件到用户目录 2. mv /data/old.txt /data/new.txt → 重命名文件 | 移动跨分区文件时会复制后删除原文件,同分区则直接修改路径 |
3. 文件内容查看与编辑
命令 | 功能说明 | 实战案例 | 适用场景 |
---|---|---|---|
cat | 正序显示完整内容 | cat /etc/passwd → 查看所有用户信息 | 适合小文件(如配置文件、用户列表) |
head | 显示文件前 N 行 | 1. head /var/log/messages → 显示前 10 行(默认) 2. head -20 /var/log/nginx/access.log → 显示前 20 行访问日志 | 快速查看文件开头(如日志的最新记录) |
tail | 显示文件后 N 行/实时跟踪 | 1. tail -100 /var/log/nginx/error.log → 显示最后 100 行错误日志 2. tail -f /var/log/messages → 实时跟踪日志更新(按 Ctrl+C 退出) | 排查实时问题(如服务启动失败、用户访问异常) |
less | 分页查看大文件 | less /var/log/secure → 分页查看安全日志(包含登录记录) | 支持: - 空格翻页, b 回退 - /关键词 搜索,n 下一个匹配 - q 退出 |
vim | 文本编辑(全功能) | 实战步骤: 1. vim /etc/nginx/nginx.conf → 打开配置文件(命令模式) 2. 按 i 进入插入模式(可编辑内容) 3. 编辑完成后按 Esc 返回命令模式 4. 输入 :wq 保存并退出;q! 强制退出不保存 | 运维必备编辑器,建议掌握基础操作(如搜索 :/listen 、替换 :%s/80/8080/g ) |
4. 文件查找与内容搜索
命令 | 功能说明 | 实战案例 | 效率提示 |
---|---|---|---|
find | 按路径/名称/大小/时间查找文件 | 1. find /etc -name "*.conf" → 在 /etc 下查找所有 .conf 配置文件 2. find /var -size +1G → 查找 /var 下大于 1GB 的文件 3. find /data -mtime -7 → 查找 /data 下 7 天内修改的文件 | 查找范围大时速度较慢,可结合 -type f (仅文件)、-type d (仅目录)过滤 |
grep | 搜索文件中的关键词 | 1. grep "error" /var/log/nginx/error.log → 查找错误日志中的 “error” 行 2. grep -r "listen 80" /etc/nginx/ → 递归搜索 nginx 目录下包含 “listen 80” 的文件 3. grep -i "failed" /var/log/secure → 忽略大小写查找 “failed”(登录失败记录) | 结合 ` |
三、用户与权限管理
1. 用户管理(需 root 权限)
命令 | 功能说明 | 实战案例 | 权限说明 |
---|---|---|---|
useradd | 创建用户 | 1. useradd webadmin → 创建普通用户(家目录默认 /home/webadmin ) 2. useradd -d /data/web -s /bin/bash webuser → 自定义家目录和登录 shell | 新用户默认无 sudo 权限,需手动添加到 wheel 组 |
passwd | 设置/修改密码 | 1. passwd webadmin → 为 webadmin 设置密码(输入时无回显,需确认两次) 2. passwd -l webadmin → 锁定用户(无法登录) 3. passwd -u webadmin → 解锁用户 | 强密码建议:包含大小写、数字、特殊字符(如 Web@123! ) |
usermod | 修改用户属性 | 1. usermod -aG wheel webadmin → 将 webadmin 添加到 wheel 组(获取 sudo 权限) 2. usermod -s /sbin/nologin webuser → 禁止 webuser 登录(适合服务用户) | -aG 表示“追加到组”,避免覆盖原有附加组 |
userdel | 删除用户 | 1. userdel webuser → 删除用户(保留家目录) 2. userdel -r webadmin → 彻底删除用户及家目录 | 删除前确认用户无正在运行的进程(可用 ps -u webadmin 查看) |
id | 查看用户身份信息 | [root@centos7 ~]# id webadmin → uid=1001(webadmin) gid=1001(webadmin) groups=1001(webadmin),10(wheel) | 确认用户的 UID、GID 及所属组 |
2. 权限管理(核心!)
(1)权限表示规则
Linux 文件权限分为 3 类用户 和 3 种权限:
- 用户类别:所有者(u)、所属组(g)、其他用户(o)
- 权限类型:读(r=4)、写(w=2)、执行(x=1)
- 表示方式:
- 符号:如
rwxr-xr-x
(所有者可读可写可执行,组和其他用户可读可执行) - 数字:如
755
(4+2+1=7,4+1=5,4+1=5)
- 符号:如
示例解析:
-rwxr-xr-- 1 root root 1234 May 20 10:00 test.sh
- 第 1 位:文件类型(
-
普通文件、d
目录、l
软链接) - 2-4 位:所有者权限(
rwx
) - 5-7 位:所属组权限(
r-x
) - 8-10 位:其他用户权限(
r--
)
(2)权限修改命令
命令 | 功能说明 | 实战案例 | 常见场景 |
---|---|---|---|
chmod | 修改权限 | 1. 数字方式:chmod 755 test.sh → 所有者 rwx,组和其他 rx 2. 符号方式: chmod u+x test.sh → 给所有者加执行权限 3. 递归修改: chmod -R 770 /data/web → 目录及子内容仅所有者和组可读写执行 | 脚本执行前需加执行权限(chmod +x script.sh ) |
chown | 修改所有者/所属组 | 1. chown webadmin:webadmin test.txt → 同时修改所有者和所属组为 webadmin 2. 递归修改: chown -R nginx:nginx /usr/share/nginx/html → nginx 网站目录归属 nginx 用户 | 服务启动失败常因权限不足(如 nginx 无权限读取网站文件) |
四、软件包管理
CentOS 7 用 yum
,CentOS 8 用 dnf
(用法兼容 yum
),均基于 RPM 包管理,支持自动解决依赖。
1. YUM/DNF 常用命令(需 root 权限)
命令 | 功能说明 | 实战案例 | 注意事项 |
---|---|---|---|
yum clean all | 清理缓存 | [root@centos7 ~]# yum clean all | 解决“缓存过期导致无法安装”问题 |
yum makecache | 生成缓存 | [root@centos7 ~]# yum makecache | 加速后续软件包查找和安装 |
yum repolist | 查看启用的仓库 | [root@centos7 ~]# yum repolist | 确认是否启用 EPEL 等第三方仓库(需先安装 epel-release ) |
yum install | 安装软件 | 1. yum install nginx -y → 安装 nginx(-y 自动确认) 2. yum install epel-release -y → 安装 EPEL 仓库(提供更多软件) | 安装前建议更新缓存(yum makecache ) |
yum update | 更新软件 | 1. yum update nginx -y → 仅更新 nginx 2. yum update -y → 更新系统所有软件(包括内核,建议生产环境谨慎操作) | 更新内核后需重启生效(reboot ) |
yum remove | 卸载软件 | [root@centos7 ~]# yum remove nginx -y | 会自动卸载依赖,但可能影响其他软件,卸载前确认 |
yum list installed | 查看已安装软件 | `[root@centos7 ~]# yum list installed | grep java` → 查看已安装的 Java 包 |
2. RPM 包管理(手动安装,需 root 权限)
命令 | 功能说明 | 实战案例 | 适用场景 |
---|---|---|---|
rpm -ivh | 安装 RPM 包 | [root@centos7 ~]# rpm -ivh nginx-1.20.1-1.el7.x86_64.rpm | 无网络时手动安装本地 RPM 包 |
rpm -qa | 查看已安装 RPM 包 | `[root@centos7 ~]# rpm -qa | grep mysql` → 查找已安装的 MySQL 相关包 |
rpm -ql | 查看 RPM 包文件列表 | [root@centos7 ~]# rpm -ql nginx → 查看 nginx 安装的所有文件路径 | 定位配置文件、二进制文件位置 |
五、服务与进程管理
1. Systemd 服务管理(CentOS 7+ 核心,需 root 权限)
命令 | 功能说明 | 实战案例(以 nginx 为例) | 故障排查 |
---|---|---|---|
systemctl start | 启动服务 | [root@centos7 ~]# systemctl start nginx | 启动失败用 systemctl status nginx 查看日志 |
systemctl stop | 停止服务 | [root@centos7 ~]# systemctl stop nginx | 停止后用 netstat -tuln 确认端口是否释放 |
systemctl restart | 重启服务 | [root@centos7 ~]# systemctl restart nginx | 配置文件修改后需重启(或 reload ) |
systemctl reload | 重新加载配置 | [root@centos7 ~]# systemctl reload nginx | 无需中断服务,优先使用(如 nginx、apache 配置更新) |
systemctl enable | 开机自启 | [root@centos7 ~]# systemctl enable nginx | 服务器重启后自动启动服务 |
systemctl status | 查看服务状态 | [root@centos7 ~]# systemctl status nginx | 输出包含: - 活跃状态(active/inactive) - 最近日志(如启动失败原因) |
2. 进程管理
命令 | 功能说明 | 实战案例 | 常用参数 |
---|---|---|---|
ps | 查看进程状态 | 1. ps aux → 查看所有用户的所有进程 2. `ps aux | grep nginx` → 查找 nginx 相关进程 |
top | 实时查看系统进程与资源占用 | [root@centos7 ~]# top | 交互操作: - P :按 CPU 占用排序 - M :按内存占用排序 - k :终止进程(输入 PID) - q :退出 |
kill | 终止进程 | 1. kill 1234 → 发送 SIGTERM 信号终止 PID 为 1234 的进程 2. kill -9 1234 → 强制终止进程(SIGKILL 信号,无法忽略) | 先尝试 kill ,无效再用 kill -9 (强制终止可能丢失数据) |
pkill | 按进程名终止进程 | [root@centos7 ~]# pkill nginx → 终止所有 nginx 进程 | 比 kill 更便捷(无需查找 PID) |
六、网络配置与管理
1. 网络信息查询
命令 | 功能说明 | 实战案例 | 输出关键信息 |
---|---|---|---|
ip addr | 查看网卡 IP 地址 | [root@centos7 ~]# ip addr | 关注:inet 192.168.1.100/24 (IP 及子网掩码)、eth0 (网卡名) |
ip route | 查看路由表 | [root@centos7 ~]# ip route | 输出:default via 192.168.1.1 dev eth0 (默认网关为 192.168.1.1) |
ping | 测试网络连通性 | 1. ping 192.168.1.1 → 测试内网网关连通性 2. ping www.baidu.com -c 4 → 测试外网连通性(-c 4 发送 4 个包后停止) | 丢包或超时表示网络不通 |
netstat | 查看端口占用 | [root@centos7 ~]# netstat -tuln | 选项:t :TCP 端口 u :UDP 端口 l :监听中端口 n :数字显示(不解析域名) |
ss | 查看端口占用(替代 netstat) | `[root@centos7 ~]# ss -tuln | grep 80` → 查看 80 端口是否被占用 |
2. 防火墙配置(firewalld,CentOS 7+ 默认)
命令 | 功能说明 | 实战案例 | 生产建议 |
---|---|---|---|
systemctl start firewalld | 启动防火墙 | [root@centos7 ~]# systemctl start firewalld | 生产环境必须开启防火墙 |
firewall-cmd --add-port=80/tcp --permanent | 永久开放 80 端口 | 开放后需重新加载:firewall-cmd --reload | --permanent 表示永久生效(重启不丢失) |
firewall-cmd --list-ports | 查看开放的端口 | [root@centos7 ~]# firewall-cmd --list-ports | 确认需要的端口是否开放 |
firewall-cmd --remove-port=8080/tcp --permanent | 永久关闭 8080 端口 | 关闭后需重新加载:firewall-cmd --reload | 及时关闭无用端口,减少攻击面 |
七、系统常用操作
命令 | 功能说明 | 实战案例 | 备注 |
---|---|---|---|
reboot | 重启系统 | [root@centos7 ~]# reboot | 生产环境重启前需通知用户,关闭重要服务 |
shutdown -h now | 立即关机 | [root@centos7 ~]# shutdown -h now | 替代 poweroff ,更安全 |
shutdown -h +10 "System will shutdown in 10 minutes" | 10 分钟后关机 | 可通过 shutdown -c 取消关机 | 用于计划维护 |
sync | 同步内存数据到磁盘 | [root@centos7 ~]# sync | 关机前执行,避免数据丢失 |
history | 查看命令历史 | [root@centos7 ~]# history → 显示最近执行的命令 | 按 Ctrl+R 可搜索历史命令(输入关键词) |
tar | 压缩/解压文件 | 1. 压缩:tar -zcvf /data/backup/nginx.tar.gz /etc/nginx/ 2. 解压: tar -zxvf /data/backup/nginx.tar.gz -C /tmp/ | 选项:z :gzip 压缩 c :创建压缩包 x :解压 v :显示过程 f :指定文件名 |