bash - 如果已经存在,则 Bash 脚本分区跳过
问题描述
我正在尝试使用以下脚本创建分区。它可以工作,但有时我需要重新运行相同的脚本,因为在我遇到错误(就像已经在使用中)时出现了一些自动化的东西。
parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
mkfs.xfs /dev/sdc1
mkdir -p /opt/app
lsblk
echo "/dev/sdc1 /opt/app xfs defaults 0 1" >>/etc/fstab
mount -a
df -Th
当我再次执行相同的脚本时出现错误日志。
+ parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
Error: Partition(s) on /dev/sdc are being used.
+ mkfs.xfs /dev/sdc1
mkfs.xfs: /dev/sdc1 contains a mounted filesystem
/dev/sdc
如果文件系统已经挂载,我该如何跳过?
解决方案
您可以检查挂载是否已经存在,如果找到则跳过脚本;
if grep -qs '/dev/sdc' /proc/mounts; then
echo "Skipping mount since /dev/sdc already exists"
else
parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
mkfs.xfs /dev/sdc1
mkdir -p /opt/app
lsblk
echo "/dev/sdc1 /opt/app xfs defaults 0 1" >>/etc/fstab
mount -a
df -Th
fi
推荐阅读
- python - 我们可以将我们的 Flask 应用程序直接连接到 Nginx 服务器吗?
- java - 从pdf文件中提取具有文本的文本和图像
- vue.js - 未配置 Visual Studio Code 自动格式化程序
- javascript - 使用 webdriver.io 模块获取当前 URL
- amazon-web-services - DynamoDB - 创建表 - IAM 策略 - 未授权错误
- java - HttpsURLConnection 提供连接超时,但使用 JS XMLHttpRequest()
- naming-conventions - 验证用户或验证电话号码?哪个更有意义、更好和更标准?为什么?
- java - 处理按钮区域中手指的进出
- blob - 如何使用 azure 函数中的元数据将 blob 文档从一个容器移动到另一个容器?
- antd - 在同一个项目中使用 antd(React) 和 antd-mobile(React)