Tecnología · GUÍA PRÁCTICA
¿systemd muestra status=203/EXEC? Demuestra primero el ejecutable, intérprete y contexto
Un comando que funciona en tu shell puede fallar antes de iniciar como servicio. Conserva el journal, inspecciona el ExecStart efectivo y comprueba ruta, shebang, directorios, montaje y política dentro del contexto de la unidad.

status=203/EXEC significa que systemd llegó al paso de ejecutar el programa configurado, pero execve no lo inició. El shell de inicio puede diferir en token, directorio, usuario, montaje o contexto de seguridad.
No empieces con chmod 777, un envoltorio de shell ni una política desactivada. Guarda el primer journal, lee la unidad combinada y clasifica la ruta del ejecutable o intérprete.
Conserva la primera evidencia
Guarda status y el primer journal; registra system/--user, unidad, arranque, hora y línea 203/EXEC.
Usa systemctl cat para unidad y drop-ins, y show para ExecStart, User, Group y WorkingDirectory; compara con el comando del shell.
Resuelve el ejecutable y toda la ruta
Toma el primer token del ExecStart efectivo, resuelve enlaces y usa file y namei -l para revisar cada directorio sin ampliar permisos ajenos.
Lee la primera línea del script como bytes; confirma el intérprete absoluto y que no haya retorno de carro oculto. Un intérprete ausente puede dar ENOENT aunque exista el script.
Prueba el contexto del servicio
Reproduce usuario y directorio, pero sudo -u es parcial: la unidad real cambia entorno, espacios de nombres, capacidades y visibilidad. Prioriza unidad y journal reales.
Usa findmnt -T en ejecutable e intérprete para noexec. Si ruta y modo pasan, revisa AVC recientes y journal en vez de desactivar la política.
Repara solo el límite demostrado
Corrige ExecStart, instala el intérprete, arregla shebang o final de línea, o concede acceso mínimo. Para noexec, mueve a una ruta aprobada o confirma la política con el propietario.
Ante SELinux, verifica etiquetas y ubicaciones estándar y analiza la causa. No saltes a permissive global ni a una regla amplia.
Recarga solo cambios y observa un inicio
Ejecuta daemon-reload solo si cambió la unidad. Inicia una vez y revisa status y el nuevo journal de inmediato.
Confirma PID principal, hijos, directorio y una solicitud real; guarda la unidad efectiva y el cambio estrecho.
