Демон Redis не создает PID-файл
сценарий запуска Redis должен создать файл pid при запуске, но я подтвердил все настройки, которые я могу найти, и файл pid никогда не создается.
Я установил redis по:
$ yum install redis
$ chkconfig redis on
$ service redis start
в моем конфигурационном файле (/etc/redis.конф) я проверил, чтобы убедиться, что они были включены:
daemonize yes
pidfile /var/run/redis/redis.pid
и в сценарии запуска (/etc / init.d / redis) есть:
exec="/usr/sbin/$name"
pidfile="/var/run/redis/redis.pid"
REDIS_CONFIG="/etc/redis.conf"
[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
[ -f $REDIS_CONFIG ] || exit 6
[ -x $exec ] || exit 5
echo -n $"Starting $name: "
daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $name: "
killproc -p $pidfile $name
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
Это настройки, которые пришли по умолчанию с установкой. Любая идея, почему нет файл pid создан? Мне нужно использовать его для Монит. (Система RHEL 6.4 btw)
3 ответов
проблема заключалась в том, что у пользователя redis не было разрешения на создание файла pid (или каталога, в котором он был). Исправить:
sudo mkdir /var/run/redis
sudo chown redis /var/run/redis
затем я убил и перезапустил redis и, конечно же, был redis.пид
в CentOs 7 мне нужно добавить в файл:
$ vi /usr/lib/systemd/system/redis.service
следующая строка:
ExecStartPost=/bin/sh -c "echo $MAINPID > /var/run/redis/redis.pid"
а затем перезапустите службу:
$ sudo systemctl daemon-reload
$ sudo systemctl restart redis.service
ссылки:
здесь с 2018
перед началом, я на Ubuntu 18.04.Я написал это, если кто-нибудь придет сюда. путем поиска той же ошибки.
в моем случае ошибка такая же, но проблема настолько отличается. Ни одно из предложенных здесь решений не сработало.
поэтому я проверил журналы, если они существуют и искали, есть ли что-нибудь полезное. Нашел их на;
cat /var/log/redis/redis-server.log
Поиск журналов и обнаружил, что проблема заключается в том, что другая служба слушает тот же порт.
2963:C 21 Sep 11:07:33.007 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2963:C 21 Sep 11:07:33.008 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=2963, just started
2963:C 21 Sep 11:07:33.008 # Configuration loaded
2974:M 21 Sep 11:07:33.009 # Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use
Я проверил, кто слушает.
netstat anp | grep 6379
нашли его.
tcp6 0 0 :::6379 :::* LISTEN 3036/docker-proxy
это был докер образ redis, который установлен другим инструментом
root@yavuz:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a6a94d401700 redis:3.2 "docker-entrypoint.s…" 20 hours ago Up 3 hours 0.0.0.0:6379->6379/tcp incubatorsuperset_redis_1
поэтому я остановил docker image
root@yavuz:~# docker stop incubatorsuperset_redis_1
и redis-сервер запущен без проблем.
root@yavuz:~# systemctl start redis-server
root@yavuz:~# systemctl status redis-server
● redis-server.service - Advanced key-value store
Active: active (running) since Fri 2018-09-21 11:10:34 +03; 1min 49s ago
Process: 3671 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)