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 进程的详细状态！