Tengo una pregunta muy simple: ¿Cómo iniciar/detener un servicio systemd desde una aplicación de consola .NET 6.0? Solo para aclarar: no quiero que el servicio se detenga solo. Quiero una aplicación de consola para detener otro servicio ya instalado en un Ubuntu Server 20.04.
Más concreto: ¿Cómo llamaría correctamente a esta línea en C#?
sudo systemctl start SERVICE_NAME¿Tengo que iniciar un proceso como este?
var process = new Process(); process.StartInfo.FileName = " /usr/lib/systemd" process.StartInfo.Arguments = "start SERVICENAME"; process.Start();¿Qué he intentado hasta ahora?
Busqué en Google pero no pude encontrar ninguna solución viable, y dado que no soy un experto en Linux, podría haber caído en la trampa XY
Nunca he hecho esto antes. Me gusta .NET y uso netcore todos los días, pero si desea crear un script para que se ejecute solo en Linux. Tal vez un script bash haría.
Como desea usar .NET, creo que deberá hacer algo como:
ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "/bin/bash", Arguments = "systemctl stop SERVICE", }; Process proc = new Process() { StartInfo = startInfo, }; proc.Start();Está creando una instancia de bash desde donde llama a systemctl.
También es posible que desee esperar hasta que finalice el proceso. Puedes hacer eso con
proc.WaitForExit();Tenga en cuenta que esta es una espera sincrónica.