Explicación detallada del archivo de configuración de la unidad de systemd

Tabla de contenido

tipo de unidad

Comandos comunes systemctl

archivo de configuración de la unidad

Explicación detallada de la parte [Unidad]

[Servicio] explicación detallada de la parte

parámetros específicos del servicio

entorno de ejecución del proceso

variable de entorno de proceso

como matar un proceso

control de recursos del proceso

Explicación detallada de la parte [Instalar]

Significado objetivo

Archivos de configuración de unidades comunes


Systemd es un administrador de sistemas y servicios Linux, compatible con los scripts de inicialización SysV y LSB, Systemd tiene las siguientes características:

  • Capacidades de paralelización agresivas
  • Inicie un servicio usando socket y activación de D-Bus
  • Proporciona inicio bajo demanda de demonios, usando cgroups de Linux para rastrear procesos
  • Admite instantáneas y restauración del estado del sistema
  • Mantener montajes y puntos de montaje automático
  • Implemente una lógica de control de servicios bien diseñada basada en dependencias de transacciones

El comando systemctl es la herramienta principal para administrar systemd, combina la funcionalidad del servicio SysVinit y los comandos chkconfig en una sola herramienta, y puede usarlo para habilitar y deshabilitar servicios de forma permanente o solo para la sesión actual.

tipo de unidad

Systemd administra unidades, que son representaciones de los recursos y servicios del sistema, y ​​la siguiente lista muestra los tipos de unidades que systemd puede administrar:

  • servicio Un servicio en el sistema, incluido el inicio, reinicio y detención de un servicio
  • socket El socket de red asociado con el servicio
  • dispositivo utiliza systemd para administrar dispositivos especialmente
  • montar puntos de montaje gestionados por systemd
  • El punto de montaje que se monta automáticamente cuando se inicia el montaje automático
  • intercambiar espacio de intercambio en el sistema
  • punto de sincronización de destino para otras unidades, generalmente utilizado para iniciar servicios habilitados en el momento del arranque
  • ruta La ruta a activar basada en la ruta. Por ejemplo, puede iniciar un servicio basado en el estado de una ruta, como si existe
  • temporizador se utiliza para programar un temporizador para activar otra unidad.
  • instantánea Una instantánea del estado actual de systemd. Por lo general, se usa para retroceder después de realizar cambios temporales en systemd
  • slice limita los recursos a través de los nodos del grupo de control de Linux (cgroups)
  • alcance Información de la interfaz de bus systemd. Por lo general, se utiliza para administrar procesos de sistemas externos.

Comandos comunes systemctl

systemctl start chronyd #启动
systemctl stop chronyd #停止
systemctl restart chronyd #重启
systemctl status chronyd #查看 unit 状态

systemctl enable chronyd #设置 unit 开启启动
systemctl disable chronyd #取消 unit 开机启动
systemctl is-enabled chronyd #查看 unit 是否开机启动

# 重新加载 unit 的配置文件,每次修改了 unit 的配置文件后,需要执行以下命令重新加载 unit 的配置文件
systemctl daemon-reload

systemctl mask chronyd #屏蔽 unit,屏蔽后 unit 无法启动
systemctl unmask chronyd #取消屏蔽

# 更多命令可通过 systemctl --help 或 man systemctl 来查看

archivo de configuración de la unidad

El archivo de configuración de la unidad del servicio sshd es el siguiente, dividido principalmente en tres partes: [Unidad], [Servicio] e [Instalar]

[root@vm03 ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

Explicación detallada de la parte [Unidad]

Los parámetros utilizados en esta sección no se limitan a unidades de tipo de servicio, sino que también son comunes a otros tipos de unidades. Para obtener una lista completa de estos parámetros y sus descripciones, puede ejecutar el comando man systemd.unit o visitar el manual en chino de  systemd.unit

Nota: Se puede especificar una lista separada por espacios después de cada parámetro en el bloque [unidad]

  • Descripción: Descripción de la unidad actual
  • Documentación: dirección del documento, solo acepta URIs de tipo: http://, https://, file:, info:, man:
  • Requiere: indica que existe una fuerte dependencia entre esta unidad y otras unidades. Si esta unidad está activada, las unidades enumeradas aquí también se activarán. Si una de las unidades dependientes no se puede activar, systemd no iniciará esta unidad.
  • Quiere: Similar a Requiere, la diferencia es que si la unidad dependiente no se inicia, no afectará la operación continua de la unidad.
  • Después: indica que la unidad debe iniciarse después de un determinado servicio, las opciones pueden referirse al  manual chino systemd.special
  • Antes: Indica que la unidad debe iniciarse antes de un determinado servicio, y los campos Después y Antes solo involucran la secuencia de inicio, no las dependencias.
  • BindsTo: similar a Requires, cuando la unidad especificada se detiene, esta unidad también se detendrá
  • PartOf: similar a Requires, cuando la unidad especificada se detiene o reinicia, también hará que la unidad se detenga o reinicie
  • Conflictos: si la unidad especificada está funcionando, esta unidad no podrá funcionar
  • OnFailure: cuando la unidad entra en estado de falla, active la unidad especificada

[Servicio] explicación detallada de la parte

parámetros específicos del servicio

Solo las unidades de tipo de servicio tienen estos parámetros; para obtener una lista completa de parámetros, visite  el manual en chino de systemd.service  o  systemd.service

  • simple (valor predeterminado): El servicio es iniciado por el proceso principal. systemd cree que el servicio se iniciará de inmediato y el proceso del servicio no se bifurcará. Si el servicio desea iniciar otros servicios, no utilice este tipo de inicio, a menos que el servicio esté activado por socket.
  • bifurcación: el servicio se iniciará como una bifurcación, momento en el que el proceso principal se cerrará y el proceso secundario se convertirá en el proceso principal. systemd piensa que cuando el proceso de servicio se bifurca y el proceso principal sale, el servicio se inicia correctamente. Para demonios normales, a menos que esté seguro de que este método de inicio no puede satisfacer sus necesidades, utilice este tipo de inicio. El uso de este tipo de inicio también debe especificar PIDFile= para que systemd pueda rastrear el proceso principal del servicio
  • oneshot: similar a simple, pero solo se ejecuta una vez, Systemd esperará a que termine de ejecutarse antes de iniciar otros servicios. Esta opción es adecuada para servicios que realizan solo una tarea y luego salen inmediatamente. Puede ser necesario configurar RemainAfterExit=yes al mismo tiempo para que systemd aún considere que el servicio está activo después de que finaliza el proceso de servicio.
  • dbus: similar a simple, pero comienza después de esperar la señal D-Bus. systemd considera que el servicio está listo cuando el BusName especificado está presente en el bus del sistema DBus.
  • notificar: similar a simple, Systemd será notificado después del inicio y luego continuará ejecutándose
  • inactivo: similar a simple, pero el servicio no se iniciará hasta que se ejecuten todas las demás tareas

RemainAfterExit: un valor booleano que especifica que el servicio debe considerarse activo incluso si todos los procesos del servicio han finalizado; el valor predeterminado es no

GuessMainPID: un valor booleano que especifica si systemd debe adivinar el PID principal de un servicio si no puede determinarlo de manera confiable. Esta opción se ignora a menos que se establezca Type=forking y no se establezca PIDFile, el valor predeterminado es sí

PIDFile: el nombre de archivo absoluto que apunta al archivo PID para este daemon. Esta opción se recomienda para servicios con Type=forking. Systemd lee el PID del proceso principal del daemon después de que se haya iniciado el servicio. Systemd no escribirá en el archivo configurado aquí, pero lo eliminará después de que el servicio se apague.

BusName: El nombre del bus D-Bus para llegar a este servicio. Esta opción es necesaria para servicios con Type=dbus

ExecStart: el comando y los parámetros ejecutados cuando se inicia el servicio

ExecStartPre: el comando ejecutado antes de que comience el servicio

ExecStartPost: el comando ejecutado después de que se inicia el servicio

ExecReload: el comando ejecutado al reiniciar el servicio

ExecStop: Comandos y parámetros ejecutados cuando el servicio se detiene

ExecStopPost: comando ejecutado después de que el servicio se detiene

RestartSec: tiempo de suspensión en segundos antes de reiniciar el servicio

TimeoutStartSec: Tiempo de espera para que se inicie el servicio (en segundos)

TimeoutStopSec: Tiempo de espera para que el servicio se detenga (en segundos)

TimeoutSec: Configure la abreviatura de TimeoutStartSec y TimeOutshopSec al mismo tiempo

Reiniciar: configure si desea reiniciar el servicio cuando el proceso de servicio se cierra, se elimina o se agota el tiempo de espera. Los valores que se pueden configurar son los siguientes:

  • ningún servicio no se reiniciará, este es el valor predeterminado
  • en caso de éxito se reinicia solo si el proceso de servicio finaliza limpiamente (código de salida 0)
  • on-failure solo se reinicia cuando el proceso de servicio finaliza de manera anormal. La llamada "salida anormal" significa: el código de salida no es "0"
  • on-abnormal Reinicio si el proceso termina debido a una señal o tiempo de espera
  • on-watchdog Reiniciar cuando se agote el tiempo de vigilancia
  • reinicio al cancelar si el proceso sale debido a una señal no detectada no especificada como un estado de salida limpio
  • siempre siempre reiniciar

Entorno: especificar variables de entorno

KillMode: Define como systemd detiene el servicio, los valores que se pueden configurar son los siguientes:

  • grupo de control (valor predeterminado): todos los procesos secundarios en el grupo de control actual se eliminarán
  • proceso: solo matar el proceso principal
  • mixto: el proceso principal recibirá la señal SIGTERM y el proceso hijo recibirá la señal SIGKILL
  • ninguno: no se eliminará ningún proceso, simplemente ejecute el comando de detención del servicio

entorno de ejecución del proceso

Las opciones de configuración compartidas por las unidades de servicio, socket, montaje e intercambio y que se utilizan para definir el entorno de ejecución del proceso se enumeran a continuación. Para obtener descripciones completas de los parámetros, puede ejecutar el comando man systemd.exec o visitar el manual en chino de  systemd.exec

WorkingDirectory: establece el directorio de trabajo del proceso

Usuario=, Grupo: Establezca el usuario y el grupo utilizados por el proceso durante la ejecución, que se puede configurar como un UID/GID en forma de número o un nombre en forma de cadena

NoNewPrivileges: recibe un valor booleano. Establézcalo en sí para indicar que todos los procesos y procesos secundarios del servicio no pueden obtener nuevos permisos a través de llamadas execve(). Esta opción es la forma más simple y efectiva de evitar que los procesos eleven privilegios.

SELinuxContext: establece el contexto de seguridad de SELinux del proceso

Establezca varios límites de recursos flexibles/duros para el proceso: LimitCPU=, LimitFSIZE=, LimitDATA=, LimitSTACK=, LimitCORE=, LimitRSS=, LimitNOFILE=, LimitAS=, LimitNPROC=, LimitMEMLOCK=, LimitLOCKS=, LimitSIGPENDING=, LimitMSGQUEUE=, LimitNICE=, LimitRTPRIO=, LimitRTTIME= valor El valor suave:duro separado por dos puntos significa establecer el límite suave y el límite duro respectivamente (por ejemplo, LimitAS=4G:16G), y el valor especial infinito significa que no hay límite. Para las opciones en bytes, se pueden utilizar los sufijos base 1024 K, M, G, T, P, E (por ejemplo, LimitAS=16G). Para los límites de tiempo, puede agregar "ms" (milisegundos), "s" (segundos), "min" (minutos), "h" (horas), "d" (días), "w" (semanas) y otros sufijos de unidad de tiempo explícitos.

UMask: establece la máscara de creación de archivos, el valor predeterminado es 0022

OOMScoreAdjust: Establece la prioridad de que el proceso se elimine debido a memoria insuficiente. Se puede establecer en un valor entero entre -1000 (prohibido matar) y 1000 (primero en morir)

Entorno: Establecer las variables de entorno del proceso, aceptando una lista separada por espacios de VAR=VALOR. Esta opción se puede utilizar varias veces para agregar nuevas variables o modificar variables existentes (prevalecerá la última configuración de la misma variable). Establecer en vacío significa borrar todas las variables previamente establecidas. Nota: (1) La expansión de variables no se realizará dentro de la cadena (es decir, "$" no tiene un significado especial); (2) Si el valor contiene espacios o signos de igual, se deben usar comillas dobles (") en ambos lados de la cadena para delimitar, por ejemplo: Entorno="VAR1=palabra1 palabra2" VAR2=palabra3 "VAR3=$palabra 5 6" significa que se establecen tres variables "VAR1", "VAR2" y "VAR3", y sus valores son "palabra1 palabra2", "palabra3", " $palabra 5 6"

EnvironmentFile: similar a Environment=, la diferencia es que esta opción lee la configuración de las variables de entorno desde un archivo de texto. Las líneas en blanco en el archivo y las líneas que comienzan con punto y coma (;) o el signo de almohadilla (#) se ignorarán, y el formato de otras líneas debe ajustarse a la sintaxis de asignación de variable de shell de VAR=VALUE. Una barra invertida (\) al final de una línea se trata como un carácter de continuación, similar a la sintaxis de shell. Si desea incluir espacios en el valor de la variable, debe agregar comillas dobles (") en ambos extremos del valor. El archivo debe estar representado por una ruta absoluta (puede contener comodines). Pero puede agregar un prefijo "-" a la ruta para ignorar los archivos que no existen. Puede usar esta opción varias veces para leer la configuración de varios archivos diferentes. = El orden en que se leen los archivos es el orden en que aparecen en el archivo de la unidad, y para la misma variable, prevalece la configuración en el último archivo leído

UnsetEnvironment: anula explícitamente una variable de entorno específica para esta unidad

StandardInput: establezca la entrada estándar (STDIN) del proceso, que se puede establecer en null, tty, tty-force, tty-fail, data, file:path, socket, fd:name, el valor predeterminado de esta opción es nulo

StandardOutput: establece la salida estándar (STDOUT) del proceso, que se puede establecer en heredar, nulo, tty, journal, syslog, kmsg, journal+console, syslog+console, kmsg+console, file:path, append:path, socket, fd:name

StandardError: establece el error estándar (STDERR) del proceso, el rango de valores y el significado son los mismos que StandardOutput=

StandardInputText, StandardInputData: establezca cualquier texto o datos binarios pasados ​​al proceso a través de la entrada estándar (STDIN).Estas opciones solo son significativas cuando StandardInput=data

LogLevelMax: filtre los mensajes de registro generados por esta unidad de acuerdo con este nivel de registro, que se puede establecer en un nivel de registro de syslog, que es uno de emerg (el nivel de registro más bajo, que solo muestra los mensajes más fatales), alerta, crit, err, advertencia, aviso, información, depuración (el nivel de registro más alto, que muestra los mensajes de depuración más detallados)

variable de entorno de proceso

Para obtener instrucciones detalladas, visite  el manual en chino systemd.exec

$PATH: lista de directorios de archivos ejecutables (rutas absolutas separadas por dos puntos), este valor se fija en /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

$LANG: configuración de localización. Se puede configurar mediante el archivo locale.conf(5)

$USER, $LOGNAME, $HOME, $SHELL: nombre de usuario, nombre de usuario, directorio de inicio, shell de inicio de sesión

$MAINPID: PID del proceso principal de la unidad (si se puede determinar)

como matar un proceso

Las unidades de servicio, socket, montaje, intercambio y alcance tienen un conjunto de opciones de configuración sobre cómo finalizar el proceso. Para obtener descripciones completas de los parámetros, puede ejecutar el comando man systemd.kill o visitar el manual en chino de  systemd.kill

KillMode: establece el método para eliminar el proceso cuando la unidad se detiene. El rango de valores es: control-group, process, mixed, none El valor predeterminado es control-group, lo que significa matar todos los procesos en el cgroup de la unidad (para la unidad de servicio, la acción ExecStop= debe ejecutarse primero)

KillSignal: establezca qué señal usar en el primer paso para matar el proceso, todas las señales disponibles se detallan en  el manual de Signal(7)  . El valor predeterminado es la señal SIGTERM. Tenga en cuenta que systemd seguirá incondicionalmente esta señal con una señal SIGCONT para garantizar la eliminación limpia de los procesos suspendidos

SendSIGHUP: si enviar una señal SIGHUP a todos los procesos de la unidad inmediatamente después de enviar la señal KillSignal= en el primer paso. Esto se usa principalmente para notificar a procesos como shells que su conexión se ha interrumpido. Por defecto es "no"

SendSIGKILL: Indica si usar la señal SIGKILL o FinalKillSignal= para eliminar el proceso restante después de que TimeoutStopSec= haya transcurrido. El valor predeterminado es "sí"

FinalKillSignal: cuando se agota el tiempo de espera y se activa SendSIGKILL=, qué señal se envía a los procesos restantes. Debe establecerse en una señal que el servicio no pueda capturar ni manejar (SIGTERM no es apropiado). Para los desarrolladores, se puede usar para generar un volcado de núcleo para comprender por qué el servicio no finalizó correctamente cuando recibió la señal SIGTERM inicial. Esto se hace configurando LimitCORE= y configurando FinalKillSignal= a uno de SIGQUIT o SIGABRT. El valor predeterminado para esta opción es SIGKILL

WatchdogSignal: Qué señal se usa para terminar el servicio cuando el watchdog (WatchdogSec=) se agota. El valor predeterminado para esta opción es SIGABRT

control de recursos del proceso

Las unidades de segmento, alcance, servicio, socket, montaje e intercambio comparten un conjunto de opciones de configuración para limitar el uso de recursos del proceso. Esencialmente, estas opciones se basan en la función cgroups del kernel de Linux para organizar un grupo de procesos en una jerarquía similar a un árbol y limitar los diversos recursos que permiten. Para obtener una lista completa de estos parámetros y sus descripciones, puede ejecutar el comando man systemd.resource-control o visitar el manual en chino systemd.resource-  control

Explicación detallada de la parte [Instalar]

[instalar] define la información de instalación de la unidad. Esta parte de la configuración solo se usa cuando se usa systemctl enable o systemctl disabled. Esta parte no se explica cuando la unidad está funcionando, lo que equivale a configurar cómo arrancar

Los parámetros utilizados en esta sección no se limitan a las unidades de tipo de servicio, sino que también son comunes a otros tipos de unidades. Para obtener una lista completa de estos parámetros y sus descripciones, ejecute el comando man systemd.unit o visite el manual en chino de  systemd.unit

  • Alias: la unidad actual se puede usar para iniciar el alias, los nombres enumerados aquí deben tener el mismo sufijo (es decir, tipo) que el nombre del archivo de servicio, al ejecutar systemctl enable creará enlaces simbólicos desde estos nombres al nombre del archivo de la unidad
  • RequiredBy: Indica el Target donde se encuentra el servicio, su valor es uno o más Targets, cuando systemctl está habilitado, el enlace simbólico de la unidad se ubicará en el subdirectorio formado por el nombre del Target + sufijo .required bajo el directorio /etc/systemd/system
  • WantedBy: Indica el Target donde se encuentra el servicio, su valor es uno o más Targets, cuando se habilita el systemctl actual, el enlace simbólico de la unidad se colocará en el subdirectorio formado por el nombre del Target + sufijo .wants dentro del directorio /etc/systemd/system
  • Además: cuando systemctl habilite o systemctl deshabilite, habilitará y deshabilitará otra lista de unidades al mismo tiempo

Significado objetivo

El significado de Target es un grupo de servicios, lo que significa un grupo de servicios WantedBy=multi-user.target significa que el Target donde se encuentra la unidad es multi-user.target (modo multiusuario)

Esta configuración es muy importante, porque ejecutar systemctl enable vinculará la unidad al directorio /etc/systemd/system/multi-user.target.wants para realizar la función de arranque.

Archivos de configuración de unidades comunes

# nginx的unit 配置文件
cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /usr/local/nginx/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /usr/local/nginx/run/nginx.pid)"

[Install]
WantedBy=multi-user.target

# redis的unit 配置文件
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
LimitNOFILE=10032
NoNewPrivileges=yes
OOMScoreAdjust=-900
Type=notify
User=redis
Group=redis

[Install]
WantedBy=multi-user.target

# mysql的unit 配置文件
[Unit]
Description=mysql server
Documentation=https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html
After=network.target
After=syslog.target

[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/usr/local/mysql/mysqld.pid
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/mysqld.pid $MYSQLD_OPTS
LimitNOFILE=5000
Restart=on-failure

[Install]
WantedBy=multi-user.target

# prometheus的unit 配置文件
[Unit]
Description=prometheus service
Documentation=https://prometheus.io/docs/prometheus/latest/management_api
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
    --config.file=/usr/local/prometheus/prometheus.yml \
    --storage.tsdb.retention.time=92d \
    --storage.tsdb.path=/usr/local/prometheus/data \
    --web.listen-address=0.0.0.0:9090 \
    --web.console.templates=/usr/local/prometheus/consoles \
    --web.console.libraries=/usr/local/prometheus/console_libraries
#如果想要输出日志重定向到文件,可以按如下方式,注意此时就不能使用续行符了
#ExecStart=/bin/bash -ce "/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml >> /var/log/prometheus.log  2>&1"
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

# alertmanager的unit 配置文件
[Unit]
Description=alertmanager service
Documentation=https://prometheus.io/docs/alerting/latest/management_api
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/alertmanager/alertmanager \
    --config.file=/usr/local/alertmanager/alertmanager.yml \
    --storage.path=/usr/local/alertmanager/data \
    --data.retention=120h \
    --web.listen-address=0.0.0.0:9093
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

# node_exporter的unit配置文件
[Unit]
Description=node_exporter
Documentation=https://github.com/prometheus/node_exporter
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus_exporter/node_exporter-1.1.2.linux-amd64/node_exporter \
    --web.listen-address=0.0.0.0:9100 \
    --web.telemetry-path=/metrics
ExecStop=/bin/kill -s TERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

# redis_exporter的unit配置文件
[Unit]
Description=redis_exporter
Documentation=https://github.com/oliver006/redis_exporter
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus_exporter/redis_exporter-v1.25.0.linux-amd64/redis_exporter \
    -redis.addr=localhost:6379 \
    -redis.password=123456 \
    -web.listen-address=:9121 \
    -web.telemetry-path=/metrics
Restart=on-failure

[Install]
WantedBy=multi-user.target

# blackbox_exporter的unit配置文件
[Unit]
Description=blackbox_exporter
Documentation=https://github.com/prometheus/blackbox_exporter
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus_exporter/blackbox_exporter-0.19.0.linux-amd64/blackbox_exporter \
    --web.listen-address=0.0.0.0:9115 \
    --config.file=/usr/local/prometheus_exporter/blackbox_exporter-0.19.0.linux-amd64/blackbox.yml
ExecStop=/bin/kill -s TERM $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

# mysqld_exporter的unit配置文件
[Unit]
Description=mysql_exporter
Documentation=https://github.com/prometheus/mysqld_exporter
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/prometheus_exporter/mysqld_exporter-0.13.0.linux-amd64/mysqld_exporter \
    --config.my-cnf=/usr/local/prometheus_exporter/mysqld_exporter-0.13.0.linux-amd64/.my.cnf \
    --web.listen-address=:9104 \
    --web.telemetry-path=/metrics
Restart=on-failure

[Install]
WantedBy=multi-user.target

# systemd管理java进程
[Unit]
Description=question_api
Documentation=https://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html
After=network.target

[Service]
Type=forking
SuccessExitStatus=143
ExecStart=/bin/sh -c "/usr/local/java/jdk1.8.0_201/bin/java -Xms2048m -Xmx2048m -jar /app/question_api/question_api_beta.jar --server.port=8080 >> /var/log/app/question_api.log 2>&1 &"
ExecStop=/bin/kill -s TERM $MAINPID

Restart=on-failure

[Install]
WantedBy=multi-user.target

# 配置项 SuccessExitStatus=143 是为了抑制stop时报错 Main process exited, code=exited, status=143/n/a
# 这是因为 java 程序在响应 SIGTERM 时不会并不会发回预期的退出状态
# 所以需要将退出代码 SuccessExitStatus=143 添加到 systemd 服务文件作为成功退出状态来抑制这种报错

Supongo que te gusta

Origin blog.csdn.net/zzchances/article/details/127993610
Recomendado
Clasificación