Estoy trabajando en una systemd .servicesecuencia de comandos que se supone que comienza después de que se monte una ubicación de red CIFS /etc/fstaben /mnt/el arranque.
El script espera que se inicie primero un script de dependencia de OpenVPN, pero también quiero que espere a que se complete el montaje.
/etc/systemd/system/my-daemon.service :
[Unit]
Description=Launch My Daemon
After=network.target vpn-launch.service
Requires=vpn-launch.service
Traté de agregar systemd.mounta la línea: After=network.target vpn-launch.service systemd.mountpero no dio los resultados que esperaba.

systemd-remount-fsa tuAfterlista?Respuestas:
No, no es. Haga esto bien, y el resto se acomoda naturalmente.
El montaje es manejado por una unidad de montaje systemd (generada) que se llamará algo así
mnt-wibble.mount. Puede ver su nombre real en la salida delsystemctl list-units --type=mountcomando. Puede verlo en detalle como cualquier otra unidad consystemctl status.Muy simple, entonces: debe ordenar que su unidad se inicie después de que se inicie esa unidad de montaje.
Otras lecturas
fuente
Lo siento pero no puedo comentar todavía.
Como dijo JdeBP, debe ordenar en el montaje del sistema de archivos. Puede predecir el nombre de la unidad de montaje o, alternativamente, puede usar (en la sección de la unidad):
Esta opción crea las dependencias a las unidades * .mount apropiadas para hacer que la ruta sea accesible antes de iniciar el servicio. Puede que no esté en todas las versiones de systemd, pero lo he estado usando en una máquina CentOS 7 durante los últimos 6 meses más o menos.
fuente
RequiresMountsFor=Viene con su propio conjunto de advertencias. Con el error RedHat # 1088057 y Chris Siebenmann en la mano, debería poder responder a superuser.com/questions/988734 . También es una montura CIFS en esta pregunta. Pero la implicación es queauto, afortunadamente, lo es .Aunque ambas respuestas son correctas, quiero agregar mis dos centavos a la discusión, porque cuando la busqué me faltaban algunas instrucciones y ejemplos de cómo proceder.
/etc/fstabmount -aque monta todos los sistemas de archivos mencionados en fstabsystemctl list-units | grep '/path/to/mount' | awk '{ print $1 }'(debería devolver algo que termine con
.mount)After=declaración en el*.servicearchivoAquí hay un ejemplo de cómo iniciar el
my-daemonservicio en el arranque, pero una vez que la red está lista, se monta un recurso compartido CIFS/mnt/cifsyvpn-launchse inicia el servicio:/ etc / fstab
Nota: es posible que desee agregar
nofaila sus opciones de fstab (por ejemplo, cuando usa una unidad externa). De lo contrario, su máquina no arrancará si el dispositivo no está conectado. Ver el artículo fstab de ArchWiki/etc/systemd/system/my-daemon.service
No olvide habilitar el servicio de modo que se inicie en el arranque:
systemctl enable my-daemonTenga en cuenta que esto también funciona para otros sistemas de archivos (NFS, HDD, etc.).
Como ya se mencionó, ambas respuestas son correctas y animo a todos a leerlas, pero para mí un par de ejemplos me habrían ahorrado algo de tiempo.
Actualización (2019-06-25):
mnt-cifs.mounta laRequires=lista, lo que hace quemy-daemon.serviceno se inicie cuando el montaje cifs no se montó correctamentefuente
systemctl list-units --type=mount.@ bm-bergmotte: gracias por tu instrucción que me ayudó mucho. Para mí solo funciona, si pongo
Si no pongo "mnt-cifs.mount" dentro de "Requiere" (y en este orden) funciona para reiniciar / iniciar, pero el servicio se inicia de todos modos, si el dispositivo no está montado. Después de colocarlo adicionalmente dentro de "" Requiere ", el servicio monta el dispositivo antes de iniciarlo, si el dispositivo no estaba montado.
fuente
After=solo dicta la orden.Requires=hace obligatorio que el montaje cifs deba estar presente (vea la respuesta de Sufiyan Ghori en ese sentido). Actualizaré mi respuesta.