我正在编写一个应该在启动时执行的脚本,但问题是该脚本需要共享驱动器上的一些文件,这些文件是通过 fstab 自动安装的,并且在执行时驱动器尚未安装然而。
我尝试过使用 cron @reboot 和 init.d 路线,但它们都执行得太早。我也考虑过添加mount -a
到脚本中,但我宁愿避免sudo
这样做。现在我只是添加了一个延迟来使其工作,但这感觉有点老套。
有没有办法确保启动脚本在处理 fstab 后运行?或者强制处理安装座而不使用sudo
?
答案1
为此,您必须将脚本作为系统单元(假设你有 systemd),你可以在其中定义依赖关系......
如果你想坚持计划任务@reboot(这听起来是一个简单的选择)你必须让你的脚本更聪明一点(或者在 fs 安装后启动 cron...我不建议做什么改变)。您可以检查所需的文件系统是否已安装(在 bash 中),而不是简单的延迟:
while ! mount | awk '{print $3}' | grep -qx /the/mountpoint; do
sleep 1
done
或者您可以检查该文件是否存在您需要的:
while ! [ -f /that/file ] ; do
sleep 1
done
答案2
我假设您使用的是相对较新的 Linux 发行版,因此您可能需要检查systemd
手册,因为SysV
默认发行版安装中不再使用它,这很可能是您的问题。systemd
允许启动依赖项,您可以在其中指定哪些脚本先于其他脚本运行。
检查下一个关联