1. Linux软件包管理基础
在Linux系统中,软件包管理是系统管理员和开发者的必备技能。不同于Windows的.exe安装程序,Linux采用集中式的软件仓库机制,通过包管理器实现软件的安装、更新和卸载。这种设计不仅提高了安全性,还简化了依赖关系管理。
主流Linux发行版主要分为两大阵营:基于RPM的Red Hat系(如CentOS、Fedora)和基于DEB的Debian系(如Ubuntu)。RPM使用yum/dnf工具,而DEB使用apt/apt-get。虽然命令语法不同,但核心功能相似:
bash复制# Debian/Ubuntu系
sudo apt update # 更新软件源列表
sudo apt install nginx # 安装软件
sudo apt remove nginx # 卸载软件
# RHEL/CentOS系
sudo yum check-update # 检查更新
sudo yum install httpd # 安装软件
sudo yum remove httpd # 卸载软件
提示:生产环境中建议在安装前先执行
sudo apt update或yum check-update,确保获取的是最新的软件版本和安全补丁。
软件包管理不仅仅是简单的安装卸载,还涉及以下高级操作:
- 查询已安装软件:
dpkg -l(Debian)或rpm -qa(RHEL) - 查看软件详情:
apt show nginx或yum info httpd - 搜索软件包:
apt search keyword或yum search keyword - 清理缓存:
sudo apt clean或yum clean all
2. 进程管理核心命令
Linux作为多任务操作系统,进程管理是其核心功能。掌握进程监控和管理命令,对于系统排错、性能优化至关重要。
2.1 进程查看命令
ps命令是最基础的进程查看工具,常用组合:
bash复制ps aux # 查看所有用户的所有进程
ps -ef # 完整格式列表
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head # 按内存排序
更直观的工具是top,它提供实时动态视图:
- 按
M按内存排序 - 按
P按CPU排序 - 按
1展开多核CPU详情 - 按
q退出
对于现代系统,htop是增强版替代品,支持鼠标操作和彩色显示,安装命令:
bash复制sudo apt install htop # Debian
sudo yum install htop # RHEL
2.2 进程控制命令
控制进程的生命周期是系统管理的核心技能:
bash复制kill -9 PID # 强制终止进程
kill -15 PID # 优雅终止(默认)
pkill -f "pattern" # 按名称模式杀进程
killall nginx # 终止所有同名进程
重要:-9(SIGKILL)会立即终止进程而不做清理,可能导致数据丢失。应先尝试-15(SIGTERM)给进程正常退出的机会。
后台任务管理:
bash复制python3 script.py & # 后台运行
jobs # 查看后台任务
fg %1 # 调回前台
bg %1 # 继续后台运行
nohup command & # 退出终端仍保持运行
3. 系统服务管理
现代Linux发行版主要使用systemd作为初始化系统,服务管理命令也相应变化:
bash复制sudo systemctl start nginx # 启动服务
sudo systemctl stop nginx # 停止服务
sudo systemctl restart nginx # 重启服务
sudo systemctl status nginx # 查看状态
sudo systemctl enable nginx # 设置开机启动
sudo systemctl disable nginx # 禁用开机启动
sudo journalctl -u nginx -f # 查看日志(实时)
对于旧版SysVinit系统,服务管理命令为:
bash复制sudo service nginx start
sudo /etc/init.d/nginx restart
4. 实用技巧与故障排查
4.1 查找占用资源的进程
当系统变慢时,快速定位问题进程:
bash复制top -o %MEM # 按内存排序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head # CPU占用Top
lsof -i :80 # 查看80端口占用
fuser -v 80/tcp # 查看使用端口的进程
4.2 处理僵尸进程
僵尸进程是已终止但未被父进程回收的进程,通常无害但可能占用PID资源。清理方法:
bash复制ps -A -ostat,ppid | grep -e '[zZ]' # 查找僵尸进程
kill -HPP 父进程PID # 终止其父进程
4.3 开机启动项管理
管理系统启动时自动运行的服务:
bash复制systemctl list-unit-files --type=service # 查看所有服务状态
sudo systemctl disable unwanted.service # 禁用不需要的服务
对于非systemd服务,检查以下目录:
- /etc/rc.local
- /etc/init.d/
- ~/.config/autostart/
5. 进阶工具与技巧
5.1 进程监控工具
- glances:全能监控工具,安装:
pip install glances - nmon:性能监控利器,支持实时和历史数据分析
- netdata:Web界面的实时监控系统
5.2 自动化管理
使用脚本批量管理进程:
bash复制#!/bin/bash
# 监控并重启崩溃的服务
while true; do
if ! pgrep -x "nginx" >/dev/null; then
echo "Nginx is down, restarting..."
systemctl start nginx
fi
sleep 30
done
5.3 安全注意事项
- 避免直接使用root运行服务
- 为服务创建专用用户:
sudo useradd -r -s /sbin/nologin serviceuser - 限制服务权限:通过systemd的
ProtectSystem和PrivateTmp等选项 - 定期检查异常进程:
ps auxf | grep -v '[ ]'(查找异常空格命名的进程)
6. 常见问题解决方案
Q1: 安装软件时出现依赖错误怎么办?
- Debian系:
sudo apt --fix-broken install - RHEL系:
sudo yum deplist package查看依赖关系
Q2: 如何彻底卸载软件及其配置?
- Debian:
sudo apt purge package - RHEL:
sudo yum remove package(配置文件需手动删除)
Q3: 进程卡死无法用kill终止?
bash复制kill -9 PID # 最后手段
pkill -9 -f "processname"
reboot # 万不得已重启系统
Q4: 如何限制进程资源使用?
bash复制ulimit -u 100 # 限制用户进程数
systemd.resource-control # 在service文件中添加限制
cpulimit -l 50 -p PID # 限制CPU使用率
Q5: 服务启动失败如何排查?
bash复制sudo systemctl status service -l # 查看详细状态
sudo journalctl -xe # 检查系统日志
sudo strace -f service start # 跟踪系统调用
掌握这些Linux软件包和进程管理技能,你就能游刃有余地维护服务器稳定运行。实际工作中,建议将这些命令整理成cheatsheet随身携带,遇到问题时快速查阅。