linux磁盘已满如何删除文件,linux-Shell脚本在磁盘已满时删除文件

该博客介绍了如何编写一个bash脚本来监控Linux系统的磁盘空间。当/dev/sda5分区的使用率超过95%时,脚本会删除/home/user/lotsa_cache_files/目录下的文件。为了安全起见,脚本使用find命令配合xargs来逐个删除文件,避免一次性删除大量文件导致的问题。此外,脚本还包括了错误处理和条件检查,以防止在错误的目录下执行删除操作。
摘要由CSDN通过智能技术生成

如果缓存目录太大,我每天都会通过CRON编写一个小的脚本来清除Linux上的空间.

由于我对bash脚本非常了解,因此我将需要您的linux专家的帮助.

这基本上是逻辑(伪代码)

if ( Drive Space Left < 5GB )

{

change directory to '/home/user/lotsa_cache_files/'

if ( current working directory = '/home/user/lotsa_cache_files/')

{

delete files in /home/user/lotsa_cache_files/

}

}

剩余驱动器空间

我计划从“ / dev / sda5”命令获取驱动器空间.

如果返回以下值给我作为您的信息:

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda5 225981844 202987200 11330252 95% /

因此,可能需要一些正则表达式才能使’11330252’脱离返回值

有点偏执

“ if(当前工作目录= / home / user / lotsa_cache_files /)”部分只是我内心偏执的一种防御机制.我要确保在执行删除命令之前确实确实在’/ home / user / lotsa_cache_files /’中,如果由于某种原因当前的工作目录不存在,则可能具有破坏性.

删除文件

删除文件将通过以下命令完成,而不是通常的rm -f:

find . -name "*" -print | xargs rm

如前所述,这是由于linux系统固有的无法在包含太多文件的目录中“ rm”存储的.

解决方法:

只是另一个建议(代码中的注释):

FILESYSTEM=/dev/sda1 # or whatever filesystem to monitor

CAPACITY=95 # delete if FS is over 95% of usage

CACHEDIR=/home/user/lotsa_cache_files/

# Proceed if filesystem capacity is over than the value of CAPACITY (using df POSIX syntax)

# using [ instead of [[ for better error handling.

if [ $(df -P $FILESYSTEM | awk '{ gsub("%",""); capacity = $5 }; END { print capacity }') -gt $CAPACITY ]

then

# lets do some secure removal (if $CACHEDIR is empty or is not a directory find will exit

# with error which is quite safe for missruns.):

find "$CACHEDIR" --maxdepth 1 --type f -exec rm -f {} \;

# remove "maxdepth and type" if you want to do a recursive removal of files and dirs

find "$CACHEDIR" -exec rm -f {} \;

fi

从crontab调用脚本以执行计划的清理

标签:bash,linux,shell

来源: https://codeday.me/bug/20191010/1887166.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值