用法
pidfile /var/run/redis_6379.pid
注意事项:
如果pidfile文件创建失败,也不会影响redis启动。
配置了daemonize
或pidfile
都会创建pidfile文件。
redis源码
当你配置了daemonize
却没有配置pidfile
时,pidfile的默认路径以及文件名
// https://github.com/redis/redis/blob/6.2.6/src/server.h
115 #define CONFIG_DEFAULT_PID_FILE "/var/run/redis.pid"
什么情况会创建pidfile:配置了daemonize
或 配置了pidfile
// https://github.com/redis/redis/blob/6.2.6/src/server.c
7996 int background = server.daemonize && !server.supervised;
8016 if (background || server.pidfile) createPidFile();
创建pidfile文件的源码。
// https://github.com/redis/redis/blob/6.2.6/src/server.c
7108 void createPidFile(void) {
7109 /* If pidfile requested, but no pidfile defined, use
7110 * default pidfile path */
7111 if (!server.pidfile) server.pidfile = zstrdup(CONFIG_DEFAULT_PID_FILE);
7112
7113 /* Try to write the pid file in a best-effort way. */
7114 FILE *fp = fopen(server.pidfile,"w");
7115 if (fp) {
7116 fprintf(fp,"%d\n",(int)getpid());
7117 fclose(fp);
7118 }
7119 }
什么情况会删除pidfile:配置了daemonize
或 配置了pidfile
// https://github.com/redis/redis/blob/6.2.6/src/server.c
5535 int prepareForShutdown(int flags) {
...忽略部分...
5623 /* Remove the pid file if possible and needed. */
5624 if (server.daemonize || server.pidfile) {
5625 serverLog(LL_NOTICE,"Removing the pid file.");
5626 unlink(server.pidfile);
5627 }
原生注释
# If a pid file is specified, Redis writes it where specified at startup
# and removes it at exit.
#
# When the server runs non daemonized, no pid file is created if none is
# specified in the configuration. When the server is daemonized, the pid file
# is used even if not specified, defaulting to "/usr/local/var/run/redis.pid".
#
# Creating a pid file is best effort: if Redis is not able to create it
# nothing bad happens, the server will start and run normally.
#
# Note that on modern Linux systems "/run/redis.pid" is more conforming
# and should be used instead.
#pidfile /var/run/redis_6379.pid
本文属于原创,首发于微信公众号【小易哥学呀学】,如需转载请后台留言。
加微信入交流群。vx:17610015120
网友评论