我有一个运行“补丁”脚本的电路板。补丁脚本始终在后台运行,它是一个运行以下伪代码的 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 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)