В Ubuntu Linux 16.04.3, как мне запустить сценарий, в зависимости от того, какой другой жесткий диск монтируется первым, после fstab?
Я попытался:
Создание службы скрипт в /etc/init.d, но скрипт выполняется перед fstab. Добавление в /etc/rc.local, но та же проблема.Я считаю, что вам нужно будет использовать более новую услугу systemd на Ubuntu 16.04, а не на /etc/init.d. Здесь вы создадите служебный файл для запуска вашего скрипта после local-fs.target.
позвольте представить вам пример того, как это будет сделано.
Создайте необходимый файл service в каталоге /etc/systemd/system. Файл будет выглядеть следующим образом:[Install]
Description=Script to run after fstab
After=local-fs.target
[Service]
Type=simple
ExecStart=/bin/bash -c "/script/to/run.sh"
[Install]
WantedBy=multiuser.target
И, конечно же, вы настроите службу с помощью: sudo systemctl start <name_of_service>
sudo systemctl enable <name_of_service>
. Как это можно сделать, пожалуйста, я сам не тестировал его, и вот ссылка на документацию, чтобы помочь вам , Посмотрите другие параметры, доступные для различных полей в файле службы.
https://access.redhat.com/articles/754933
https: // access .redhat.com / articles / 754933
https://www.freedesktop.org/software/systemd/man/systemd.html#
Обратите внимание: что noauto параметр fstab mount здесь https://www.freedesktop.org/software/systemd/man/systemd.html#
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
Глядя на диаграмму выше ваши цели будут local-fs.target или sysinit.target не совсем уверенными, поскольку последний охватывает все файловые системы. Таким образом, вы решаете фазу, когда ваш скрипт будет работать, чтобы дать вам желаемый эффект.
Я считаю, что вам нужно будет использовать более новую услугу 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=multiuser.target
И, конечно же, вы настроите службу с помощью: sudo systemctl start <name_of_service>
sudo systemctl enable <name_of_service>
. Как это можно сделать, пожалуйста, я сам не тестировал его, и вот ссылка на документацию, чтобы помочь вам , Посмотрите другие параметры, доступные для различных полей в файле службы.
https://access.redhat.com/articles/754933
https: // access .redhat.com / articles / 754933
https://www.freedesktop.org/software/systemd/man/systemd.html#
Обратите внимание: что noauto параметр fstab mount здесь https://www.freedesktop.org/software/systemd/man/systemd.html#
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
Глядя на диаграмму выше ваши цели будут local-fs.target или sysinit.target не совсем уверенными, поскольку последний охватывает все файловые системы. Таким образом, вы решаете фазу, когда ваш скрипт будет работать, чтобы дать вам желаемый эффект.
Я считаю, что вам нужно будет использовать более новую услугу 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=multiuser.target
И, конечно же, вы настроите службу с помощью: sudo systemctl start <name_of_service>
sudo systemctl enable <name_of_service>
. Как это можно сделать, пожалуйста, я сам не тестировал его, и вот ссылка на документацию, чтобы помочь вам , Посмотрите другие параметры, доступные для различных полей в файле службы.
https://access.redhat.com/articles/754933
https: // access .redhat.com / articles / 754933
https://www.freedesktop.org/software/systemd/man/systemd.html#
Обратите внимание: что noauto параметр fstab mount здесь https://www.freedesktop.org/software/systemd/man/systemd.html#
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
Глядя на диаграмму выше ваши цели будут local-fs.target или sysinit.target не совсем уверенными, поскольку последний охватывает все файловые системы. Таким образом, вы решаете фазу, когда ваш скрипт будет работать, чтобы дать вам желаемый эффект.