如何解决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 举报,一经查实,本站将立刻删除。