![在分区之间移动文件的守护进程?](https://linux22.com/image/828492/%E5%9C%A8%E5%88%86%E5%8C%BA%E4%B9%8B%E9%97%B4%E7%A7%BB%E5%8A%A8%E6%96%87%E4%BB%B6%E7%9A%84%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我有一个系统,Ubuntu 安装在 20GB 上,Windows 安装在 100GB 上,两个分区,每个分区 100GB,使用 NTFS。在使用 DC++(多次下载大文件)时,我经常收到系统内存不足的消息。
有没有办法制作一个守护进程来检查 Ubuntu 分区,以便如果其使用空间达到一定量(比如说 18 GB),它将自动开始将文件从该驱动器移动到另一个驱动器(我们假设它将从电影文件夹中选择文件或从该驱动器中选择最大的媒体文件进行移动)?
或者它提示用户询问移动哪个文件?
有没有什么程序可以帮我实现这个功能?如果没有,你能推荐一些可以帮我实现的阅读材料吗?
答案1
为什么不直接将 DC++ 默认保存到另一个驱动器,而是不断地移动文件?
与您要求的解决方案类似的解决方案:
#!/bin/bash
srcPart="sda9"
dstDir="/media/drive/dir"
moveLargestFile(){
largestFile="`ls -S -w1 "$1"/*.avi | head -n 1`"
mv "$largestFile" "$dstDir"
}
your-app &
appPid=$!
while [ "`ps -A | grep $appPid`" ]; do
usePercent=$(df -h | grep "$srcPart" | grep -o "[0-9]\{1,3\}%" | sed 's/%//')
if [ $usePercent -gt 95 ]; then
moveLargestFile "$HOME/Movies"
fi
sleep 60
done
此脚本将在后台启动您的应用程序(不要忘记指定它)并监视所选分区,srcPart
直到您退出应用程序。如果在执行期间文件系统使用率超过 95%,我们将选择 $HOME/Movies 文件夹中最大的 avi 文件并将其移动到指定位置。