问题
无论是我们的开发机器,还是打包机MacMini,经常因为缓存文件或打包文件过多导致硬盘不足。
所以我们需要定期清理垃圾文件。
解决方案
需要删除Xcode编译器产生的索引文件及中间产物目录DriverData。
需要删除Xcode打包完成的Archive文件目录。
需要删除每次连接真机后自动下载的调试包(类似Android的adb文件)DeviceSupport。
需要删除不必要的模拟器(每次增量升级xcode,原有的模拟器数据会保留,持久占用硬盘)。
常用来查询硬盘大小及使用率的Linux命令。
一般直接用 df
df
df命令可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息,它也可以显示所有文件系统对i节点和磁盘块的使用情况。
df命令各个选项的含义如下:
-a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k:以k字节为单位显示。
-i:显示i节点信息,而不是磁盘块。
-t:显示各指定类型的文件系统的磁盘空间使用情况。
-x:列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。
-T:显示文件系统类型。
du
du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况,统计目录(或文件)所占磁盘空间的大小。该命令的功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出指定目录,则对当前目录进行统计。
df命令的各个选项含义如下:
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-b:以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)。
-k:以1024字节为单位列出磁盘空间使用情况。
-c:最后再加上一个总计(系统默认设置)。
-l:计算所有的文件大小,对硬链接文件,则计算多次。
-x:跳过在不同文件系统上的目录不予统计。
fdisk
fdisk可以划分磁盘分区。下面给出使用Fdisk命令进行磁盘分区的操作步骤:
#fdisk /dev/had //使用/dev/had作为默认的分区设备
Command (m for help): m //选择命令选项
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
用户通过提示键入“m”,可以显示Fdisk命令各个参数的说明。
相关的文章
Jenkins上使用的脚本备份
#!/bin/sh
# 先查询一下当前硬盘空间
echo "🌞 0、开始清理前硬盘空间"
df -lh
echo "------------1、准备删除 ~/Library/Developer/Xcode/DerivedData"
for file in ~/Library/Developer/Xcode/DerivedData/*;do
# 确定是目录
if test -d $file;then
echo "删除--->"$file
rm -rf $file
fi
done
echo "------------2、准备删除 /Users/lebbay/DerivedData"
for file in /Users/lebbay/DerivedData/*;do
# 确定是目录
if test -d $file;then
echo "删除--->"$file
rm -rf $file
fi
done
echo "------------3、准备删除 ~/Library/Developer/Xcode/Archives"
for file in ~/Library/Developer/Xcode/Archives/*;do
# 确定是目录
if test -d $file;then
# 不是今天的都删掉
today=$(date "+%Y-%m-%d")
if [[ ! $file =~ $today ]];then
echo "删除--->"$file
rm -rf $file
fi
fi
done
echo "------------4、准备删除 /Users/lebbay/Archives"
for file in /Users/lebbay/Archives/*;do
# 确定是目录
if test -d $file;then
# 不是今天的都删掉
today=$(date "+%Y-%m-%d")
if [[ ! $file =~ $today ]];then
echo "删除--->"$file
rm -rf $file
fi
fi
done
echo "------------5、准备删除 ~/Library/Developer/CoreSimulator/Devices,仅保留 SE 机型"
for file in ~/Library/Developer/CoreSimulator/Devices/*;do
# 确定是目录
if test -d $file;then
device_plist="${file}/device.plist"
device_plist_text=`cat $device_plist`
se_line="<string>com.apple.CoreSimulator.SimDeviceType.iPhone-SE"
if [[ ! $device_plist_text =~ $se_line ]]; then
echo "删除--->"$file
rm -rf $file
else
echo "保留--->"$file
fi
fi
done
echo "------------6、准备删除 ~/Library/Developer/Xcode/iOS\ DeviceSupport,保留自动化测试常用系统"
for file in ~/Library/Developer/Xcode/iOS\ DeviceSupport/*;do
# 手机系统升级之后就不好使喽。。。
# iPhone 8 序列号:F4GX3EK1JC6F
iphone_13_3_1="/13.3.1"
# iPhone X 序列号:G0NVPS22JCLF
iphone_14_0_1="/14.0.1"
if [[ $file =~ $iphone_13_3_1 ]]; then
echo "保留--->"$file
elif [[ $file =~ $iphone_14_0_1 ]]; then
echo "保留--->"$file
else
echo "删除--->"$file
rm -rf $file
fi
done
# 最后查询一下当前硬盘空间
echo "🌛 0、开始清理前硬盘空间"
df -lh
网友评论