1. Linux服务器操作命令概述作为项目部署的基础环境Linux服务器的高效管理离不开命令行操作。与图形界面相比命令行工具提供了更直接、更强大的系统控制能力尤其适合远程服务器管理、自动化脚本编写等场景。对于开发者而言掌握这些命令就像木匠熟悉自己的工具一样重要。在实际项目部署过程中我们经常需要完成以下典型操作查看系统资源使用情况、管理服务进程、监控网络连接、处理文件权限、排查性能瓶颈等。这些操作如果通过图形界面完成不仅效率低下在远程连接时还可能遇到界面卡顿的问题。而命令行工具则能完美解决这些痛点。提示建议所有服务器管理员都建立自己的命令备忘录将常用命令按场景分类整理。随着经验积累这个清单会成为你最宝贵的工作资产。2. 系统监控与性能分析命令2.1 进程管理三剑客ps命令是查看进程状态的瑞士军刀。我最常用的组合是ps -aux或ps -ef前者以用户友好的格式显示所有进程后者则以完整格式列出进程信息。在排查内存泄漏问题时可以加上--sort-%mem参数按内存使用排序ps -aux --sort-%mem | head -10这个命令会显示内存占用最高的10个进程帮助快速定位问题源头。top命令提供了动态的实时系统监控视图。按1键可以展开显示每个CPU核心的使用情况这在多核服务器上特别有用。我习惯用-d参数调整刷新间隔如top -d 2设置为2秒刷新避免频繁刷新影响问题排查。htop是top的增强版需额外安装提供了彩色显示、鼠标操作和更直观的布局。它最实用的功能是可以用方向键和回车键直接操作进程比如结束进程或调整优先级。2.2 内存与CPU监控free -h命令以人类可读的格式GB/MB显示内存使用情况。关键要看available列它表示系统实际可用的内存量比free列更准确反映内存状态。vmstat 1 5命令每隔1秒输出一次系统状态共输出5次。重点关注以下列r运行队列长度持续大于CPU核心数说明系统过载us和sy用户态和内核态CPU使用率waIO等待时间过高说明磁盘是瓶颈mpstat -P ALL 1命令可以显示每个CPU核心的详细使用情况在多核服务器上排查CPU负载不均衡问题时特别有用。2.3 磁盘IO监控iostat -x 1命令提供详细的磁盘IO统计信息。关键指标包括%util设备利用率接近100%说明磁盘饱和awaitIO平均等待时间过高说明磁盘响应慢svctm服务时间反映磁盘本身性能iotop需安装类似于top但专门用于监控磁盘IO可以直观看到哪些进程在大量读写磁盘。3. 文件与目录操作命令3.1 基础文件操作ls -alh是我最常用的文件列表命令组合-a显示隐藏文件-l长格式显示详细信息-h人类可读的文件大小find命令功能强大但语法复杂。一个实用例子是查找最近修改的日志文件find /var/log -name *.log -mtime -1 -exec ls -lh {} \;这个命令会列出/var/log目录下24小时内修改过的所有.log文件并显示详细信息。3.2 文件传输与归档rsync -avzP是我推荐的文件同步命令-a归档模式保留文件属性-v详细输出-z压缩传输-P显示进度和断点续传例如将本地目录同步到远程服务器rsync -avzP ./project/ userremote:/path/to/destination/tar命令处理归档文件时我习惯用以下组合tar -czvf archive.tar.gz /path/to/directory # 压缩 tar -xzvf archive.tar.gz -C /extract/path # 解压3.3 权限与属性管理chmod修改文件权限时数字模式比符号模式更精确。例如chmod 750 script.sh # 所有者rwx组r-x其他---chown改变文件所有者时可以同时修改用户和组chown user:group file.txtsetfacl命令设置ACL访问控制列表实现更精细的权限控制setfacl -m u:testuser:rwx /shared/directory4. 网络管理与服务控制4.1 网络状态查看netstat -tulnp显示所有监听端口及相关进程在排查端口冲突时非常有用。现在更推荐使用ss -tulnp它来自iproute2套件速度更快。lsof -i :80可以查看哪些进程在使用80端口。当遇到Address already in use错误时这个命令能快速定位问题进程。tcpdump是网络抓包利器基本用法tcpdump -i eth0 -nn port 80 -w capture.pcap4.2 防火墙管理在CentOS/RHEL上firewall-cmd是管理firewalld的主要工具firewall-cmd --zonepublic --add-port8080/tcp --permanent firewall-cmd --reload在Ubuntu上ufw提供了更简单的接口ufw allow 22/tcp ufw enable4.3 服务管理systemctl是现代Linux系统管理服务的标准工具systemctl start nginx # 启动服务 systemctl stop nginx # 停止服务 systemctl restart nginx # 重启服务 systemctl status nginx # 查看状态 systemctl enable nginx # 设置开机启动查看所有已启动的服务systemctl list-units --typeservice --staterunning5. 用户与权限管理5.1 用户账户操作创建用户时推荐使用adduser而非useradd因为它会交互式地创建主目录和设置密码adduser newuser usermod -aG sudo newuser # 授予sudo权限锁定和解锁用户账户passwd -l username # 锁定 passwd -u username # 解锁5.2 密码策略设置修改密码有效期chage -M 90 username # 设置密码90天后过期查看密码状态chage -l username5.3 sudo权限配置编辑sudoers文件的安全方式是使用visudo命令。典型的授权配置%developers ALL(ALL) NOPASSWD: /usr/bin/systemctl restart nginx这表示developers组的成员可以无需密码执行nginx服务重启操作。6. 日志查看与分析6.1 系统日志查看journalctl是systemd系统的日志查看工具强大但复杂。几个实用命令journalctl -u nginx -f # 实时查看nginx日志 journalctl --since 1 hour ago # 查看最近1小时日志 journalctl -p err -b # 本次启动的所有错误日志6.2 文本日志处理grep是最常用的日志过滤工具。查找错误日志grep -i error /var/log/syslogtail -f实时跟踪日志文件变化tail -f /var/log/nginx/access.logawk可以提取特定字段。例如统计nginx访问日志的HTTP状态码awk {print $9} access.log | sort | uniq -c6.3 日志轮转配置logrotate是管理日志轮转的标准工具。典型配置/etc/logrotate.d/nginx/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate /usr/bin/systemctl reload nginx /dev/null 21 || true endscript }7. 实用技巧与高级用法7.1 命令组合技巧将多个命令通过管道组合可以实现强大功能。例如找出占用内存最多的5个进程ps -eo pid,ppid,cmd,%mem,%cpu --sort-%mem | head -6统计当前目录下各种类型文件的数量find . -type f | awk -F. {print $NF} | sort | uniq -c7.2 后台任务管理nohup和让命令在后台持续运行nohup ./long_running_script.sh output.log 21 tmux或screen是更专业的终端复用工具可以创建持久会话。7.3 环境变量配置查看所有环境变量printenv设置临时环境变量export PATH$PATH:/new/path永久生效需要写入~/.bashrc或/etc/profile文件。7.4 定时任务管理crontab -e编辑当前用户的定时任务。典型格式* * * * * command_to_execute | | | | | | | | | ----- 星期几 (0 - 6) (周日0) | | | ------- 月份 (1 - 12) | | --------- 日 (1 - 31) | ----------- 小时 (0 - 23) ------------- 分钟 (0 - 59)系统级定时任务放在/etc/cron.*目录下。8. 安全加固与故障排查8.1 SSH安全配置编辑/etc/ssh/sshd_config提高安全性PermitRootLogin no PasswordAuthentication no AllowUsers yourusername然后重启SSH服务systemctl restart sshd8.2 文件完整性检查使用md5sum或sha256sum创建校验和sha256sum important_file checksums.sha256 sha256sum -c checksums.sha256 # 验证8.3 系统信息收集当服务器出现问题时首先收集以下信息uname -a # 内核版本 lsb_release -a # 发行版信息 df -h # 磁盘空间 free -h # 内存使用 uptime # 负载情况 journalctl -b # 本次启动日志8.4 性能瓶颈分析系统响应慢时按顺序检查uptime看负载free -h看内存iostat -x 1看磁盘IOtop看CPU使用iftop需安装看网络流量9. 自动化与脚本编写9.1 Shell脚本基础一个简单的备份脚本示例#!/bin/bash # 定义变量 BACKUP_DIR/backups DATE$(date %Y%m%d) # 创建备份目录 mkdir -p $BACKUP_DIR/$DATE # 执行备份 tar -czf $BACKUP_DIR/$DATE/home_backup.tar.gz /home # 删除7天前的备份 find $BACKUP_DIR -type d -mtime 7 -exec rm -rf {} \;9.2 脚本调试技巧启用调试模式#!/bin/bash -x或者在脚本中插入调试命令set -x # 开启调试 command1 command2 set x # 关闭调试9.3 参数处理处理命令行参数while getopts :a:b: opt; do case $opt in a) arg1$OPTARG ;; b) arg2$OPTARG ;; \?) echo 无效选项: -$OPTARG 2 ;; esac done10. 容器化环境下的命令变化10.1 Docker常用命令查看运行中的容器docker ps查看容器日志docker logs -f container_name进入容器shelldocker exec -it container_name /bin/bash10.2 Kubernetes常用命令查看pod状态kubectl get pods -A查看pod日志kubectl logs -f pod_name描述服务详情kubectl describe svc service_name10.3 容器与主机调试从主机查看容器的网络命名空间nsenter -t $(docker inspect -f {{.State.Pid}} container_name) -n ip a检查容器的cgroup限制docker inspect -f {{.HostConfig.Memory}} container_name