2026年3月13日
Linux 常用命令大全 - 系统管理与运维必备
Linux 命令行是与系统交互的核心方式,掌握常用命令是 Linux 学习的基础。本文整理了最常用的 Linux 命令,方便日常查阅。
文件与目录操作
目录导航
| 命令 | 说明 |
|---|---|
cd /path |
切换到指定目录 |
cd ~ |
切换到用户主目录 |
cd - |
切换到上一个目录 |
cd .. |
切换到上级目录 |
pwd |
显示当前目录 |
列出文件
# 列出文件
ls
# 详细信息
ls -l
# 显示隐藏文件
ls -la
# 人类可读大小
ls -lh
# 按时间排序
ls -lt
# 按大小排序
ls -lS
创建与删除
# 创建目录
mkdir dir_name
# 创建多级目录
mkdir -p /path/to/dir
# 创建文件
touch file.txt
# 创建多个文件
touch file1.txt file2.txt file3.txt
# 删除文件
rm file.txt
# 强制删除
rm -f file.txt
# 删除目录
rm -r dir_name
# 强制删除目录(慎用)
rm -rf dir_name
复制与移动
# 复制文件
cp source.txt dest.txt
# 复制目录
cp -r source_dir/ dest_dir/
# 保留属性复制
cp -p source.txt dest.txt
# 移动文件
mv source.txt dest.txt
# 重命名
mv old_name.txt new_name.txt
# 移动目录
mv source_dir/ dest_dir/
查看文件
# 查看整个文件
cat file.txt
# 显示行号
cat -n file.txt
# 分页查看
more file.txt
# 分页查看(可上下翻)
less file.txt
# 查看前 10 行
head file.txt
# 查看前 20 行
head -n 20 file.txt
# 查看后 10 行
tail file.txt
# 实时查看日志
tail -f /var/log/syslog
# 查看后 100 行
tail -n 100 file.txt
查找文件
# 按名称查找
find /path -name "*.txt"
# 按类型查找
find /path -type f -name "*.txt" # 文件
find /path -type d -name "dir*" # 目录
# 按大小查找
find /path -size +100M # 大于 100MB
find /path -size -10k # 小于 10KB
# 按时间查找
find /path -mtime -7 # 7天内修改
find /path -mtime +30 # 30天前修改
# 按权限查找
find /path -perm 755
# 查找并执行命令
find /path -name "*.log" -exec rm {} \;
搜索内容
# 搜索文件内容
grep "keyword" file.txt
# 忽略大小写
grep -i "keyword" file.txt
# 显示行号
grep -n "keyword" file.txt
# 递归搜索目录
grep -r "keyword" /path/
# 显示匹配行数
grep -c "keyword" file.txt
# 反向匹配
grep -v "keyword" file.txt
# 正则表达式
grep -E "pattern1|pattern2" file.txt
文件权限管理
权限说明
-rwxr-xr--
- : 文件类型(-文件 d目录 l链接)
rwx : 所有者权限(读写执行)
r-x : 组权限(读执行)
r-- : 其他用户权限(读)
权限修改
# 数字方式
chmod 755 file.txt # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 700 file.txt # rwx------
# 符号方式
chmod u+x file.txt # 所有者添加执行权限
chmod g-w file.txt # 组移除写权限
chmod o+r file.txt # 其他添加读权限
chmod a+x file.txt # 所有人添加执行权限
# 递归修改
chmod -R 755 /path/to/dir
所有者修改
# 修改所有者
chown user file.txt
# 修改所有者和组
chown user:group file.txt
# 递归修改
chown -R user:group /path/to/dir
# 只修改组
chgrp group file.txt
用户与组管理
用户管理
# 添加用户
useradd username
# 添加用户并创建主目录
useradd -m username
# 设置密码
passwd username
# 删除用户
userdel username
# 删除用户及主目录
userdel -r username
# 修改用户
usermod -l newname oldname
# 查看用户信息
id username
组管理
# 添加组
groupadd groupname
# 删除组
groupdel groupname
# 用户加入组
usermod -aG groupname username
# 查看用户所属组
groups username
# 查看组成员
grep groupname /etc/group
用户切换
# 切换用户
su username
# 切换到 root
su -
# 以 root 执行命令
sudo command
# 切换到 root 环境
sudo -i
进程管理
查看进程
# 查看所有进程
ps aux
# 查看指定进程
ps aux | grep nginx
# 树形显示
pstree
# 动态监控
top
# 更友好的监控
htop
# 实时监控指定进程
watch -n 1 'ps aux | grep nginx'
进程控制
# 后台运行
command &
# 查看后台任务
jobs
# 调到前台
fg %1
# 放回后台
bg %1
# 挂起进程
Ctrl + Z
# 终止进程
Ctrl + C
终止进程
# 按 PID 终止
kill 1234
# 强制终止
kill -9 1234
# 按名称终止
killall nginx
# 按名称终止(支持模糊匹配)
pkill nginx
# 终止指定用户的进程
pkill -u username
系统服务
# 启动服务
systemctl start nginx
# 停止服务
systemctl stop nginx
# 重启服务
systemctl restart nginx
# 重载配置
systemctl reload nginx
# 查看状态
systemctl status nginx
# 开机自启
systemctl enable nginx
# 禁用自启
systemctl disable nginx
# 查看所有服务
systemctl list-units --type=service
磁盘管理
磁盘查看
# 查看磁盘使用
df -h
# 查看目录大小
du -sh /path
# 查看目录下各文件大小
du -h --max-depth=1 /path
# 查看磁盘分区
fdisk -l
# 查看 LVM 信息
lvdisplay
vgdisplay
pvdisplay
磁盘挂载
# 查看挂载情况
mount
# 挂载磁盘
mount /dev/sdb1 /mnt/data
# 卸载磁盘
umount /mnt/data
# 强制卸载
umount -l /mnt/data
# 开机自动挂载
echo "/dev/sdb1 /mnt/data ext4 defaults 0 0" >> /etc/fstab
磁盘清理
# 清理包缓存
apt clean # Debian/Ubuntu
yum clean all # CentOS/RHEL
# 删除旧内核
apt autoremove --purge
# 查找大文件
find / -type f -size +100M 2>/dev/null
# 查找大目录
du -h --max-depth=1 / | sort -hr | head -10
网络管理
网络配置
# 查看 IP 地址
ip addr
ifconfig
# 查看路由
ip route
route -n
# 查看端口
netstat -tlnp
ss -tlnp
# 查看所有连接
netstat -anp
ss -anp
# 查看网络统计
netstat -s
网络测试
# Ping 测试
ping google.com
# 指定次数
ping -c 4 google.com
# DNS 查询
nslookup google.com
dig google.com
# 端口测试
telnet 192.168.1.1 80
nc -zv 192.168.1.1 80
# 路由追踪
traceroute google.com
# 下载文件
wget http://example.com/file.zip
curl -O http://example.com/file.zip
防火墙配置
# UFW (Ubuntu)
ufw enable
ufw disable
ufw status
ufw allow 80
ufw allow 443
ufw deny 22
ufw delete allow 80
# firewalld (CentOS)
firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
iptables
# 查看规则
iptables -L -n
# 允许端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 禁止 IP
iptables -A INPUT -s 192.168.1.100 -j DROP
# 保存规则
iptables-save > /etc/iptables.rules
系统信息
系统版本
# 查看系统版本
cat /etc/os-release
lsb_release -a
# 查看内核版本
uname -r
uname -a
# 查看 CPU 信息
cat /proc/cpuinfo
lscpu
# 查看内存信息
cat /proc/meminfo
free -h
# 查看主机名
hostname
hostnamectl
资源监控
# 内存使用
free -h
# CPU 使用
top
htop
# 磁盘 IO
iostat
iotop
# 网络流量
iftop
nload
# 综合监控
glances
系统时间
# 查看时间
date
# 设置时间
date -s "2024-01-01 12:00:00"
# 同步网络时间
apt install ntpdate
ntpdate pool.ntp.org
# 时区设置
timedatectl set-timezone Asia/Shanghai
压缩与解压
tar 命令
# 打包
tar -cvf archive.tar /path/to/dir
# 打包并压缩(gzip)
tar -czvf archive.tar.gz /path/to/dir
# 打包并压缩(bzip2)
tar -cjvf archive.tar.bz2 /path/to/dir
# 解包
tar -xvf archive.tar
# 解压 .tar.gz
tar -xzvf archive.tar.gz
# 解压到指定目录
tar -xzvf archive.tar.gz -C /target/path
其他格式
# zip 压缩
zip -r archive.zip /path/to/dir
# zip 解压
unzip archive.zip
# gzip 压缩
gzip file.txt
# gzip 解压
gunzip file.txt.gz
# 7z 压缩
7z a archive.7z /path/to/dir
# 7z 解压
7z x archive.7z
文本处理
sed 命令
# 替换字符串
sed 's/old/new/' file.txt
# 替换所有匹配
sed 's/old/new/g' file.txt
# 删除行
sed '3d' file.txt # 删除第3行
sed '/pattern/d' file.txt # 删除匹配行
# 插入行
sed '3i\new line' file.txt # 在第3行前插入
# 直接修改文件
sed -i 's/old/new/g' file.txt
awk 命令
# 打印列
awk '{print $1}' file.txt
# 打印多列
awk '{print $1, $3}' file.txt
# 指定分隔符
awk -F: '{print $1}' /etc/passwd
# 条件过滤
awk '$3 > 100' file.txt
# 计算求和
awk '{sum+=$1} END {print sum}' file.txt
# 统计行数
awk 'END {print NR}' file.txt
其他命令
# 排序
sort file.txt
sort -n file.txt # 数字排序
sort -rn file.txt # 倒序
sort -u file.txt # 去重
# 去重
uniq file.txt
sort file.txt | uniq
# 统计
wc file.txt # 行数、词数、字节数
wc -l file.txt # 行数
wc -w file.txt # 词数
# 截取
cut -d: -f1 /etc/passwd
cut -c1-10 file.txt
# 合并
paste file1.txt file2.txt
计划任务
crontab
# 编辑计划任务
crontab -e
# 查看计划任务
crontab -l
# 删除计划任务
crontab -r
cron 表达式
* * * * *
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─── 星期几 (0-7, 0和7都是周日)
│ │ │ └──────── 月份 (1-12)
│ │ └───────────── 日期 (1-31)
│ └────────────────── 小时 (0-23)
└─────────────────────── 分钟 (0-59)
示例
# 每分钟执行
* * * * * /path/to/script.sh
# 每小时执行
0 * * * * /path/to/script.sh
# 每天凌晨执行
0 0 * * * /path/to/script.sh
# 每周一执行
0 0 * * 1 /path/to/script.sh
# 每5分钟执行
*/5 * * * * /path/to/script.sh
# 每月1号执行
0 0 1 * * /path/to/script.sh
快捷键
| 快捷键 | 说明 |
|---|---|
| Ctrl + C | 终止当前命令 |
| Ctrl + Z | 挂起当前命令 |
| Ctrl + D | 退出当前 Shell |
| Ctrl + L | 清屏 |
| Ctrl + A | 移到行首 |
| Ctrl + E | 移到行尾 |
| Ctrl + U | 删除到行首 |
| Ctrl + K | 删除到行尾 |
| Ctrl + R | 搜索历史命令 |
| Tab | 自动补全 |
| !! | 执行上一条命令 |
| !$ | 上一条命令的最后一个参数 |
总结
Linux 命令是系统管理和运维的基础。本文整理了最常用的命令,建议:
- 多动手实践,加深记忆
- 使用
man command查看帮助 - 善用 Tab 补全和历史命令
- 危险操作前先备份
持续学习和积累,逐步提高 Linux 技能水平。