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 der systemctlhängt und ich muss Strg-C drücken, um zur Shell zurückzukehren.
Dies ist 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 Type=notifyauskommentiere, wird systemctl sofort beendet, aber dies ist 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 ist das Problem? Ich habe das DigitalOcean-Tutorial gefunden, in dem es keine gibt, Type=notifyund ich habe Redis-Probleme gefunden, als sie erfolgreich empfohlen wurden 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.
Antworten
Ok, das Problem war, dass die systemdUnterstützung nicht standardmäßig kompiliert wird. Sie müssen es explizit kompilieren. Ich werde eine PR schreiben, um README.md in Quellen zu aktualisieren, da dies nicht erklärt wird.
Dieses Commit ist 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