Crear un servicio para ejecutar un script (en debian)

Tengo una webcam, que uso para emitir en twitch. He estado 1 mes entero activando y desactivando el script y teniendo que mantener la ventana de terminal abierta. Esto era un rollo por que solo lo podía ejecutar en casa. También he probado screm y me ha sido imposible hacer que funcione(no entiendo bien su funcionamiento aún).

Al final se me ocurrió crear un servicio para ejecutar el script con systemd.

Tendremos que hacer 3 pasos:

  1. Crear el servicio.
  2. Redirigir la salida de errores de syslog a otro archivo.
  3. Crear un logrotate con los archivos del log.

Crear servicio.

Lo primero que tenemos que hacer es crear el archivo que crea el servicio:

/etc/systemd/system/stream.service

Para mas información podéis revisar esta pagina web: https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

Ahora solo tienes que recargar los script con systemctl  y activar el servicio.

Redirigir la salida de errores de syslog a otro archivo

Dado que la salida de datos genera demasiado información, no me interesa que este dentro de syslog, por lo que voy a crear un archivo en la carpeta de logs

y ahora redirigimos los datos a ese archivo.

craremos el archivo /etc/rsyslog.d/stream.config :

reiniciamos el servicio de rsyslog :

con esto ya tenemos redirigido los logs de stream a un archivo aparte.

Crear un logrotate con los archivos del log

como punto importante cuando creamos un log es poder tener una rotación de los mismos, comprimiendo y borrando los mas antiguos

creamos el archivo /etc/logrotate.d/stream:

en este caso no es necesario reiniciar el servicio ya que logrotate lee todos los archivos contenidos en la carpeta /etc/logrotate.d/

 

Y con esto ya tenemos nuestro servicio creado, eso si de una forma muy básica ya que no hay ninguna control de error ni nada avanzado. Solo arrancamos el script o lo paramos.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *