如何自动删除编译代码时产生的多余文件(swap.in.out.exe)

本文介绍了一个简单的程序,用于自动删除指定文件夹中除CPP文件以外的所有文件,包括编译产生的临时文件,旨在保持代码文件夹的整洁。

本人之前有把自己代码保存在某文件夹内的习惯,但是过了不久之后发现了一个问题,在编译文件的时候由于要文件输入输出,经常会有.in,.out文件的产生,以及还有exe文件,占了不少的内存,这么一来这个文件夹里面也不是很美观,以后要搜索这个文件夹内的代码也不是很方便,于是花了一点时间,研究了一下自动删除该文件夹内文件格式不是cpp的文件的程序。

#include<iostream>
#include<fstream>
#include<string>
#include<cstdio>
using namespace std;
int main(){
    fstream file_list("name.txt", std::ios::out);
    file_list.close();
    system("dir /a /b >> name.txt");
    file_list.open("name.txt", std::ios::in);
    string filename;
    string extension;
    while(!file_list.eof()){
        getline(file_list, filename);
        if(filename=="work.exe")continue;
        int location=filename.find(".",0);
        if(location != string::npos){
            extension = filename.substr(location);
            if(extension.compare(".cpp")){//如果不是cpp文件,就删掉
                const char *savePath=filename.data();
                remove(savePath);
            }
        }
    }
    file_list.close();
    remove("name.txt");
    system("PAUSE");
}

使用的时候只需要将这个代码保存在该文件夹内,名字叫做work.cpp,然后编译一遍,每次使用的时候只需要点一下work.exe就可以了(设置了不会删除work.exe)。

<think>我们正在讨论的是Linux系统中的swap.img文件(交换分区文件)。根据用户的问题,我们需要解释: 1. swap.img文件的作用 2. 为什么它占用较大的空间 3. 是否可以安全删除 参考引用内容: 引用[1]:说明了如何查看swap状态,以及如何设置开机加载swap分区和清理swap分区。 引用[2]:明确指出swap.img是交换分区文件,用于辅助内存管理,在内存不足存储不常用数据,一般不建议删除。 引用[3]:提到了在Ubuntu系统中取消使用并删除swap.disk(类似于swap.img)的步骤。 结合这些信息,我们进行回答。 注意:在回答中,我们将使用正确的LaTeX格式(行内公式用$...$,独立公式用$$...$$),并确保引用标识正确。 另外,用户之前的问题是关于SSH密钥生成,但当前问题转向了swap.img,因此我们专注于当前问题。 回答结构: 1. swap.img的作用 2. 为什么占用大空间 3. 是否可以删除以及如何操作 4. 注意事项 5. 生成相关问题</think>### swap.img文件详解 #### 1. **作用与原理** swap.img是Linux系统的**虚拟内存交换文件**,作用类似于物理内存的扩展: - 当物理内存不足,系统将不活跃的内存页转移到该文件(称为"换出")[^2] - 需要再从文件读回内存(称为"换入") - 避免因内存耗尽导致系统崩溃或进程强制终止 - 计算公式:可用内存总量 = 物理内存 + swap空间 #### 2. **占用空间原因** - **默认配置策略**:多数Linux发行版(如Ubuntu/CentOS)安装自动创建swap文件 - **安全比例**:通常设置为物理内存的1~2倍(例如4GB内存对应4~8GB swap) - **动态增长**:部分系统采用动态swap文件,初始较小但随使用增加 - **内存保护**:大容量swap可防止内存密集型应用(如数据库、编译任务)导致OOM(内存溢出)[^2] #### 3. **能否安全删除?** **分情况讨论:** | 场景 | 是否可删除 | 操作步骤 | 风险提示 | |--------------------------|------------|--------------------------------------------------------------------------|-------------------------------------------| | **物理内存充足**(如≥16GB) | ✅ 可删除 | ① `sudo swapoff /var/swap.img`<br>② 删除`/etc/fstab`中相关行[^1]<br>③ `sudo rm /var/swap.img` | 需确保无内存密集型任务运行 | | **物理内存≤8GB** | ⛔ 不建议 | 如需调整:<br>`sudo dd if=/dev/zero of=/newswap bs=1M count=4096`<br>`sudo mkswap /newswap` | 删除后可能引发系统卡顿或崩溃[^2] | | **服务器/生产环境** | ❌ 禁止删除 | 建议保留并监控:<br>`watch -n 1 'free -h; grep -i swap /proc/meminfo'` | 保障系统稳定性,避免突发内存需求 | #### 4. **优化建议** - **SSD用户**:可缩减swap大小(如物理内存的0.5倍),因SSD读写快于HDD - **内存>32GB**:可完全禁用swap,但需设置`vm.swappiness=0`: ```bash sudo sysctl vm.swappiness=0 # 临生效 echo "vm.swappiness=0" | sudo tee -a /etc/sysctl.conf # 永久生效 ``` - **替代方案**:使用**zRAM**(内存压缩技术),减少磁盘I/O: ```bash sudo apt install zram-config # Ubuntu/Debian sudo systemctl enable zram-config ``` > ⚠️ **关键警告**: > - 删除swap前**必须**执行`swapoff`,否则导致文件锁定引发系统故障[^1][^3] > - 删除后若出现内存不足,可通过`fallocate -l 2G /swapfile && mkswap /swapfile && swapon /swapfile`快速重建 --- ### 相关问题 1. 如何监控swap使用情况?有哪些性能指标需要关注? 2. 服务器环境如何优化swap性能?zRAM与传统swap的优劣对比? 3. 物理内存充足系统仍频繁使用swap的可能原因及解决方法? 4. 如何在Kubernetes集群中配置swap支持?有哪些安全限制? [引用说明] 本文关于swap.img的作用和操作步骤参考了Linux内存管理文档[^1][^2],优化建议结合了生产环境实践[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值