bash脚本创建虚拟文件系统并将其挂载到特定目录

问题描述

这是我的问题:我想使用此method创建目录并限制其大小。

问题是,当我通过 cli 尝试运行时,它运行良好(文件系统以其大小限制安装在新创建的目录中),但是当我将其放入bash脚本中时,该目录是创建的,但没有大小限制。

这是我的 script.sh

# !/bin/bash


# Set default parameters
limited_directory_name=$1
size=$2

# Setting path
parent_path="/path/to/directory/parent/"
directory_path="$parent_path$limited_directory_name"

# Creating directory/mountpoint
mkdir "$directory_path"

#Creating a file full of /dev/zero
limited_size_file="$directory_path.ext4"
touch "$limited_size_file"
dd if=/dev/zero of="$limited_size_file" bs="$size" count=1

#Formating the file
sudo mkfs.ext4 "$limited_size_file"

#Mount the disk
sudo mount -o loop,rw,usrquota,grpquota "$limited_size_file" "$directory_path"

我相信(实际上非​​常确定)问题出在最后两行

sudo mkfs.ext4 "$limited_size_file"

或/和

sudo mount -o loop,grpquota "$limited_size_file" "$directory_path"

因为我说过,文件和目录已创建,但没有大小限制。

另外,当我尝试通过 cli 执行这些命令后尝试删除目录($ directory_path /)时,我得到了rm: cannot delete '$directory_path/': Device or resource busy,即在执行脚本。因此,我猜测执行脚本时未挂载文件系统,问题可能出在最后两行。我不知道它是否与在脚本中使用 sudo 或在bash脚本中安装文件系统有关。

我只是想说我对bash脚本还很陌生,如果我的错误一个显而易见的(菜鸟)错误,我感到抱歉。您还可以说我是否可以以任何方式改善我的问题,如果还不清楚,我深表歉意。

最后一件事,我为最后两行尝试了不同的语法,例如:

sudo $(mkfs.ext4 "$limited_size_file")

sudo `mkfs.ext4 "$limited_size_file"`

或者只是

mkfs.ext4 "$limited_size_file",不带sudo。

但是似乎没有任何效果。我使用的是debian 10 btw,我在PHP页面调用了这样的脚本(如果有帮助的话):

exec("myscript.sh $dname $dsize");

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)