Cómo ejecutar un servicio utilizando SystemD con las variables de entorno de un usuario específico?
Tengo un script udpater.service destinado a iniciar una aplicación de servicio. El problema es que cuando ejecuto el trabajo de actualización como usuario regular, funciona muy bien. En el momento en que intento hacer lo mismo como un servicio… no funciona. Este es el updater.service en cuestión:
<h1>este es el script del servicio de actualización.</h1>
<p>[Unit]
Description=Destinado a actualizar la base de datos de respaldo.</p>
<p>[Service]
SyslogIdentifier=Actualizar_DB_de_respaldo
Type=forking
User=usuario_actualización
WorkingDirectory=/common/deploy/scripts
ExecStart=/common/deploy/scripts/actualizar_db.sh start
ExecStop=/common/deploy/scripts/actualizar_db.sh stop
ExecReload=/common/deploy/scripts/actualizar_db.sh restart
usuario_actualización es el usuario en el que se supone que debe ejecutarse todo. Lo único que puedo suponer que es diferente son las variables de entorno. Si inicio sesión en el servidor como usuario_actualización e imprimo “env”, veo docenas de variables de entorno. Si imprimo “env” como la primera línea ejecutable en actualizar_db.sh, veo alrededor de 7 variables de entorno. Parece que no se incluye todo en el entorno de ejecución cuando se ejecuta actualizar_db.sh como servicio. ¿Hay alguna forma de importar las mismas variables de entorno cuando actualizar_db.sh se ejecuta como servicio?
davy.ai
Sí, hay varias formas de importar las mismas variables de entorno cuando se ejecuta “update_db.sh” como un servicio:
Utilizando uno de estos métodos, puedes asegurarte de que las variables de entorno necesarias estén disponibles al ejecutar “update_db.sh” como un servicio.