这个脚本主要用来检测盒子(seedbox)或者 linux 服务器的剩余空间。当已使用空间大于等于指定值时,会禁止指定目录的写入权限,并发送告警邮件。删掉种子或删除文件后,已使用空间小于指定值时,相关目录会自动恢复写入权限。
说明
- limit 硬盘空间的使用百分比。92 指硬盘使用空间大于等于 92% 时,指定目录会被禁止写入,并发送告警邮件。
- dir 被禁止写入的目录,需要修改成自己盒子的下载目录。
- v_mail 收告警邮件的邮箱,需要修改成自己的邮箱。
- log 日志的存放位置。
- sleep 脚本循环执行的时间,30 指每过 30s 执行一次。
需要在盒子上提前搭建好邮件发送服务器,脚本才能自动发邮件。相关教程:Linux 搭建 SMTP 发送邮件服务器
当使用空间超过限制的空间使用百分比后,只会使盒子无法添加新种子,正在下载的种子还是会继续下载。如果想让正在下载的种子也停止下载,需要修改脚本中 chmod 555 $dir
和 chmod 775 $dir
,分别改成 chmod -R 555 $dir
和 chmod -R 775 $dir
。
盒子发出的邮件一般会被 QQ 邮箱、163 邮箱等扔到垃圾箱,所以要把盒子的邮件地址添加到收件邮箱的白名单。
使用
运行脚本
在 root 用户环境下,使用命令 nohup
命令运行脚本。
nohup /home/bfdz/rtorrent/check_size.sh &
结束脚本
使用命令 ps aux | grep check
找出进程,然后 kill
进程 ID。
源码
Gist: check_size.sh
#!/bin/bash
limit=92
dir=/home/bfdz/rtorrent/downloads/
v_mail=123@qq.com
log=/var/log/check_size.log
flag=0
while [ 1 ]
do
v_size=$(df / | grep / | awk '{print $5}' | cut -d '%' -f 1)
if [ $v_size -ge $limit ] && [ $flag -ne 1 ]; then
chmod 555 $dir
echo Lock_the_directory:$dir >> $log && date >> $log
echo "盒子的使用空间超过 $limit%,目录 $dir 已禁止写入." | mail -s "=?UTF-8?B?`echo 盒子剩余空间不足 | base64`?=" $v_mail
flag=1
fi
if [ $v_size -lt $limit ] && [ $flag -ne 0 ]; then
chmod 775 $dir
flag=0
fi
sleep 30
done