Skip to content

🐧 Linux 命令与运维终极手册(2025 完整版)

✅ 覆盖文件操作、系统监控、网络、服务管理、定时任务、自定义服务等 ✅ 所有命令均经验证,可直接复制使用 ✅ 适用于 Ubuntu / CentOS / Debian 等主流发行版


一、📁 文件与目录操作

命令说明
ls列出当前目录下的文件和目录
ls -a显示包括隐藏文件(以 . 开头)在内的所有内容
ls -l以详细格式列出文件(权限、所有者、大小、时间等)
ls -la详细格式 + 显示隐藏文件
ls -lt按修改时间排序(最新在前)
ls -ltr按修改时间逆序(最新在后)
ls -lS按文件大小降序排列
ls -lX按文件扩展名/类型排序
pwd显示当前工作目录的完整路径
cd 目录名进入指定目录
cd ..返回上一级目录
cd ../..返回上两级目录
mkdir 目录名创建一个新目录
mkdir -p a/b/c递归创建多级目录(若父目录不存在则自动创建)
rmdir 目录名删除目录
rm 文件名删除文件
rm -r 目录名递归删除非空目录及其内容(⚠️谨慎使用)
rm -f 文件名强制删除(不提示确认)
cp 源文件 目标文件复制文件
cp -r 源目录 目标目录递归复制整个目录
mv 旧名称 新名称重命名文件或目录
mv 源文件 目标路径移动文件或目录
find /path -name "文件名"在指定路径下按名称查找文件(支持通配符如 *.log

二、📄 文件内容查看与文本处理

命令说明
cat 文件名显示文件全部内容(适合小文件)
less 文件名分页查看文件(按 q 退出,/关键词 搜索)
more 文件名简单分页查看(仅支持向下翻页)
head 文件名显示文件前 10 行
head -n N 文件名显示文件前 N 行
tail 文件名显示文件后 10 行
tail -n N 文件名显示文件后 N 行
tail -f 文件名实时跟踪文件末尾内容(常用于日志监控,按 Ctrl+C 退出)
grep "关键词" 文件名在文件中搜索包含关键词的行
grep -n "关键词" 文件名搜索并显示行号
grep -r "关键词" /路径/递归搜索目录下所有文件
grep -i "关键词" 文件名忽略大小写搜索
sed 's/旧文本/新文本/g' 文件名替换文本(不修改原文件,仅输出结果)
awk '{print $1}' 文件名提取每行的第一列(默认以空格分隔)
wc -l 文件名统计文件行数

三、🖥️ 系统信息查看

命令说明
whoami显示当前登录用户名
date显示当前系统日期和时间
date "+%Y-%m-%d %H:%M:%S"自定义时间格式输出(常用于脚本)
date -Iseconds输出 ISO 8601 格式时间(如 2025-10-13T09:00:00+08:00
date -R输出 RFC 2822 格式时间(用于邮件、HTTP 头)
uname -a显示内核版本、主机名、系统架构等完整信息
hostname显示当前主机名
uptime显示系统运行时间及 1/5/15 分钟负载平均值
df -h以人类可读方式(KB/MB/GB)显示磁盘空间使用情况
du -h 目录名显示指定目录的磁盘使用量
free -h以人类可读方式显示内存和交换空间使用情况

四、⚙️ 进程与端口管理

命令说明
ps aux显示所有进程的详细信息
ps aux | grep 进程名查找特定进程
top实时动态查看系统资源和进程(按 q 退出)
htop更友好的交互式进程查看器(需安装:sudo apt install htop
kill PID终止指定进程(PID 为进程 ID)
kill -9 PID强制终止进程(不可被捕获)
netstat -tuln显示所有监听的 TCP/UDP 端口(传统命令)
ss -tuln更快的现代替代命令(推荐)
netstat -tuln | grep :8080查看 8080 端口是否被监听
lsof -i :端口号查看占用指定端口的进程(如 lsof -i :3306
fuser 8080/tcp显示使用 8080 TCP 端口的进程 ID
sudo kill -9 $(lsof -t -i:8080)一键杀死占用 8080 端口的进程

五、📦 打包与解压

5.1 tar 格式(未压缩)

命令说明
tar -cvf archive.tar 目录/打包目录为 .tar 文件
tar -xvf archive.tar解压 .tar 文件
tar -xvf archive.tar -C /目标目录解压到指定目录

5.2 tar.gz 格式(gzip 压缩)

命令说明
tar -czvf archive.tar.gz 目录/打包并压缩为 .tar.gz
tar -xzvf archive.tar.gz解压 .tar.gz 文件
tar -xzvf archive.tar.gz -C /目标目录解压到指定目录

5.3 zip 格式(跨平台兼容)

命令说明
zip -r archive.zip 目录/压缩目录为 .zip 文件
unzip archive.zip解压 .zip 文件
unzip archive.zip -d /目标目录解压到指定目录

💡 提示:.tar.gz 压缩率高,适合 Linux;.zip 兼容 Windows/macOS。


六、🌐 远程操作

命令说明
ssh 用户名@服务器IP远程登录服务器(如 ssh user@192.168.1.100
exit退出 SSH 会话
scp 本地文件 user@host:/远程路径从本地复制文件到远程服务器
scp -r 本地目录 user@host:/远程路径递归复制整个目录到远程
scp user@host:/远程文件 ./本地目录/从远程服务器下载文件到本地
scp -r user@host:/远程目录 ./本地目录/从远程下载整个目录到本地
rsync -avz 源/ user@host:/目标/高效同步文件(增量传输,推荐用于备份)

七、⚙️ 环境变量与配置

命令说明
printenv查看所有环境变量
echo $PATH查看单个环境变量(如 PATH)
export VAR=value设置临时环境变量(当前会话有效)
echo 'export VAR=value' >> ~/.bashrc将变量写入配置文件(永久生效)
source ~/.bashrc重新加载配置文件,使变量立即生效

八、🔐 权限与用户管理

命令说明
chmod 755 文件名修改文件权限(rwxr-xr-x)
chmod +x 脚本.sh给文件添加可执行权限
chown user:group 文件名修改文件所有者和所属组
sudo 命令以超级用户权限执行命令
passwd 用户名修改用户密码

九、🔄 服务管理(systemd)

命令说明
sudo systemctl start 服务名启动服务(如 nginx, myapp
sudo systemctl stop 服务名停止服务
sudo systemctl restart 服务名重启服务
sudo systemctl reload 服务名重载配置(不中断服务)
sudo systemctl status 服务名查看服务运行状态与日志片段
sudo systemctl enable 服务名设置开机自启
sudo systemctl disable 服务名禁用开机自启
systemctl list-units --type=service --state=running列出所有正在运行的服务
sudo journalctl -u 服务名查看服务完整日志
sudo journalctl -f -u 服务名实时跟踪服务日志

自定义服务文件模板(/etc/systemd/system/myapp.service

ini
[Unit]
Description=My Custom Application
After=network.target
Wants=network.target

[Service]
Type=simple
User=myuser
Group=myuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=always
RestartSec=10
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target

部署流程:

bash
sudo nano /etc/systemd/system/myapp.service   # 编写服务文件
sudo systemctl daemon-reload                  # 重载 systemd 配置
sudo systemctl start myapp                    # 启动服务
sudo systemctl enable myapp                   # 设置开机自启
sudo systemctl status myapp                   # 检查状态
sudo journalctl -u myapp -f                   # 实时查看日志

最佳实践

  • 使用非 root 用户运行服务
  • ExecStart 必须使用绝对路径(用 which python3 查询)
  • 虚拟环境路径示例:ExecStart=/home/user/app/venv/bin/gunicorn app:app

十、⏰ 定时任务(Cron)

命令说明
crontab -e编辑当前用户的定时任务
crontab -l列出当前用户的定时任务
crontab -r删除当前用户的所有定时任务(⚠️谨慎!)

Cron 表达式格式(5 个时间字段):

# 分 时 日 月 周  命令
# *  *  *  *  *  /path/to/command

常见示例:

bash
# 每天凌晨 2 点备份数据库
0 2 * * * /usr/bin/mysqldump -u root -pMyPass db > /backup/db_$(date +\%F).sql

# 每 5 分钟检查 Nginx 是否运行
*/5 * * * * systemctl is-active nginx || systemctl start nginx

# 每周一上午 9 点清理 7 天前的日志
0 9 * * 1 find /var/log -name "*.log" -mtime +7 -delete

⚠️ 注意:在 crontab% 需转义为 \%,否则会被视为换行符。

系统级定时任务目录(无需 crontab -e

目录执行频率
/etc/cron.hourly/每小时执行一次
/etc/cron.daily/每天执行一次
/etc/cron.weekly/每周执行一次
/etc/cron.monthly/每月执行一次

脚本需有执行权限:chmod +x /etc/cron.daily/mybackup


使用建议

  • 新手优先掌握:ls, cd, grep, ps, systemctl, crontab, scp, tar
  • 所有命令均可直接复制到终端运行(替换示例中的文件名/路径即可)

© 2025 技术博客. All rights reserved by 老周有AI