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 命令是系统管理和运维的基础。本文整理了最常用的命令,建议:

  1. 多动手实践,加深记忆
  2. 使用 man command 查看帮助
  3. 善用 Tab 补全和历史命令
  4. 危险操作前先备份

持续学习和积累,逐步提高 Linux 技能水平。