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

最佳实践建议

  1. 对于现代系统(RAM ≥ 4GB),可以设置较低的swappiness值(如10-30)
  2. 对于SSD,可以考虑减少Swap使用以延长SSD寿命
  3. Swap大小通常建议:
    • RAM < 2GB:Swap = 2倍RAM
    • 2GB ≤ RAM < 8GB:Swap = 等于RAM
    • RAM ≥ 8GB:Swap = 0.5倍RAM或更少
  4. 生产服务器建议使用独立Swap分区而非Swap文件

这些操作可以帮助你有效管理Linux系统中的Swap空间,优化系统性能。

find 命令详解

find 是 Linux/Unix 系统中一个非常强大的文件搜索工具,可以根据多种条件查找文件和目录。

基本语法

find [路径] [选项] [操作]

常用选项

按名称查找

按类型查找

按时间查找

按大小查找

按权限查找

按用户/组查找

执行操作

基本操作

删除文件

执行命令

组合条件

find / \( -name "*.jpg" -o -name "*.png" \) -size +1M

实用示例

  1. 查找并删除空文件:

    find /tmp -type f -empty -delete
    
  2. 查找最近修改的PHP文件:

    find /var/www -name "*.php" -mtime -1
    
  3. 查找所有可执行文件:

    find / -type f -perm /a=x
    
  4. 查找并更改权限:

    find /home -type f -perm 777 -exec chmod 644 {} \;
    
  5. 查找大文件并排序:

    find / -type f -size +100M -exec ls -lh {} + | sort -k5 -rh
    

find 命令功能非常强大,上述只是常用功能的介绍。可以通过 man find 查看完整手册。

Linux进程管理

在 Linux 系统中,进程管理是系统运维和日常操作的重要部分。以下是常用的进程管理命令及其用途:


1. 查看进程


2. 终止进程


3. 进程优先级


4. 后台进程管理


5. 进程搜索


6. 监控工具


7. 其他实用命令


常见场景示例

  1. 终止失控的进程

    ps aux | grep "bad_process"  # 查找 PID
    kill -9 PID
    
  2. 后台运行并保存日志

    nohup python script.py > output.log 2>&1 &
    
  3. 监控高 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  # 查看指定进程的详细信息

(2) top / htop(实时监控)

动态查看进程的 资源占用排名(CPU、内存等):

top                          # 默认按 CPU 排序
top -p <PID>                 # 监控指定 PID
htop                         # 交互式增强版(支持鼠标操作)

2. 查看进程的详细属性

(1) /proc/<PID> 目录

Linux 将所有进程的详细信息映射到 /proc/<PID>/ 目录下,可直接查看:

ls /proc/<PID>               # 查看进程的详细信息文件
cat /proc/<PID>/status       # 进程状态(名称、PID、内存等)
cat /proc/<PID>/cmdline      # 查看进程的完整启动命令
cat /proc/<PID>/environ      # 查看进程的环境变量

(2) pmap(内存映射)

查看进程的 内存占用分布

pmap -x <PID>                # 显示详细内存映射

3. 查看进程打开的文件和网络连接

(1) lsof(列出打开文件)

查看进程打开的文件、目录、网络连接等:

lsof -p <PID>                # 查看指定进程打开的文件
lsof -i :80                  # 查看占用 80 端口的进程
lsof -u <用户名>             # 查看用户打开的文件

(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  # 按内存排序

常见问题排查示例

  1. 进程卡死

    top                        # 找到高 CPU/内存的 PID
    strace -p <PID>            # 检查系统调用是否阻塞
    kill -9 <PID>              # 强制终止
    
  2. 内存泄漏

    pmap -x <PID>              # 查看内存分布
    cat /proc/<PID>/status | grep VmRSS  # 检查实际内存占用
    
  3. 端口冲突

    lsof -i :8080              # 查看占用端口的进程
    

总结

需求 命令
查看进程基本信息 ps aux / top
查看进程环境变量 cat /proc/<PID>/environ
查看打开的文件 lsof -p <PID>
监控资源占用 pidstat / htop
分析系统调用 strace -p <PID>
查看网络连接 ss -tulnp / netstat

通过组合这些命令,你可以全面掌握 Linux 进程的详细状态!