Pregunta: ¿Puedo iniciar un proceso con systemd y asignar a ese proceso un directorio de trabajo de mi elección?
Tengo un servicio con el que quiero comenzar systemd
. Cuando se inicia ese servicio, quiero poder asignarle un directorio de trabajo actual. Sé cómo hacer esto si estaba usando init
, pero estoy teniendo problemas systemd
.
Esto es lo que he estado tratando de hacer funcionar.
Mi servicio
Creé una utilidad simple ("listdir"), escrita en Python y colocada en /opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
Mi archivo de configuración
Luego creé un listdir.service
archivo systemd
y lo coloqué aquí /lib/systemd/system/listdir.service
:
[Unit]
Description=Test of listing CWD.
[Service]
ExecStartPre=chdir /usr/local
ExecStart=/opt/bin/listdir
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
Problema
Cuando ejecuto systemctl start listdir
mi registro del sistema registra el directorio raíz ("/") como el directorio de trabajo actual. Por supuesto, lo esperaba /usr/local
como el directorio actual, ya que pensé ExecStartPre
que cambiaría los directorios antes de comenzar el proceso.
Obviamente, estoy imaginando que systemd
funcionaría algo así como un script de shell (aunque sé que no es un script de shell). ¿Alguien puede darme una idea de lo que debería estar haciendo? ¿Es posible establecer un directorio de trabajo usando systemd
? ¡Gracias!
Editar: el registro de mi sistema informa un error. (Acabo de notar.)
Executable path is not absolute, ignoring: chdir /usr/local
Entonces, chdir
es un comando de shell, y no un ejecutable en sí mismo. Bueno. ¿Pero todavía hay alguna forma de cambiar los directorios usando systemd
?