Я запускаю Ubuntu 16.04 на старом ноутбуке HP
Я установил на нем некоторое программное обеспечение, чтобы создать небольшой самодельный сервер plex.
Пару дней назад я решил установить rclone тоже, и я создал (благодаря GitHub проект) пару папок, которые необходимо установить при каждом запуске, запустив скрипт (я запускаю его через запись терминала sudo ~/bin/check.mount). Sonarr и Radarr настроены для загрузки материала через потоп в временную папку, а затем экспортируют его в одну из этих двух установленных папок.
Проблема заключается в том, что к моменту запуска вручную скрипта Sonarr / Radarr уже запущены и не могут найти свои корневые папки, поэтому они дают мне ошибку.
Что я хотел бы сделать, так это создать mountgdrive.service (услугу или что-то еще необходимо) автоматически запустите скрипт check.mount и, если этого недостаточно, вставьте задержку в sonarr.service и radarr.service! Это возможно?
Я написал это с помощью sudo nano /etc/systemd/system/mountgdrive.service
[Unit]
Description=MountSmokeScreen
After=network.target
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
и добавил к sonarr.service и radarr.service mountgdrive.service в бит After=, как это
[Unit]
Description=Sonarr
After=syslog.target network.target mountgdrive.service
[Service]
User=samsepioldoresh4ze
etcetc
....
Но это не работает! Sonarr и Radarr начинаются нормально, но диски не монтируются! Что я делаю неправильно?
Кроме того, rtcwake не работает на моем ноутбуке - я думаю, что это проблема ядра ?! Есть ли способ исправить это?
Причина, по которой у вас возникает эта проблема, заключается в том, что вы используете After=, пока вам также нужны Requires= или Wants=.
Существует 3 основных свойства для управления зависимостями. Я попытаюсь кратко объяснить разницу, но вы можете найти более подробную информацию в разделе [Unit] Section Options | freedesktop.org
After= Этот параметр задает только порядок единиц, это не гарантирует, что служба завершит запуск. Wants= Эта опция позволяет вашему устройству запускаться только после завершения запуска другого устройства. (Не имеет значения, началось ли это успешно или нет) Requires= Так же как Wants=, это приведет к тому, что ваше устройство начнется только после успешного запуска зависимостей.Вы также можете использовать [Unit] Параметры раздела | freedesktop.org для каждого из этих параметров.
After= Эта опция задает только порядок единиц, это не гарантирует, что служба завершит запуск. [ ! d4] Wants= обращается в WantedBy= Wants= Эта опция позволяет вашему устройству запускаться только после того, как другой агрегат завершил запуск. (Не важно, было ли это успешно или нет)Чтобы исправить вашу проблему, вам необходимо сменить службу монтирования на:
[Unit]
Description=MountSmokeScreen
After=network.target
Before=sonarr.service radarr.service
WantedBy=sonarr.service radarr.service
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Или вы можете добавьте Wants=mountgdrive.service в sonarr.service и radarr.service.
Вы можете сделать это, не изменяя файлы по умолчанию, запустив следующее (вам нужно сделать то же самое для radarr.service):
systemctl edit sonarr.service
И вставьте следующее:
[Unit]
Wants=mountgdrive.service
Примечание: вы можете заменить Wants= на Requires или WantedBy= на RequiredBy=, если вы не хотите, чтобы две службы для начала, если mountgdrive.service не удается (хотя Wants= обычно достаточно и даже рекомендуется в документах).
Причина, по которой у вас возникает эта проблема, заключается в том, что вы используете After=, пока вам также нужны Requires= или Wants=.
Существует 3 основных свойства для управления зависимостями. Я попытаюсь кратко объяснить разницу, но вы можете найти более подробную информацию в разделе [Unit] Section Options | freedesktop.org
After= Этот параметр задает только порядок единиц, это не гарантирует, что служба завершит запуск. Wants= Эта опция позволяет вашему устройству запускаться только после завершения запуска другого устройства. (Не имеет значения, началось ли это успешно или нет) Requires= Так же как Wants=, это приведет к тому, что ваше устройство начнется только после успешного запуска зависимостей.Вы также можете использовать [Unit] Параметры раздела | freedesktop.org для каждого из этих параметров.
After= Эта опция задает только порядок единиц, это не гарантирует, что служба завершит запуск. [ ! d4] Wants= обращается в WantedBy= Wants= Эта опция позволяет вашему устройству запускаться только после того, как другой агрегат завершил запуск. (Не важно, было ли это успешно или нет)Чтобы исправить вашу проблему, вам необходимо сменить службу монтирования на:
[Unit]
Description=MountSmokeScreen
After=network.target
Before=sonarr.service radarr.service
WantedBy=sonarr.service radarr.service
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Или вы можете добавьте Wants=mountgdrive.service в sonarr.service и radarr.service.
Вы можете сделать это, не изменяя файлы по умолчанию, запустив следующее (вам нужно сделать то же самое для radarr.service):
systemctl edit sonarr.service
И вставьте следующее:
[Unit]
Wants=mountgdrive.service
Примечание: вы можете заменить Wants= на Requires или WantedBy= на RequiredBy=, если вы не хотите, чтобы две службы для начала, если mountgdrive.service не удается (хотя Wants= обычно достаточно и даже рекомендуется в документах).