Redis не запускается с ошибкой: redis-server.service: Failed at the step NAMESPACE spawning /usr/bin/redis-server: дескриптор устаревшего файла

После обновления Debian возникла проблема с запуском redis-server.service. В выводе journalctl -xe я вижу следующее:

redis-server.service: Failed at step NAMESPACE spawning /usr/bin/redis-server: Stale file handle.

Я не могу запустить redis-server.service и в выводе systemctl start redis-server у меня есть:

Job for redis-server.service failed because the control process exited with error code.
See "systemctl status redis-server.service" and "journalctl -xe" for details.

На выходе systemctl status redis-server у меня есть:

● redis-server.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis-server.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2018-01-29 10:29:08 MSK; 58s ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 11701 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=226/NAMESPACE)
  Process: 11720 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=226/NAMESPACE)
 Main PID: 10193 (code=exited, status=0/SUCCESS)

Jan 29 10:29:08 xxx systemd[1]: redis-server.service: Service hold-off time over, scheduling restart.
Jan 29 10:29:08 xxx systemd[1]: redis-server.service: Scheduled restart job, restart counter is at 5.
Jan 29 10:29:08 xxx systemd[1]: Stopped Advanced key-value store.

Мой вопрос, как решить эту проблему и запустить redis-server.service?


person rokitokan    schedule 29.01.2018    source источник


Ответы (3)


Нашел обходное решение:

Я играл с /lib/systemd/system/redis-server.service сервисным файлом редактирования как root, комментируя различные поля, пытаясь найти, где происходит сбой, и перезапуская systemd (через systemctl daemon-reload, systemctl stop redis-server, systemctl start redis-server)

Для меня проблема заключалась в следующей строке в файле redis-server.service:

ReadOnlyDirectories=/

который я прокомментировал, и это позволило успешно запустить redis-сервер.

Итак, мой текущий /lib/systemd/system/redis-server.service:

[Unit]
Description=Advanced key-value store
After=network.target
Documentation=http://redis.io/documentation, man:redis-server(1)

[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/bin/kill -s TERM $MAINPID
PIDFile=/var/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=2755

UMask=007
PrivateTmp=yes
LimitNOFILE=65535
PrivateDevices=yes
ProtectHome=yes
#Modified 20180129 to avoid issue to start redis
#redis-server.service: Failed at step NAMESPACE spawning /usr/bin/redis-server: Stale file handle
#ReadOnlyDirectories=/
ReadWriteDirectories=-/var/lib/redis
ReadWriteDirectories=-/var/log/redis
ReadWriteDirectories=-/var/run/redis

NoNewPrivileges=true
CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCE
MemoryDenyWriteExecute=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictNamespaces=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX

# redis-server can write to its own config file when in cluster mode so we
# permit writing there by default. If you are not using this feature, it is
# recommended that you replace the following lines with "ProtectSystem=full".
ProtectSystem=true
ReadWriteDirectories=-/etc/redis

[Install]
WantedBy=multi-user.target
Alias=redis.service
person rokitokan    schedule 29.01.2018
comment
См. unix.stackexchange.com/a/603612/5132 для лучшего способа. - person JdeBP; 09.08.2020

Я только что столкнулся с этой проблемой после запуска sudo apt -y dist-upgrade и получил немного другую ошибку в /var/log/syslog

redis-server.service: Failed at step NAMESPACE spawning /usr/bin/redis-server: Invalid argument

Решение Launchpad Ошибка 1638410:

sudo systemctl edit redis-server

[Service]
ProtectHome=no

Сохраните и выйдите из редактора и завершите обновление:

sudo apt install -f

cat /etc/os-release

NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial


$ apt policy redis-server

redis-server:
  Installed: 5:5.0.0-3chl1~xenial1
  Candidate: 5:5.0.0-3chl1~xenial1
  Version table:
 *** 5:5.0.0-3chl1~xenial1 500
        500 http://ppa.launchpad.net/chris-lea/redis-server/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status
     2:3.0.6-1 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
person AnthonyK    schedule 04.11.2018

если вы используете Ubunut, в

/etc/redis/redis.conf у вас должно быть:

supervised systemd

person Amir.S    schedule 22.12.2019