Linxu常用命令
Swap常用操作
Linux Swap 常用操作指南
Swap(交换空间)是Linux系统中用于内存扩展的磁盘空间,当物理内存(RAM)不足时,系统会将不活跃的内存页移动到Swap空间。
1. 查看当前Swap使用情况
free -h
# 或
swapon --show
# 或
cat /proc/swaps
2. 查看内存和Swap使用详情
top
# 然后按 M 按内存排序,按 P 按CPU排序
# 或者使用
htop
3. 创建Swap文件
# 创建一个4GB的Swap文件
sudo fallocate -l 4G /swapfile
# 或者使用dd命令(较慢但更可靠)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
# 设置正确的权限
sudo chmod 600 /swapfile
# 格式化Swap文件
sudo mkswap /swapfile
# 启用Swap文件
sudo swapon /swapfile
4. 永久启用Swap文件
编辑 /etc/fstab 文件,添加以下行:
/swapfile none swap sw 0 0
5. 调整Swap使用倾向(swappiness)
swappiness值范围0-100,表示系统使用Swap的倾向程度(默认通常为60)
# 查看当前值
cat /proc/sys/vm/swappiness
# 临时修改(重启后失效)
sudo sysctl vm.swappiness=10
# 永久修改
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
6. 调整缓存压力(vfs_cache_pressure)
# 查看当前值
cat /proc/sys/vm/vfs_cache_pressure
# 临时修改
sudo sysctl vm.vfs_cache_pressure=50
# 永久修改
echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
7. 禁用并删除Swap文件
# 禁用Swap
sudo swapoff /swapfile
# 删除Swap文件
sudo rm /swapfile
# 从/etc/fstab中删除相关行
sudo nano /etc/fstab
8. 调整Swap空间大小
# 首先禁用Swap
sudo swapoff /swapfile
# 重新创建Swap文件(如改为8GB)
sudo fallocate -l 8G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
9. 使用分区作为Swap
# 创建Swap分区(假设为/dev/sdb1)
sudo mkswap /dev/sdb1
sudo swapon /dev/sdb1
# 添加到/etc/fstab
/dev/sdb1 none swap sw 0 0
10. 监控Swap使用
# 实时监控
watch -n 1 free -h
# 查看哪些进程在使用Swap
sudo smem -s swap -r
# 或
sudo swapon --show
最佳实践建议
- 对于现代系统(RAM ≥ 4GB),可以设置较低的swappiness值(如10-30)
- 对于SSD,可以考虑减少Swap使用以延长SSD寿命
- Swap大小通常建议:
- RAM < 2GB:Swap = 2倍RAM
- 2GB ≤ RAM < 8GB:Swap = 等于RAM
- RAM ≥ 8GB:Swap = 0.5倍RAM或更少
- 生产服务器建议使用独立Swap分区而非Swap文件
这些操作可以帮助你有效管理Linux系统中的Swap空间,优化系统性能。
find 命令详解
find 是 Linux/Unix 系统中一个非常强大的文件搜索工具,可以根据多种条件查找文件和目录。
基本语法
find [路径] [选项] [操作]
常用选项
按名称查找
-name:按文件名查找(区分大小写)find /home -name "*.txt"-iname:按文件名查找(不区分大小写)find /home -iname "*.TXT"
按类型查找
-type:按文件类型查找f:普通文件d:目录l:符号链接
find /var -type d
按时间查找
-mtime:按修改时间查找(天数)find / -mtime -7 # 7天内修改过的文件 find / -mtime +30 # 30天前修改过的文件-mmin:按修改时间查找(分钟)find / -mmin -60 # 60分钟内修改过的文件-atime:按访问时间查找-ctime:按状态变更时间查找
按大小查找
-size:按文件大小查找find / -size +1G # 大于1GB的文件 find / -size -100k # 小于100KB的文件 find / -size 50M # 等于50MB的文件
按权限查找
-perm:按权限查找find / -perm 644 # 精确匹配644权限的文件 find / -perm -644 # 至少包含644权限的文件 find / -perm /u=r # 用户有读权限的文件
按用户/组查找
-user:按所有者查找find / -user root-group:按所属组查找find / -group www-data
执行操作
基本操作
-print:打印结果(默认操作)-ls:以ls格式显示结果find /tmp -type f -ls
删除文件
-delete:删除找到的文件find /tmp -name "*.tmp" -delete
执行命令
-exec:对找到的文件执行命令find . -name "*.bak" -exec rm {} \; find /var/log -name "*.log" -exec gzip {} \;
组合条件
-a或-and:与(默认)-o或-or:或!或-not:非():组合条件(需要转义)
find / \( -name "*.jpg" -o -name "*.png" \) -size +1M
实用示例
-
查找并删除空文件:
find /tmp -type f -empty -delete -
查找最近修改的PHP文件:
find /var/www -name "*.php" -mtime -1 -
查找所有可执行文件:
find / -type f -perm /a=x -
查找并更改权限:
find /home -type f -perm 777 -exec chmod 644 {} \; -
查找大文件并排序:
find / -type f -size +100M -exec ls -lh {} + | sort -k5 -rh
find 命令功能非常强大,上述只是常用功能的介绍。可以通过 man find 查看完整手册。
Linux进程管理
在 Linux 系统中,进程管理是系统运维和日常操作的重要部分。以下是常用的进程管理命令及其用途:
1. 查看进程
-
ps
查看当前进程的快照。ps aux # 查看所有运行中的进程(BSD 格式) ps -ef # 查看所有进程(标准格式) ps -u user # 查看特定用户的进程 ps -p {pid} -f -
top/htop
实时动态查看进程和系统资源占用(htop是增强版,需安装)。top # 交互式界面,按 `q` 退出 htop # 更友好的界面(支持鼠标操作) -
pstree
以树状结构显示进程关系。pstree -p # 显示进程及其 PID
2. 终止进程
-
kill
通过进程 ID (PID) 终止进程。kill -9 PID # 强制终止进程(SIGKILL) kill -15 PID # 优雅终止进程(SIGTERM,默认) -
pkill
通过进程名终止进程。pkill -9 nginx # 强制终止所有名为 "nginx" 的进程 -
killall
终止所有匹配名称的进程。killall -9 python # 强制终止所有名为 "python" 的进程
3. 进程优先级
-
nice
启动进程时指定优先级(范围:-20 最高优先级,19 最低)。nice -n 10 command # 以较低优先级运行命令 -
renice
修改已运行进程的优先级。renice -n 5 -p PID # 修改指定 PID 的优先级为 5
4. 后台进程管理
-
&
将进程放到后台运行。command & # 后台运行命令 -
jobs
查看当前终端后台任务。jobs -l # 显示后台任务及其 PID -
fg/bg
将任务切换到前台(fg)或继续后台运行(bg)。fg %1 # 将任务 1 切换到前台 bg %2 # 将任务 2 继续在后台运行 -
nohup
退出终端后仍保持进程运行。nohup command & # 忽略 SIGHUP 信号,日志默认写入 nohup.out
5. 进程搜索
pgrep
根据名称查找进程 PID。pgrep -u root nginx # 查找 root 用户的 nginx 进程 PID
6. 监控工具
-
vmstat
查看系统资源使用情况(CPU、内存、IO 等)。vmstat 1 # 每秒刷新一次 -
pidstat(需安装sysstat)
监控进程的 CPU、内存等资源占用。pidstat -p PID 1 # 每秒监控指定 PID
7. 其他实用命令
-
lsof
列出被进程打开的文件。lsof -i :80 # 查看占用 80 端口的进程 lsof -p PID # 查看指定 PID 打开的文件 -
strace
跟踪进程的系统调用。strace -p PID # 跟踪进程的系统调用(调试用)
常见场景示例
-
终止失控的进程
ps aux | grep "bad_process" # 查找 PID kill -9 PID -
后台运行并保存日志
nohup python script.py > output.log 2>&1 & -
监控高 CPU 进程
top -o %CPU # 按 CPU 使用率排序
掌握这些命令后,你可以高效地管理 Linux 系统中的进程。如果需要更详细的信息,可以通过 man 命令名(如 man ps)查看手册。
在 Linux 中,查看和管理进程的详细信息是系统管理的重要任务。以下是 查看进程详情 的常用命令和技巧,涵盖进程的资源占用、打开文件、环境变量、运行状态等关键信息。
1. 查看进程基本信息
(1) ps(进程快照)
查看进程的 PID、CPU、内存、启动命令 等基础信息:
ps aux | grep <进程名> # 模糊匹配进程(常用)
ps -ef | grep <进程名> # 标准格式查看
ps -p <PID> -o pid,ppid,cmd,%cpu,%mem,stat # 查看指定进程的详细信息
- 关键字段说明:
%CPU:CPU 占用率%MEM:内存占用率STAT:进程状态(如S=睡眠,R=运行,Z=僵尸进程)PPID:父进程 ID
(2) top / htop(实时监控)
动态查看进程的 资源占用排名(CPU、内存等):
top # 默认按 CPU 排序
top -p <PID> # 监控指定 PID
htop # 交互式增强版(支持鼠标操作)
- 交互操作:
- 按
P:按 CPU 排序 - 按
M:按内存排序 - 按
F1:查看帮助
- 按
2. 查看进程的详细属性
(1) /proc/<PID> 目录
Linux 将所有进程的详细信息映射到 /proc/<PID>/ 目录下,可直接查看:
ls /proc/<PID> # 查看进程的详细信息文件
cat /proc/<PID>/status # 进程状态(名称、PID、内存等)
cat /proc/<PID>/cmdline # 查看进程的完整启动命令
cat /proc/<PID>/environ # 查看进程的环境变量
- 关键文件:
status:进程状态摘要statm:内存使用情况io:I/O 统计信息
(2) pmap(内存映射)
查看进程的 内存占用分布:
pmap -x <PID> # 显示详细内存映射
3. 查看进程打开的文件和网络连接
(1) lsof(列出打开文件)
查看进程打开的文件、目录、网络连接等:
lsof -p <PID> # 查看指定进程打开的文件
lsof -i :80 # 查看占用 80 端口的进程
lsof -u <用户名> # 查看用户打开的文件
- 常用选项:
-i:网络连接-c <进程名>:按进程名过滤
(2) netstat / ss(网络连接)
查看进程的 网络连接状态:
netstat -tulnp | grep <PID> # 查看进程的网络连接(旧版)
ss -tulnp | grep <PID> # 更快的替代方案(推荐)
4. 查看进程的线程和调用栈
(1) pstree(进程树)
显示进程的 父子关系 和线程:
pstree -p <PID> # 树状显示进程及线程
(2) strace(系统调用跟踪)
监控进程的 系统调用(调试用):
strace -p <PID> # 实时跟踪进程的系统调用
strace -e open,read <命令> # 跟踪命令的特定系统调用
(3) gdb(调试器附加)
深入分析进程的运行状态(需谨慎使用):
gdb -p <PID> # 附加到运行中的进程
5. 查看进程的资源限制
(1) ulimit
查看当前 shell 的资源限制:
ulimit -a # 显示所有限制(如打开文件数、栈大小等)
(2) /proc/<PID>/limits
查看指定进程的资源限制:
cat /proc/<PID>/limits # 显示进程的软/硬限制
6. 统计进程的资源使用
(1) pidstat(综合监控)
监控进程的 CPU、内存、IO 等(需安装 sysstat):
pidstat -p <PID> 1 # 每秒刷新一次统计信息
pidstat -d -p <PID> # 监控磁盘 I/O
(2) ps -eo(自定义输出)
按需显示进程的特定字段:
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%mem | head # 按内存排序
常见问题排查示例
-
进程卡死
top # 找到高 CPU/内存的 PID strace -p <PID> # 检查系统调用是否阻塞 kill -9 <PID> # 强制终止 -
内存泄漏
pmap -x <PID> # 查看内存分布 cat /proc/<PID>/status | grep VmRSS # 检查实际内存占用 -
端口冲突
lsof -i :8080 # 查看占用端口的进程
总结
| 需求 | 命令 |
|---|---|
| 查看进程基本信息 | ps aux / top |
| 查看进程环境变量 | cat /proc/<PID>/environ |
| 查看打开的文件 | lsof -p <PID> |
| 监控资源占用 | pidstat / htop |
| 分析系统调用 | strace -p <PID> |
| 查看网络连接 | ss -tulnp / netstat |
通过组合这些命令,你可以全面掌握 Linux 进程的详细状态!