Linux常用命令完全指南
Linux是服务端开发和运维的基础平台,熟练使用Linux命令行是每个开发者的必备技能。本文将系统分类介绍最常用的Linux命令,从文件操作到系统监控,从网络调试到权限管理,每个命令都配有实际使用示例,帮助你快速上手Linux命令行操作。
一、文件与目录操作
1. 目录导航与文件查看
# 目录切换
cd /var/log # 切换到绝对路径
cd .. # 返回上级目录
cd - # 返回上次所在目录
cd ~ # 回到home目录
# 查看文件列表
ls -la # 详细列表(含隐藏文件)
ls -lhS # 按文件大小排序
ls -lht # 按修改时间排序
# 查看文件内容
cat file.txt # 显示全部内容
head -n 20 file.txt # 前20行
tail -n 20 file.txt # 后20行
tail -f /var/log/nginx.log # 实时追踪日志
less file.txt # 分页查看(支持搜索)
2. 文件搜索
# 按名称搜索
find /var/www -name "*.php"
find . -type f -mtime -7 # 7天内修改的文件
find . -type f -size +100M # 大于100MB的文件
find . -name "*.log" -delete # 搜索并删除
# 按内容搜索
grep "error" /var/log/app.log
grep -r "function" --include="*.php" .
grep -i "warning" app.log # 忽略大小写
grep -c "ERROR" app.log # 统计匹配行数
# 结合find和grep
find . -name "*.php" -exec grep -l "deprecated" {} ;
3. 文件操作
# 复制、移动、删除
cp -r /src /dst # 递归复制
mv old_name new_name # 移动/重命名
rm -rf directory/ # 递归强制删除(谨慎使用)
# 创建链接
ln -s /target/path link_name # 创建软链接
# 文件权限
chmod 755 script.sh # rwxr-xr-x
chmod -R 644 /var/www/ # 递归设置
chown www-data:www-data file # 修改所有者
# 磁盘使用
du -sh /var/www/* # 各目录大小
du -sh * | sort -rh # 按大小排序
df -h # 磁盘空间
二、文本处理
1. sed流编辑器
# 替换文本
sed -i "s/old_text/new_text/g" file.txt # 全局替换
sed -i "/^#/d" file.txt # 删除注释行
sed -n "10,20p" file.txt # 打印第10-20行
# 批量修改配置
sed -i "s/max_connections = 100/max_connections = 500/" my.cnf
2. awk文本分析
# 提取列
awk "{print $1, $4}" access.log # 打印第1和4列
awk -F: "{print $1}" /etc/passwd # 以:分隔,打印用户名
# 统计Nginx访问量TOP10
awk "{print $1}" access.log | sort | uniq -c | sort -rn | head -10
# 统计每个状态码的数量
awk "{print $9}" access.log | sort | uniq -c | sort -rn
3. 其他文本工具
# 排序与去重
sort file.txt | uniq # 排序去重
sort -t: -k3 -n /etc/passwd # 按第3列数字排序
# 统计
wc -l file.txt # 行数
wc -w file.txt # 单词数
# 格式转换
dos2unix file.sh # Windows转Unix格式
三、进程管理
# 查看进程
ps aux # 所有进程
ps aux | grep nginx # 过滤特定进程
pgrep -f "php-fpm" # 按名称查找PID
# 系统监控
top # 实时监控
htop # 增强版(需安装)
uptime # 系统运行时间和负载
# 资源使用
free -h # 内存使用
vmstat 1 5 # 虚拟内存统计
# 进程控制
kill -9 PID # 强制终止
kill -HUP PID # 重新加载配置
pkill -f "process_name" # 按名称终止
四、网络工具
# 网络连接
netstat -tlnp # 监听端口
ss -tlnp # 更快的替代
lsof -i :80 # 80端口占用
# 网络调试
ping google.com
traceroute google.com
nslookup example.com
dig example.com
# HTTP请求
curl -I https://example.com # 查看响应头
curl -X POST -d "data" url # POST请求
wget -O file.zip https://example.com/file.zip
# 防火墙
ufw allow 80/tcp
ufw allow 443/tcp
ufw status
iptables -L -n
五、压缩与备份
# tar压缩解压
tar -czf backup.tar.gz /var/www/ # 压缩
tar -xzf backup.tar.gz # 解压
tar -czf backup_$(date +%Y%m%d).tar.gz /data/ # 带日期的备份
# zip格式
zip -r archive.zip folder/
unzip archive.zip
# 数据库备份
mysqldump -u root -p dbname > backup.sql
mysqldump -u root -p --all-databases > all.sql
六、系统管理
# 服务管理(systemd)
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx # 不中断服务重载配置
systemctl enable nginx # 开机自启
systemctl status nginx # 查看状态
# 定时任务
crontab -e # 编辑定时任务
# 每天凌晨3点备份数据库
0 3 * * * mysqldump -u root -pdbpass mydb > /backup/db_$(date +\%Y\%m\%d).sql
# 用户管理
useradd -m -s /bin/bash username
passwd username
usermod -aG sudo username # 加入sudo组
掌握Linux命令行是成为全栈开发者的重要一步。建议在日常开发中多用命令行操作,逐渐积累经验。对于不熟悉的命令,善用man手册和--help参数,它们是最好的参考文档。