Acabo de actualizar desde el servidor Ubuntu 14 a la versión 15. Tuve problemas para que mi script de arranque funcionara después de la actualización, y leí que systemd es el nuevo valor predeterminado. Estoy lejos de ser un experto en Linux, así que por favor, sé fácil conmigo :-)
Aquí está lo que era mi script inicial:
description "NZBGet upstart script"
setuid robert
setgid robert
start on runlevel [2345]
stop on runlevel [016]
respawn
expect fork
script
exec nzbget -D
end script
pre-stop script
exec nzbget -Q
end script
Basado en el inicio de la página wiki de systemd , utilicé las tablas proporcionadas allí para mapear las cosas lo más cerca que pude en mi nuevo archivo de servicio systemd:
[Unit]
Description=NZBGet Service
[Service]
Type=forking
ExecStart=/usr/local/bin/nzbget -D
ExecStop=/usr/local/bin/nzbget -Q
Restart=on-failure
Este archivo está ubicado en /home/robert/.config/systemd/user/nzbget.service. Para iniciar el servicio manualmente, he estado haciendo:
$ systemctl --user start nzbget
Esto funciona muy bien. Sin embargo, cuando salgo de mi sesión SSH, el servicio se cierra. Además, no se inicia en el arranque ni en el inicio de sesión del usuario. Quiero que se comporte de la misma manera que un servicio de arranque: quiero que se inicie en el arranque, se ejecute constantemente y como un usuario específico.
¿Qué debo hacer para obtener esta configuración?

systemctl enableembargo, tuve que especificar la ruta absoluta al nombre de archivo del servicio en el comando, esto no era obvio para mí al principio. También habilitar me dio alguna advertencia sobre una[Install]sección que falta . Lo ignoré, pero no estoy seguro de si afectará su capacidad para comenzar en el momento del arranque.Installadvertencia fue realmente muy importante. No comenzará en el arranque sinWantedBy=multi-user.targetdebajo de la[Install]sección. Después de añadir esto al.servicearchivo, a continuación, puedeenableella.[Install]sección. Espero que ahora sea más útil para cualquiera que lo busque.[email protected]luegoenabled, como[email protected]la configuración,User=%isignifica que el usuario no está codificado y que varios usuarios pueden usar la misma definición. Un ejemplo./etc/systemd/user/?Puede que le interese utilizar la funcionalidad de "persistencia del usuario" de systemd. Está habilitado a través de
loginctl enable-linger USERNAME.Causa un administrador de servicio separado para el usuario respectivo que se inicia en el arranque, por lo que sus unidades definidas por el usuario se
~/.config/systemd/userrecogerán y procesarán en los tiempos de arranque y apagado de acuerdo con la configuración de su servicio.También puede usarlo
systemctl --userpara administrar y configurar los servicios, que operarán en el administrador de servicios de su usuario, no en el del sistema.fuente
systemctl --userEs un hallazgo fantástico. ¡Gracias!systemctl --userembargo, tenga en cuenta que no parece funcionar para sesiones SSH.