Ubuntu系统自动清理系统内存脚本和使用方法

教程描述如何编写脚本监控Ubuntu内存并根据需求清理,通过Cron定时执行。

在使用Ubuntu系统时会出现内存占用太多,系统卡顿现象,有一种shell脚本可以自动清理系统内存,使用方法如下:

1. 新建脚本文件

 如 /home/hulk/tools/SysTools/memory-monitor.sh

#!/bin/bash

# while [[ true ]]; do
	COMPILE_TIME=`date +"%Y%m%d_%H%M"`
	echo "$COMPILE_TIME"
	echo "$COMPILE_TIME">>/tmp/memory_sunquanyu
	#获取空闲内存,单位MB
	memfree=$(free -m | awk '{print $4}' | sed -n 2p)
	echo "$memfree">>/tmp/memory_sunquanyu
	#内存剩余告警阀值,根据实际情况配置
	max=4096
	# 如果未分配内存值小于等于 max

	if [[ ${memfree} -le ${max} ]]; then
		echo "ttttttt">>/tmp/memory_sunquanyu
	    stress -t 5 --vm 10 --vm-bytes 1024M;
		sleep 1
		# sync;
	else
	 	echo "$COMPILE_TIME"" enough memory to use.">/tmp/memory_sunquanyu
	fi
# 	sleep 300;
# done

脚本中用到了 stress 工具命令,如果没有安装,请执行如下命令安装:

sudo apt install stress

2. 设置自动运行

间隔多久执行编辑脚本

执行如下命令, -e是编辑的意思

sudo crontab -e

第一次执行会弹出编辑工具选择,一般选择2 (VIM编辑工具),回车,在最下面增加一行:

<think> 我们被要求使用Python脚本Ubuntu系统自动化修改文件内容。根据用户提供的引用,虽然引用中没有直接给出修改文件内容的方法,但我们可以结合Python的文件操作来实现。 具体步骤: 1. 打开文件:使用Python内置的open函数,可以指定文件路径打开模式(如读取模式'r',写入模式'w'等)。 2. 读取文件内容:使用read()方法读取整个文件,或者使用readlines()按行读取。 3. 修改内容:对读取的内容进行修改,例如替换字符串、添加或删除部分内容。 4. 写回文件:将修改后的内容写回原文件。注意,如果使用写入模式打开,会覆盖原文件内容,因此要确保在修改完成后再写入。 注意:在修改文件时,需要确保脚本有足够的权限(用户引用的[4]提到了权限问题)。如果文件权限不足,可能需要先修改文件权限(使用os.chmod)或者使用sudo运行脚本。 另外,如果文件较大,可能需要逐行处理以避免内存问题。 示例代码: 假设我们要将文件中的字符串"old_text"替换为"new_text"。 方法一:一次性读取并修改(适用于小文件) ```python # 打开文件进行读取 with open('file.txt', 'r') as file: data = file.read() # 替换内容 data = data.replace('old_text', 'new_text') # 重新打开文件进行写入(注意:这里使用写入模式,会覆盖原文件) with open('file.txt', 'w') as file: file.write(data) ``` 方法二:逐行处理(适用于大文件,但需要注意如果替换的字符串跨行则此方法不适用) ```python # 创建一个临时文件来存储修改后的内容,然后替换原文件 import os temp_filename = 'temp_file.txt' with open('file.txt', 'r') as input_file, open(temp_filename, 'w') as output_file: for line in input_file: # 对每一行进行替换 new_line = line.replace('old_text', 'new_text') output_file.write(new_line) # 删除原文件并将临时文件重命名 os.remove('file.txt') os.rename(temp_filename, 'file.txt') ``` 关于权限:如果文件是只读的,那么需要先修改权限(使用os.chmod)或者以root权限运行脚本。 例如,使用os.chmod添加写权限: ```python import os os.chmod('file.txt', 0o777) # 设置为可读可写可执行,但注意这可能会带来安全风险,实际使用中应根据需要设置权限 ``` 但是,修改权限需要当前用户有权限修改该文件(比如是文件的所有者或者有sudo权限)。如果没有,则需要使用sudo运行脚本。 另外,用户引用的[1][2][3]提到的是修改默认Python版本的方法,与当前问题关系不大。而引用[4]提到了数据库操作,但用户的问题是关于修改文件内容的,所以我们可以忽略引用中不相关的部分。 因此,总结回答如下: </think> 在 Ubuntu 系统使用 Python 脚本自动化修改文件内容,可以通过以下步骤实现: ### 方法步骤 1. **读取文件内容** 使用 `open()` 函数打开文件并读取内容: ```python with open('目标文件.txt', 'r') as file: content = file.read() ``` 2. **修改内容** 通过字符串操作(如替换、正则表达式)修改内容: ```python new_content = content.replace("旧文本", "新文本") # 或使用正则表达式 import re new_content = re.sub(r"正则表达式", "替换文本", content) ``` 3. **写回文件** 将修改后的内容覆盖写入原文件(需写入权限): ```python with open('目标文件.txt', 'w') as file: file.write(new_content) ``` 4. **权限处理**(如遇权限问题) - 为文件添加写权限(在终端执行): ```bash chmod +w 目标文件.txt ``` - 或在脚本中提权(谨慎使用): ```python import os os.system('sudo chmod +w 目标文件.txt') # 需要输入密码 ``` ### 完整示例脚本 ```python #!/usr/bin/env python3 # 指定Python3环境[^2] # -*- coding: utf-8 -*- def modify_file(file_path, old_str, new_str): try: # 读取文件 with open(file_path, 'r') as file: content = file.read() # 修改内容(简单替换) modified_content = content.replace(old_str, new_str) # 写回文件 with open(file_path, 'w') as file: file.write(modified_content) print(f"文件 {file_path} 修改成功!") except PermissionError: print("错误:无写入权限,请检查文件权限或使用sudo") except FileNotFoundError: print("错误:文件不存在") # 使用示例 modify_file("config.txt", "version=1.0", "version=2.0") ``` ### 关键注意事项 1. **权限问题** - 若文件为系统文件,需用 `sudo` 执行脚本(例如 `sudo python3 script.py`) - 或在脚本中调用 `os.chmod()` 修改权限[^4] 2. **备份机制**(推荐) 修改前创建备份文件: ```python import shutil shutil.copy2("config.txt", "config.txt.bak") # 保留元数据 ``` 3. **路径处理** 建议使用绝对路径(如 `/etc/app/config.conf`),避免相对路径错误 4. **安全验证** 重要文件修改前添加内容校验逻辑,例如: ```python if "关键标识" not in content: raise ValueError("文件格式异常,终止修改") ``` ### 常见应用场景 - 批量更新配置文件参数 - 自动化日志文件清理(替换敏感信息) - 部署脚本中的环境变量修改 - 版本号批量升级(如 `version=1.0 → version=2.0`) > 提示:对于系统级文件(如 `/etc/` 目录下),建议先在测试环境验证脚本逻辑,避免因误操作导致系统异常[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值