在 Ubuntu Linux 16.04.3 中,如何在 fstab 之后运行依赖于首先安装的另一个硬盘驱动器的脚本?
我试过了:
Geo*_*sen 11
我相信您需要systemd在 Ubuntu 16.04 上使用较新的服务,而不是/etc/init.d. 在这里,您将创建一个服务文件以在local-fs.target.
让我向您展示如何做到这一点的示例。
service在/etc/systemd/system目录中创建所需的文件
该文件将如下所示:
[Unit]
Description=Script to run after fstab
After=local-fs.target
[Service]
Type=simple
ExecStart=/bin/bash -c "/script/to/run.sh"
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)当然,您将通过以下方式设置服务:
sudo systemctl start <name_of_service>
sudo systemctl enable <name_of_service>
Run Code Online (Sandbox Code Playgroud)这将是如何完成的,请我自己没有测试过,这里是文档链接,可以进一步帮助您。请查看可用于服务文件中各个字段的其他选项。
https://access.redhat.com/articles/754933
https://www.freedesktop.org/software/systemd/man/bootup.html
https://www.freedesktop.org/software/systemd/man/systemd.html#
注意:noautofstab 挂载选项在这里很重要,请参阅
local-fs-pre.target
|
v
(various mounts and (various swap (various cryptsetup
fsck services...) devices...) devices...) (various low-level (various low-level
| | | services: udevd, API VFS mounts:
v v v tmpfiles, random mqueue, configfs,
local-fs.target swap.target cryptsetup.target seed, sysctl, ...) debugfs, ...)
| | | | |
\__________________|_________________ | ___________________|____________________/
\|/
v
sysinit.target
|
____________________________________/|\________________________________________
/ | | | \
| | | | |
v v | v v
(various (various | (various rescue.service
| | | v
v v v emergency.target
display- (various system (various system
manager.service services services)
| required for |
| graphical UIs) v
| | multi-user.target
| | |
\_________________ | _________________/
\|/
v
graphical.target
Run Code Online (Sandbox Code Playgroud)
看看上面你的目标图表会local-fs.target或sysinit.target不能完全确定,因为后者封面上的所有文件系统。因此,您可以决定脚本运行的阶段,以便为您提供所需的效果。
您还可以将特定挂载点设置为目标foobar.mount。使用 找到您的完整列表systemctl list-units --type=mount。