我想要创建一个简单的bash脚本,它可以将数据文件从源目录复制到tmpfs ramdrive。我需要这个脚本是有效的,所以它不是一个选项,试图复制和检查结果代码的复制命令(我假设复制命令将开始复制和失败时,只有在没有空格。当没有足够的空间时,我想避免开始复制)。这里是伪代码:
for filename in /data/*.dat; do
bname="$(basename $filename)"
ramname="/ramd/$bname"
if there is not enough space for $filename on ramdrive then
break
cp $filename $ramname
done你能不能建议换一张如果-断续表。
发布于 2017-03-29 09:36:06
您可以使用POSIX为df -报告空闲磁盘空间和du -估计文件空间的使用情况定义的选项来实现这一点,前者带有-P标志,用于报告系统上可用的可用空间,并使用awk解析出块大小,并在du中使用-k标志对文件执行同样的操作。
availMem=$(df -P "$ramname" | awk 'END{print $4}')
fileSize=$(du -k "$filename" | awk '{print $1}')
if (( fileSize > availMem )); then
break
fi(或)不带POSIX-ly整数比较的
if [ "$fileSize" -gt "$availMem" ]; then
break
fi您还可以在调试purose的printf之前添加一个break,
printf "Requesting %s for copy when there is only %s left\n" "$fileSize" "$availMem" https://stackoverflow.com/questions/43089136
复制相似问题