CentOS 常用命令详解
CentOS(Community Enterprise Operating System)是企业级 Linux 发行版,广泛用于服务器环境。掌握 CentOS 常用命令对于系统管理和运维工作非常重要。本文将详细介绍 CentOS 中常用的命令及其用法。
文件和目录操作
文件浏览
- ls:列出目录内容
- ls:列出当前目录内容
- ls -l:以长格式显示详细信息
- ls -a:显示所有文件,包括隐藏文件
- ls -h:以人类可读的格式显示文件大小
- ls -R:递归显示子目录内容
- ls -i:显示文件的 inode 号
- pwd:显示当前工作目录的完整路径
- cd:切换目录
- cd /path/to/directory:切换到指定目录
- cd ~:切换到用户主目录
- cd ..:切换到上一级目录
- cd -:切换到上一个工作目录
- tree:以树状结构显示目录内容
- tree:显示当前目录的树状结构
- tree -L 2:限制显示深度为 2 层
- tree -d:只显示目录
文件和目录管理
- mkdir:创建目录
- mkdir directory:创建单个目录
- mkdir -p path/to/directory:创建多级目录
- mkdir -m 755 directory:创建目录并设置权限
- rmdir:删除空目录
- rmdir directory:删除空目录
- rmdir -p path/to/directory:删除多级空目录
- rm:删除文件或目录
- rm file:删除文件
- rm -r directory:递归删除目录及其内容
- rm -f file:强制删除,不提示确认
- rm -rf directory:强制递归删除目录
- cp:复制文件或目录
- cp source destination:复制文件
- cp -r source_dir destination_dir:递归复制目录
- cp -p source destination:保留文件属性
- cp -i source destination:覆盖前提示确认
- mv:移动或重命名文件
- mv source destination:移动文件或重命名
- mv -i source destination:覆盖前提示确认
- mv -u source destination:只在源文件较新时移动
- touch:创建空文件或更新文件时间戳
- touch file:创建空文件或更新时间戳
- touch -t 202312251200 file:设置特定时间戳
文件查看和编辑
- cat:查看文件内容
- cat file:显示文件内容
- cat -n file:显示行号
- cat file1 file2 > merged:合并文件
- less:分页查看文件内容
- less file:分页显示文件内容
- 使用空格键翻页,q 键退出
- 使用 / 关键词 进行搜索
- head:查看文件开头部分
- head file:显示文件前 10 行
- head -n 20 file:显示文件前 20 行
- tail:查看文件结尾部分
- tail file:显示文件后 10 行
- tail -n 20 file:显示文件后 20 行
- tail -f file:实时跟踪文件更新
- nano:简单的文本编辑器
- nano file:编辑文件
- Ctrl+O:保存
- Ctrl+X:退出
- vim:强大的文本编辑器
- vim file:编辑文件
- i:进入插入模式
- Esc:退出插入模式
- :w:保存
- :q:退出
- :wq:保存并退出
文件搜索
- find:搜索文件和目录
- find /path -name "filename":按名称搜索
- find /path -type f:搜索文件
- find /path -type d:搜索目录
- find /path -size +100M:搜索大于 100MB 的文件
- find /path -mtime -7:搜索 7 天内修改的文件
- locate:快速定位文件
- locate filename:快速搜索文件
- sudo updatedb:更新文件数据库
- grep:搜索文件内容
- grep "pattern" file:搜索包含模式的行
- grep -r "pattern" directory:递归搜索
- grep -i "pattern" file:忽略大小写
- grep -n "pattern" file:显示行号
- grep -v "pattern" file:显示不匹配的行
系统管理
系统信息
- uname:显示系统信息
- uname -a:显示所有系统信息
- uname -r:显示内核版本
- uname -m:显示系统架构
- hostname:显示或设置主机名
- hostname:显示主机名
- hostnamectl set-hostname newname:设置主机名
- uptime:显示系统运行时间和负载
- date:显示或设置系统日期和时间
- date:显示当前日期和时间
- date +"%Y-%m-%d %H:%M:%S":自定义格式显示
- cal:显示日历
- cal:显示当前月份日历
- cal 2024:显示 2024 年日历
- cat /etc/centos-release:显示 CentOS 版本
- cat /etc/redhat-release:显示 Red Hat 版本
系统资源监控
- top:实时显示系统进程和资源使用情况
- htop:增强版的 top(需要安装)
- free:显示内存使用情况
- free -h:以人类可读格式显示
- free -m:以 MB 为单位显示
- df:显示磁盘空间使用情况
- df -h:以人类可读格式显示
- df -T:显示文件系统类型
- du:显示目录或文件大小
- du -h directory:以人类可读格式显示
- du -sh directory:显示目录总大小
- du -h --max-depth=1:显示一级子目录大小
- iostat:显示 CPU 和 I/O 统计信息
- vmstat:显示虚拟内存统计信息
- sar:系统活动报告工具
系统服务管理
- systemctl:系统服务管理
- systemctl start service:启动服务
- systemctl stop service:停止服务
- systemctl restart service:重启服务
- systemctl status service:查看服务状态
- systemctl enable service:设置开机自启
- systemctl disable service:禁用开机自启
- systemctl list-units --type=service:列出所有服务
- systemctl daemon-reload:重新加载 systemd 配置
- journalctl:查看系统日志
- journalctl:查看所有日志
- journalctl -u service:查看指定服务日志
- journalctl -f:实时查看日志
- journalctl --since "2024-01-01":查看指定日期后的日志
- service:传统服务管理命令(CentOS 6 及以下)
- service servicename start:启动服务
- service servicename stop:停止服务
- service servicename restart:重启服务
- service servicename status:查看服务状态
- chkconfig:设置服务开机自启(CentOS 6 及以下)
- chkconfig servicename on:设置开机自启
- chkconfig servicename off:禁用开机自启
- chkconfig --list:列出所有服务
用户和权限管理
用户管理
- useradd:创建用户
- sudo useradd username:创建用户
- sudo useradd -m username:创建用户并创建主目录
- sudo useradd -s /bin/bash username:指定 shell
- sudo useradd -g groupname username:指定主组
- sudo useradd -G group1,group2 username:指定附加组
- userdel:删除用户
- sudo userdel username:删除用户
- sudo userdel -r username:删除用户及其主目录
- usermod:修改用户属性
- sudo usermod -aG groupname username:添加用户到组
- sudo usermod -l newname oldname:修改用户名
- sudo usermod -s /bin/zsh username:修改 shell
- sudo usermod -L username:锁定用户
- sudo usermod -U username:解锁用户
- passwd:修改用户密码
- passwd:修改当前用户密码
- sudo passwd username:修改指定用户密码
- sudo passwd -l username:锁定用户密码
- sudo passwd -u username:解锁用户密码
- id:显示用户信息
- id:显示当前用户信息
- id username:显示指定用户信息
- whoami:显示当前用户名
- who:显示当前登录用户
- w:显示登录用户及其活动
- last:显示用户登录历史
组管理
- groupadd:创建组
- sudo groupadd groupname:创建组
- sudo groupadd -g 1001 groupname:指定 GID
- groupdel:删除组
- sudo groupdel groupname:删除组
- groupmod:修改组属性
- sudo groupmod -n newname oldname:修改组名
- sudo groupmod -g 1002 groupname:修改 GID
- groups:显示用户所属组
- groups:显示当前用户所属组
- groups username:显示指定用户所属组
权限管理
- chmod:修改文件权限
- chmod 755 file:设置权限为 rwxr-xr-x
- chmod +x file:添加执行权限
- chmod -R 755 directory:递归设置目录权限
- chmod u+rwx,g+rx,o+rx file:符号模式设置权限
- chown:修改文件所有者
- sudo chown user file:修改所有者
- sudo chown user:group file:修改所有者和组
- sudo chown -R user directory:递归修改目录所有者
- chgrp:修改文件所属组
- sudo chgrp group file:修改所属组
- sudo chgrp -R group directory:递归修改目录所属组
- getfacl:查看文件 ACL 权限
- setfacl:设置文件 ACL 权限
- setfacl -m u:username:rwx file:为用户设置权限
- setfacl -x u:username file:删除用户的 ACL 权限
软件包管理
YUM 包管理器
- yum install package:安装软件包
- sudo yum install package:安装软件包
- sudo yum install package1 package2:安装多个软件包
- sudo yum -y install package:自动确认安装
- yum update:更新软件包
- sudo yum update:更新所有软件包
- sudo yum update package:更新指定软件包
- yum remove package:删除软件包
- yum erase package:删除软件包(同 remove)
- yum search keyword:搜索软件包
- yum info package:显示软件包详细信息
- yum list:列出软件包
- yum list installed:列出已安装的软件包
- yum list available:列出可安装的软件包
- yum list updates:列出可更新的软件包
- yum clean:清理缓存
- yum clean all:清理所有缓存
- yum clean packages:清理软件包缓存
- yum clean metadata:清理元数据缓存
- yum repolist:列出启用的软件源
- yum history:查看 yum 操作历史
- yum provides filename:查找提供指定文件的软件包
DNF 包管理器(CentOS 8+)
- dnf install package:安装软件包
- dnf update:更新软件包
- dnf remove package:删除软件包
- dnf search keyword:搜索软件包
- dnf info package:显示软件包详细信息
- dnf list:列出软件包
- dnf clean all:清理缓存
- dnf repolist:列出启用的软件源
- dnf history:查看 dnf 操作历史
RPM 包管理器
- rpm -ivh package.rpm:安装 RPM 软件包
- rpm -Uvh package.rpm:升级 RPM 软件包
- rpm -e package:删除 RPM 软件包
- rpm -qa:列出所有已安装的软件包
- rpm -qi package:显示软件包详细信息
- rpm -ql package:列出软件包安装的文件
- rpm -qf filename:查看文件属于哪个软件包
- rpm -V package:验证软件包
软件源管理
- yum-config-manager:管理软件源
- yum-config-manager --add-repo URL:添加软件源
- yum-config-manager --enable reponame:启用软件源
- yum-config-manager --disable reponame:禁用软件源
- /etc/yum.repos.d/:软件源配置文件目录
网络管理
网络配置
- ip addr:显示网络接口和 IP 地址
- ip link:显示网络接口状态
- ip route:显示路由表
- ifconfig:显示网络接口信息(已过时,建议使用 ip)
- ping:测试网络连接
- ping hostname:测试与主机的连接
- ping -c 4 hostname:发送 4 个数据包后停止
- traceroute:跟踪数据包路由路径
- netstat:显示网络连接和统计信息
- netstat -tuln:显示监听的端口
- netstat -an:显示所有连接
- netstat -rn:显示路由表
- ss:显示套接字统计信息(netstat 的替代品)
- ss -tuln:显示监听的端口
- ss -an:显示所有连接
- nmcli:NetworkManager 命令行工具
- nmcli device status:显示设备状态
- nmcli connection show:显示连接
- nmcli connection up "connection-name":启用连接
- nmcli connection down "connection-name":禁用连接
网络工具
- curl:传输数据工具
- curl URL:获取网页内容
- curl -O URL:下载文件
- curl -I URL:获取 HTTP 头信息
- curl -X POST -d "data" URL:发送 POST 请求
- wget:下载文件工具
- wget URL:下载文件
- wget -c URL:断点续传
- wget -r URL:递归下载
- ssh:安全远程登录
- ssh user@hostname:远程登录
- ssh -p port user@hostname:指定端口登录
- ssh-keygen:生成 SSH 密钥对
- ssh-copy-id user@hostname:复制公钥到远程主机
- scp:安全复制文件
- scp file user@hostname:/path:上传文件
- scp user@hostname:/path/file .:下载文件
- scp -r directory user@hostname:/path:复制目录
- rsync:远程同步工具
- rsync -avz source/ user@hostname:/path:同步目录
- rsync -avz --delete source/ user@hostname:/path:同步并删除目标多余文件
防火墙管理
- firewall-cmd:firewalld 防火墙管理
- firewall-cmd --state:查看防火墙状态
- firewall-cmd --list-all:列出所有规则
- firewall-cmd --add-port=80/tcp:开放端口
- firewall-cmd --remove-port=80/tcp:关闭端口
- firewall-cmd --add-service=http:开放服务
- firewall-cmd --reload:重新加载配置
- firewall-cmd --permanent --add-port=80/tcp:永久开放端口
- iptables:传统防火墙工具
- iptables -L:列出所有规则
- iptables -A INPUT -p tcp --dport 80 -j ACCEPT:开放端口
- iptables -D INPUT -p tcp --dport 80 -j ACCEPT:删除规则
- service iptables save:保存规则
进程管理
进程查看
- ps:显示进程状态
- ps:显示当前终端的进程
- ps aux:显示所有进程的详细信息
- ps -ef:显示所有进程
- ps -u username:显示指定用户的进程
- pgrep:根据名称查找进程 ID
- pgrep processname:查找进程 ID
- pgrep -l processname:显示进程名称和 ID
- pstree:以树状结构显示进程
进程控制
- kill:发送信号给进程
- kill PID:发送 SIGTERM 信号(默认)
- kill -9 PID:发送 SIGKILL 信号(强制终止)
- kill -l:列出所有信号
- killall:根据名称终止进程
- killall processname:终止指定名称的所有进程
- pkill:根据模式终止进程
- pkill pattern:终止匹配模式的所有进程
- nice:以指定优先级启动进程
- nice -n 10 command:以优先级 10 启动命令
- renice:修改运行中进程的优先级
- renice -n 5 -p PID:修改进程优先级
- nohup:忽略挂起信号运行命令
- nohup command &:后台运行命令,忽略挂起信号
- bg:将进程放到后台运行
- fg:将后台进程放到前台运行
- jobs:显示后台任务
磁盘管理
磁盘分区
- fdisk:磁盘分区工具
- sudo fdisk -l:列出所有磁盘分区
- sudo fdisk /dev/sda:对磁盘进行分区操作
- parted:高级磁盘分区工具
- sudo parted -l:列出所有磁盘分区
- sudo parted /dev/sda:对磁盘进行分区操作
文件系统管理
- mkfs:创建文件系统
- sudo mkfs.ext4 /dev/sda1:创建 ext4 文件系统
- sudo mkfs.xfs /dev/sda1:创建 XFS 文件系统
- mount:挂载文件系统
- sudo mount /dev/sda1 /mnt:挂载分区
- sudo mount -t ext4 /dev/sda1 /mnt:指定文件系统类型
- mount:显示已挂载的文件系统
- umount:卸载文件系统
- sudo umount /mnt:卸载文件系统
- sudo umount -l /mnt:强制卸载
- blkid:显示块设备属性
- lsblk:列出块设备信息
磁盘维护
- fsck:检查和修复文件系统
- sudo fsck /dev/sda1:检查文件系统
- sudo fsck -y /dev/sda1:自动修复
- dd:磁盘复制和转换
- sudo dd if=/dev/sda of=backup.img:备份磁盘
- sudo dd if=backup.img of=/dev/sda:恢复磁盘
- sudo dd if=/dev/zero of=/dev/sda:擦除磁盘
- xfs_repair:修复 XFS 文件系统
LVM 逻辑卷管理
- pvcreate:创建物理卷
- pvcreate /dev/sda1:创建物理卷
- vgcreate:创建卷组
- vgcreate vgname /dev/sda1 /dev/sdb1:创建卷组
- lvcreate:创建逻辑卷
- lvcreate -L 10G -n lvname vgname:创建 10G 的逻辑卷
- lvcreate -l 100%FREE -n lvname vgname:使用所有剩余空间
- pvdisplay:显示物理卷信息
- vgdisplay:显示卷组信息
- lvdisplay:显示逻辑卷信息
- lvextend:扩展逻辑卷
- lvextend -L +5G /dev/vgname/lvname:扩展 5G
- lvextend -l +100%FREE /dev/vgname/lvname:使用所有剩余空间
- lvreduce:缩小逻辑卷
- resize2fs:调整 ext 文件系统大小
- xfs_growfs:调整 XFS 文件系统大小
压缩和解压缩
tar 命令
- tar -cvf archive.tar files:创建 tar 归档
- tar -xvf archive.tar:解压 tar 归档
- tar -czvf archive.tar.gz files:创建 gzip 压缩的 tar 归档
- tar -xzvf archive.tar.gz:解压 gzip 压缩的 tar 归档
- tar -cjvf archive.tar.bz2 files:创建 bzip2 压缩的 tar 归档
- tar -xjvf archive.tar.bz2:解压 bzip2 压缩的 tar 归档
- tar -tvf archive.tar:列出归档内容
其他压缩工具
- gzip:gzip 压缩
- gzip file:压缩文件(原文件会被删除)
- gzip -d file.gz:解压文件
- gzip -k file:压缩文件(保留原文件)
- bzip2:bzip2 压缩
- bzip2 file:压缩文件
- bzip2 -d file.bz2:解压文件
- zip/unzip:zip 压缩
- zip archive.zip files:创建 zip 压缩文件
- zip -r archive.zip directory:递归压缩目录
- unzip archive.zip:解压 zip 文件
- unzip -l archive.zip:列出 zip 文件内容
- xz:xz 压缩
- xz file:压缩文件
- xz -d file.xz:解压文件
系统监控和日志
系统监控
- dmesg:显示内核消息
- lspci:显示 PCI 设备信息
- lsusb:显示 USB 设备信息
- lsblk:显示块设备信息
- lscpu:显示 CPU 信息
- lsmod:显示已加载的内核模块
- modprobe:加载或卸载内核模块
- sudo modprobe module:加载模块
- sudo modprobe -r module:卸载模块
日志查看
- /var/log/:系统日志目录
- /var/log/messages:系统主日志
- /var/log/secure:安全日志
- /var/log/dmesg:启动日志
- /var/log/cron:定时任务日志
- /var/log/maillog:邮件日志
- /var/log/boot.log:启动过程日志
- tail -f /var/log/messages:实时查看系统日志
- grep "error" /var/log/messages:搜索日志中的错误
SELinux 管理
- getenforce:查看 SELinux 状态
- setenforce:设置 SELinux 模式
- setenforce 0:设置为 Permissive 模式
- setenforce 1:设置为 Enforcing 模式
- sestatus:显示 SELinux 详细状态
- semanage:SELinux 策略管理
- semanage port -l:列出所有端口策略
- semanage port -a -t http_port_t -p tcp 8080:添加端口策略
- chcon:修改文件 SELinux 上下文
- chcon -t httpd_sys_content_t file:修改文件类型
- restorecon:恢复文件 SELinux 上下文
其他实用命令
文本处理
- sort:排序
- sort file:排序文件内容
- sort -r file:反向排序
- sort -n file:数字排序
- uniq:去除重复行
- uniq file:去除连续重复行
- sort file | uniq:去除所有重复行
- uniq -c file:统计重复次数
- wc:统计行数、字数、字节数
- wc file:统计行数、字数、字节数
- wc -l file:统计行数
- wc -w file:统计字数
- cut:提取文本列
- cut -d: -f1 /etc/passwd:提取第一列
- cut -c1-10 file:提取前 10 个字符
- sed:流编辑器
- sed 's/old/new/g' file:替换文本
- sed -i 's/old/new/g' file:直接修改文件
- awk:文本处理工具
- awk '{print $1}' file:打印第一列
- awk -F: '{print $1}' /etc/passwd:指定分隔符
系统维护
- shutdown:关机命令
- sudo shutdown now:立即关机
- sudo shutdown +10:10 分钟后关机
- sudo shutdown -h 22:00:22:00 关机
- reboot:重启系统
- poweroff:关闭电源
- init:切换运行级别
- sudo init 0:关机
- sudo init 6:重启
- sudo init 3:多用户模式
- sudo init 5:图形界面模式
- systemctl isolate:切换运行目标
- systemctl isolate multi-user.target:多用户模式
- systemctl isolate graphical.target:图形界面模式
环境变量
- echo $PATH:显示 PATH 环境变量
- export VAR=value:设置环境变量
- env:显示所有环境变量
- set:显示所有变量和函数
- unset VAR:删除环境变量
定时任务
- crontab:管理定时任务
- crontab -e:编辑定时任务
- crontab -l:列出定时任务
- crontab -r:删除定时任务
- at:一次性定时任务
- at 22:00:在 22:00 执行任务
- atq:列出待执行的任务
- atrm jobnumber:删除任务
总结
CentOS 命令行是系统管理和运维工作的重要工具。本文介绍了常用的命令,包括:
- 文件和目录操作:ls、cd、mkdir、rm、cp、mv 等
- 系统管理:uname、top、free、df、systemctl 等
- 用户和权限管理:useradd、chmod、chown 等
- 软件包管理:yum、dnf、rpm 等
- 网络管理:ip、ping、ssh、curl、firewall-cmd 等
- 进程管理:ps、kill、top 等
- 磁盘管理:fdisk、mount、df、LVM 等
- 压缩和解压缩:tar、gzip、zip 等
- 系统监控和日志:dmesg、journalctl 等
- SELinux 管理:getenforce、setenforce、semanage 等
- 文本处理:grep、sed、awk 等
掌握这些命令,可以帮助你更高效地使用 CentOS 系统,进行系统管理、故障排查和日常运维操作。建议多加练习,逐步熟悉这些命令的用法和参数。