J'utilise Ubuntu 16.04 sur un ancien ordinateur portable HP
J'ai installé des logiciels dessus pour créer un petit serveur plex maison. J'ai installé sonarr, radarr, déluge, jackett, etc etc et ils se lancent tous automatiquement au démarrage!
Il y a quelques jours, j'ai décidé d'installer rclone également et j'ai créé (grâce à un projet GitHub) quelques dossiers qui doivent être montés à chaque démarrage en lançant un script (je le lance via l'écriture du terminal sudo ~/bin/check.mount
). Sonarr et Radarr sont configurés pour télécharger des trucs via déluge dans un dossier temporaire, puis les exporter vers l'un de ces deux dossiers montés.
Le problème est qu'au moment où je lance manuellement le script, Sonarr / Radarr est déjà opérationnel et ne trouve pas leurs dossiers racine, ils me donnent donc une erreur.
Ce que j'aimerais faire, c'est créer un mountgdrive.service (service, ou tout ce qui est nécessaire) pour lancer automatiquement le script check.mount et, si cela ne suffit pas, insérer un délai dans sonarr.service et radarr.service! Est-ce possible?
J'ai écrit avec 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
et ajouté à sonarr.service et radarr.service mountgdrive.service
dans le After=
bit, comme ceci
[Unit]
Description=Sonarr
After=syslog.target network.target mountgdrive.service
[Service]
User=samsepioldoresh4ze
etcetc
....
Mais ça ne marche pas! Sonarr et Radarr démarrent normalement, mais les disques ne sont pas montés! Qu'est-ce que je fais mal?
De plus, rtcwake ne fonctionne pas sur mon ordinateur portable - je pense que c'est un problème de noyau?! Y a-t-il moyen d'arranger ça?
sonarr.service
etradarr.service
être exécuté après qu'ilmountgdrive.service
soit opérationnel?mountgdrive.service
court mais ne fait rien (il ne monte pas les lecteurs), puissonarr.service
etradarr.service
exécuter normalement parce que ubuntu exécutésmountgdrive.service
.mount
unités . Si tout ce que vousmountgdrive.service
faites est de monter un répertoire ou similaire, vous pourrez peut-être le changer en.mount
service. Comme il le rend plus fiable, d'autant plus que vous en avez des dépendances.Réponses:
La raison pour laquelle vous rencontrez ce problème est que vous utilisez
After=
alors que vous avez également besoin deRequires=
ouWants=
.Il existe 3 propriétés principales pour gérer les dépendances. Je vais essayer d'expliquer brièvement la différence, mais vous pouvez trouver plus de détails dans la section [Unité] Options | freedesktop.org
After=
Cette option ne définit que l'ordre des unités, elle ne garantit pas que le service a fini de démarrer.
Wants=
Cette option permet à votre unité de démarrer uniquement après le démarrage d'une autre unité. (Peu importe si cela a réussi ou non)
Requires=
Tout comme
Wants=
, cependant, cela ne fera démarrer votre unité qu'après le démarrage réussi des dépendances.Vous pouvez également utiliser l'inverse de chacune de ces options.
After=
est inversé parBefore=
Wants=
est inversé parWantedBy=
Requires=
est inversé parRequiredBy=
Pour résoudre votre problème, vous devez changer votre service de montage pour:
Ou vous pouvez ajouter
Wants=mountgdrive.service
aux unitéssonarr.service
etradarr.service
.Vous pouvez le faire sans modifier les fichiers par défaut en exécutant ce qui suit (vous devez faire de même pour
radarr.service
):Et insérez ce qui suit:
Remarque: Vous pouvez remplacer
Wants=
parRequires
ouWantedBy=
parRequiredBy=
si vous ne voulez pas que les deux services démarrent du tout en cas d'mountgdrive.service
échec (bien que celaWants=
soit généralement suffisant et même recommandé dans les documents).EDIT: Les options
WantedBy
etRequiredBy
ne peuvent être utilisées que dans la[Install]
section. (Merci @Yankee )la source
Wants=
etWantedBy=
je les utiliserai certainement !! J'obtiensCan't open /.config/SmokeScreen/smokescreen.conf
. Vous avez peut-être "~ / .config / ..." dans le script yoru. Vous devez remplacer le tilde (~
) par le chemin complet, c'est-à-dire/home/you_user_name/.config/....
(ou utiliser des chemins relatifs à votre script)$HOME
n'est pas disponible au démarrage, car il n'y a pas encore d'utilisateur connecté.WantedBy=
être dans la[Unit]
section? Je pensais que ça ne pouvait qu'entrer[Install]
.