Der Redis-Dienst hängt mit systemctl und Type=notify

Der Redis-Dienst hängt mit systemctl und Type=notify

Ich bin dieser Antwort gefolgt:https://serverfault.com/a/893075/210494. Ich habe CentOS 7.8.

redis.service

[Service]
Type=notify
ExecStart=/opt/redis/bin/redis-server /opt/redis/conf/redis-master.conf
TimeoutStartSec=60
TimeoutStopSec=60
TimeOutSec=90
RestartSec=5s
Restart=on-success

redis-master.conf

daemonize no
supervised systemd

Wenn ich diesen Dienst ausführe, wird der Redis-Prozess gestartet, aber er systemctlhängt sich auf und ich muss Strg-C drücken, um zur Shell zurückzukehren.

Das steht in den Protokollen:

69486:C 28 Aug 2020 17:31:14.545 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=69486, just started
69486:C 28 Aug 2020 17:31:14.545 # Configuration loaded
69486:C 28 Aug 2020 17:31:14.545 # WARNING supervised by systemd - you MUST set appropriate values for TimeoutStartSec and TimeoutStopSec in your service unit.
69486:M 28 Aug 2020 17:31:14.546 * Increased maximum number of open files to 4096 (it was originally set to 1024).
69486:M 28 Aug 2020 17:31:14.547 * Running mode=standalone, port=6380.
69486:M 28 Aug 2020 17:31:14.547 # Server initialized

Wenn ich es auskommentiere Type=notify, wird systemctl sofort beendet, aber das steht in den Protokollen.

68629:C 28 Aug 2020 17:29:58.933 # Redis version=6.0.6, bits=64, commit=00000000, modified=0, pid=68629, just started
68629:C 28 Aug 2020 17:29:58.933 # Configuration loaded
68629:C 28 Aug 2020 17:29:58.933 # WARNING supervised by systemd - you MUST set appropriate values for TimeoutStartSec and TimeoutStopSec in your service unit.
68629:C 28 Aug 2020 17:29:58.933 # systemd supervision requested, but NOTIFY_SOCKET not found
68629:M 28 Aug 2020 17:29:58.933 * Increased maximum number of open files to 4096 (it was originally set to 1024).
68629:M 28 Aug 2020 17:29:58.934 * Running mode=standalone, port=6380.
68629:M 28 Aug 2020 17:29:58.934 # Server initialized

Wo liegt das Problem? Ich habe ein DigitalOcean-Tutorial gefunden, wo sie es nicht haben, Type=notifyund ich habe Redis-Probleme gefunden, wo sie es erfolgreich empfohlen haben Type=notify.

Aktualisieren

Job for redis.service failed because a timeout was exceeded. See "systemctl status redis.service" and "journalctl -xe" for details.
[root@DB dev]# systemctl status redis
● redis.service - Redis
   Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: disabled)
   Active: failed (Result: timeout) since Sun 2020-08-30 12:06:58 CEST; 46min ago
  Process: 11134 ExecStart=/opt/app/redis/default/bin/redis-server /opt/app/redis/default/conf/redis-master.conf (code=exited, status=0/SUCCESS)
 Main PID: 11134 (code=exited, status=0/SUCCESS)
Aug 30 12:05:57 DB systemd[1]: Starting Redis...
Aug 30 12:06:58 DB systemd[1]: redis.service start operation timed out. Terminating.
Aug 30 12:06:58 DB systemd[1]: Failed to start Redis.
Aug 30 12:06:58 DB systemd[1]: Unit redis.service entered failed state.
Aug 30 12:06:58 DB systemd[1]: redis.service failed.

Antwort1

Ok, das Problem war, dass die systemdUnterstützung nicht standardmäßig kompiliert wird. Sie müssen sie explizit kompilieren. Ich werde einen PR schreiben, um README.md in den Quellen zu aktualisieren, da dies nicht erklärt wird.

Dasbegehenist für dieses Verhalten verantwortlich. Ich habe es in dieser Ausgabe gefunden:https://github.com/redis/redis/issues/7217

yum install systemd-devel
make BUILD_WITH_SYSTEMD=yes USE_SYSTEMD=yes

verwandte Informationen