小编Ere*_*ted的帖子

在运行时替换 shell 脚本

我有一个运行“补丁”脚本的电路板。补丁脚本始终在后台运行,它是一个运行以下伪代码的 shell 脚本:

while true; do
    # checks if a patch tar file exists and if yes then do patching
    sleep 10
done
Run Code Online (Sandbox Code Playgroud)

该脚本位于 /opt/patch.sh 并由 SystemV init 脚本启动。

问题在于,当脚本找到 tar 时,它会提取它,并且在里面有一个名为patch.sh的 shell 脚本,它特定于 tar 的内容。

/opt/patch.sh 中的脚本找到 tar 时,它会执行以下操作:

tar -xf /opt/update.tar -C /mnt/update
mv /mnt/update/patch.sh /opt/patch.sh
exec /opt/patch.sh
Run Code Online (Sandbox Code Playgroud)

它用另一个脚本替换自己并从同一位置执行它。这样做会出现任何问题吗?

linux shell bash buffer

5
推荐指数
1
解决办法
1989
查看次数

在 Linux 上挂载权限

我有一个关于在 Linux Fedora 中挂载的问题。我的主目录中有一个挂载点。挂载点位于 /home/user/project 并在 fstab 中添加了以下行:

/dev/mapper/fedora-proj /home/user/project ext4 defaults 1 2
Run Code Online (Sandbox Code Playgroud)

目录 /home/user/project 的文件权限为 0755 并且归用户所有。但是当我执行 'mount -a' 时,目录所有者更改为 root 并且权限为 777。我知道 ext2/3/4 没有 uid= 和 gid= 选项,但是为什么挂载点接收硬编码文件挂载期间的权限以及如何更改它?

聚苯乙烯

测试是在 Fedora 25 上进行的。当我在 Fedora 23 上执行完全相同的过程时,我看到了不同的行为:挂载目录权限更改为 755(挂载前为 0777)

fedora mount fstab

1
推荐指数
1
解决办法
745
查看次数

标签 统计

bash ×1

buffer ×1

fedora ×1

fstab ×1

linux ×1

mount ×1

shell ×1