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
六、安全基础
- 修改SSH默认端口:编辑
/etc/ssh/sshd_config,修改Port
- 禁止root远程登录:设置
PermitRootLogin no
- 使用密钥登录:禁用密码登录,改用SSH密钥
- 配置防火墙:使用ufw或iptables只开放必要端口
- 定期更新系统:
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)前先确认路径,重要操作前一定备份。