Linux 内存管理

Swap swap可以避免应用程序因内存不足而崩溃,但它的性能远不及内存,适用于特殊场景(例如我的ecs只有2G内存😅)。实现方式可以基于交换文件,也可以基于磁盘分区,并且内核参数vm.swappiness可以定义swap与内存的使用占比,即优先使用内存还是swap。 创建一个交换文件作为Swap # 创建一个交换文件作为Swap dd if=/dev/zero of=/swapfile bs=1M count=4096 # 设置合适的权限 chmod 600 /swapfile # 将文件格式化为swap空间 mkswap /swapfile # 启用swap文件 swapon /swapfile # 持久化 echo '/swapfile none swap sw 0 0' >> /etc/fstab # 检查Swap是否已启用 free -h swapon --show 使用磁盘分区作为Swap 如果你想将整个磁盘分区作为swap,而不是使用交换文件,可以按照以下步骤进行: 创建swap分区(可以使用fdisk或parted工具): 使用fdisk创建一个新的Linux swap分区,通常选择类型为82(Linux swap)。 格式化该分区为swap格式: sudo mkswap /dev/sdXn # 替换 /dev/sdXn 为你刚刚创建的分区 启用swap分区: sudo swapon /dev/sdXn 确保分区在启动时自动启用: 修改/etc/fstab文件,添加如下内容: /dev/sdXn none swap sw 0 0 Swap相关内核参数 vm.swappiness是Linux内核中用来控制交换的行为的参数。它的值决定了内存满时交换的优先级。值的范围是0到100,0表示内存几乎用完之前不会交换,100表示内存稍微紧张时就会使用swap。 查看当前swappiness值: cat /proc/sys/vm/swappiness 临时调整swappiness: ...

2025年7月17日 · 1 分钟 · 阿征

Linux 一次性任务与周期性任务

在Linux系统中,一次性任务和周期性任务是两种常见的任务调度方式,分别通过不同的工具实现。以下是详细说明: 一次性任务 用于执行一次后立即结束的任务,常用工具为 at 和 batch。 at 命令 功能:在指定时间运行一次任务。 安装(部分系统需手动安装): sudo apt-get install at # Debian/Ubuntu sudo yum install at # CentOS/RHEL 常用操作: 添加任务: echo "command" | at 14:30 2023-12-31 # 指定具体时间 echo "command" | at now + 2 hours # 2小时后执行 查看任务队列: atq 删除任务(通过任务ID): atrm <任务ID> batch 命令 功能:在系统负载较低时执行一次性任务(基于at实现)。 示例: echo "command" | batch 周期性任务 用于定期重复执行的任务,主要通过 cron 实现。 Cron 系统 核心组件: cron 守护进程:后台服务,负责执行计划任务。 crontab 命令:用户管理自己的任务配置文件。 配置文件位置: 用户级:/var/spool/cron/<用户名>(通过 crontab -e 编辑)。 系统级:/etc/crontab 或 /etc/cron.d/(需root权限)。 Crontab 语法 基本格式: ...

2025年7月17日 · 1 分钟 · 阿征

Linux 常用命令大全

网络管理 fping 快速扫描在线/离线IP # 只显示在线的主机,-g后面跟要扫描的网段 fping -a -g 172.16.0.0/24 2>/dev/null # 只显示不在线的主机,-g后面跟要扫描的网段 fping -u -g 172.16.0.0/24 2>/dev/null ip ip -br a # 查看所有网卡的简略信息 mtr 路由追踪 nc 网络瑞士军刀 监听TCP端口: nc -knl 35793 # 监听在所有IP nc -knl 172.31.25.128 35793 # 监听在指定IP 其他 tmux 保持会话 1. 基本使用流程: # 启动新会话 tmux # 方法一 tmux new -s mysession # 方法二,mysession 是会话名字,可自由替换。 # 脱离会话(让任务继续在后台跑) Ctrl + b,然后松开,按 d # 恢复会话 tmux attach -t mysession # 查看所有会话 tmux ls # 关闭会话 直接在 tmux 中执行 exit,或者执行 tmux kill-session -t mysession 2. 窗口和分屏操作: ...

2025年7月14日 · 1 分钟 · 阿征

Linux 磁盘管理

逻辑卷 扩展磁盘空间 下面是通过逻辑卷(LVM)将新加的 100G 硬盘空间扩展到根目录 ( / ) 的步骤。 # 1. 确认新添加的磁盘 # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 98G 0 part └─ubuntu--vg-ubuntu--lv 253:0 0 98G 0 lvm / sdb 8:16 0 100G 0 disk # 新添加的磁盘 # 2. 将整个磁盘创建为物理卷 (PV) pvcreate /dev/sdb # 3. 查找当前根目录所在的卷组名称 # vgs VG #PV #LV #SN Attr VSize VFree ubuntu-vg 1 1 0 wz--n- <98.00g 0 # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert ubuntu-lv ubuntu-vg -wi-ao---- <98.00g # 4. 扩展卷组 vgextend ubuntu-vg /dev/sdb # 将新的物理卷 /dev/sdb 添加到卷组 ubuntu-vg # 5. 查看卷组总容量是否已经增加 # vgs VG #PV #LV #SN Attr VSize VFree ubuntu-vg 2 1 0 wz--n- 197.99g <100.00g # 6. 扩展逻辑卷 lvextend -l +100%FREE ubuntu-vg/ubuntu-lv # 将 ubuntu-vg 中所有可用的空间分配给 ubuntu-lv # 7. 确定要扩展路径所使用的文件系统类型 # df -Th / Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/ubuntu--vg-ubuntu--lv ext4 96G 86G 5.1G 95% / # 8. 扩展文件系统,如果是 ext4 文件系统 resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv # 9. 验证扩展结果 # df -h / Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu--vg-ubuntu--lv 195G 86G 100G 47% /

2025年7月14日 · 1 分钟 · 阿征

Linux 常见问题与解决方案

tab 键补全失效 # Debian/Ubuntu apt install bash-completion # RHEL/CentOS/Fedora <yum|dnf> install bash-completion 实现提示某个命令来自哪个包 # Debian/Ubuntu apt install command-not-found

2024年7月14日 · 1 分钟 · 阿征