Linux是服务器领域最常用的操作系统,超过90%的Web服务器运行在Linux上。作为后端开发者或运维人员,掌握Linux基本操作是一项必备技能。本文整理了日常运维中最常用的命令和操作。

一、文件与目录操作

# 查看当前目录 pwd # 列出文件 ls -la # 详细信息 ls -lht # 按修改时间排序 # 目录操作 cd /var/www/html # 切换目录 cd ~ # 回到主目录 cd .. # 上级目录 cd - # 回到之前的目录 # 创建与删除 mkdir -p /data/logs/app # 递归创建目录 touch app.log # 创建空文件 cp -r source/ backup/ # 复制目录 mv old-name new-name # 重命名/移动 rm -rf /tmp/cache # 递归删除(谨慎!) # 查看文件内容 cat config.php # 查看小文件 head -n 20 app.log # 查看前20行 tail -f app.log # 实时追踪日志 less large-file.log # 分页查看大文件 # 搜索文件 find /var/www -name "*.php" -type f find /data -size +100M # 查找大于100M的文件 grep -rn "error" /var/log/nginx/ # 搜索文件内容

二、用户与权限管理

# 用户操作 useradd -m developer # 创建用户并生成主目录 passwd developer # 设置密码 usermod -aG sudo developer # 添加到sudo组 userdel -r developer # 删除用户及其主目录 # 权限管理 chmod 755 script.sh # rwxr-xr-x chmod 644 config.php # rw-r--r-- chmod +x deploy.sh # 添加执行权限 chown www-data:www-data /var/www/html # 更改所有者 chown -R user:group /data # 递归修改

三、系统监控

# CPU和内存 top # 实时监控(按q退出) htop # 更友好的top(需安装) free -h # 查看内存使用 df -h # 查看磁盘使用 du -sh /var/www/* # 查看各目录大小 # 进程管理 ps aux | grep nginx # 查找进程 kill -9 PID # 强制结束进程 killall nginx # 按名称结束进程 # 网络相关 netstat -tlnp # 查看端口监听 ss -tlnp # 同上(新版推荐) curl -I https://example.com # 测试HTTP响应 ping -c 5 google.com # 测试网络连通性 wget https://example.com/file.zip # 下载文件

四、Nginx配置

# Nginx基本操作 systemctl start nginx # 启动 systemctl stop nginx # 停止 systemctl reload nginx # 重新加载配置 systemctl status nginx # 查看状态 nginx -t # 测试配置语法 # 典型网站配置 # /etc/nginx/conf.d/mysite.conf server { listen 80; server_name example.com www.example.com; root /var/www/mysite; index index.php index.html; # 日志 access_log /var/log/nginx/mysite.access.log; error_log /var/log/nginx/mysite.error.log; # PHP处理 location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 静态资源缓存 location ~* \.(css|js|png|jpg|gif|ico|woff2)$ { expires 30d; add_header Cache-Control "public, immutable"; } # Gzip压缩 gzip on; gzip_types text/plain application/json text/css application/javascript; }

五、定时任务(Crontab)

# 编辑定时任务 crontab -e # 常用格式:分 时 日 月 星期 命令 # 每天凌晨2点备份数据库 0 2 * * * /root/scripts/backup.sh # 每5分钟执行一次 */5 * * * * curl -s https://example.com/cron # 每周一早上8点清理日志 0 8 * * 1 find /var/log -name "*.log" -mtime +30 -delete # 查看当前用户的定时任务 crontab -l

六、安全基础

  1. 修改SSH默认端口:编辑 /etc/ssh/sshd_config,修改Port
  2. 禁止root远程登录:设置 PermitRootLogin no
  3. 使用密钥登录:禁用密码登录,改用SSH密钥
  4. 配置防火墙:使用ufw或iptables只开放必要端口
  5. 定期更新系统:apt update && apt upgrade
# UFW防火墙配置 ufw allow 22/tcp # SSH ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS ufw enable # 启用防火墙 ufw status # 查看状态

七、Shell脚本基础

把常用命令写成脚本,可以大大提高运维效率:

#!/bin/bash # backup.sh - 每日自动备份脚本 DATE=$(date +%Y%m%d) BACKUP_DIR="/data/backups" DB_NAME="mydb" # 创建备份目录 mkdir -p $BACKUP_DIR # 备份数据库 mysqldump -u root -p'password' $DB_NAME | gzip > $BACKUP_DIR/db_$DATE.sql.gz # 备份网站文件 tar -czf $BACKUP_DIR/site_$DATE.tar.gz /var/www/html # 删7天前的旧备份 find $BACKUP_DIR -name "*.gz" -mtime +7 -delete echo "备份完成: $DATE" >> /var/log/backup.log
# 赋予执行权限并运行 chmod +x backup.sh ./backup.sh

八、包管理

# Ubuntu/Debian (apt) apt update # 更新软件源 apt upgrade # 升级所有已安装软件 apt install nginx # 安装软件 apt remove nginx # 卸载软件 apt search keyword # 搜索软件包 # CentOS/RHEL (yum/dnf) dnf update # 更新所有软件 dnf install nginx # 安装 dnf remove nginx # 卸载 dnf list installed # 查看已安装

九、常见故障排查

网站打不开怎么办?

# 1. 检查服务是否在运行 systemctl status nginx systemctl status php-fpm systemctl status mysql # 2. 检查端口是否监听 ss -tlnp | grep -E '80|443' # 3. 查看Nginx错误日志 tail -50 /var/log/nginx/error.log # 4. 检查防火墙是否拦截 ufw status

服务器CPU或内存满载

# 查看哪个进程占用最多资源 top -o %CPU # 按CPU排序 top -o %MEM # 按内存排序 # 查看某个进程的详细信息 ps aux | grep php-fpm # 重启服务释放资源 systemctl restart php-fpm systemctl restart nginx
总结:Linux运维的核心是“多看日志、多备份、小心操作”。每次执行危险命令(如 rm -rf、chmod -R)前先确认路径,重要操作前一定备份。