提交 ed329fcf 编写于 作者: L Luc Heinrich

Allow to specify the pid file from the config file.

上级 db52edaa
...@@ -171,6 +171,7 @@ struct redisServer { ...@@ -171,6 +171,7 @@ struct redisServer {
int maxidletime; int maxidletime;
int dbnum; int dbnum;
int daemonize; int daemonize;
char *pidfile;
int bgsaveinprogress; int bgsaveinprogress;
struct saveparam *saveparams; struct saveparam *saveparams;
int saveparamslen; int saveparamslen;
...@@ -715,6 +716,7 @@ static void initServerConfig() { ...@@ -715,6 +716,7 @@ static void initServerConfig() {
server.bindaddr = NULL; server.bindaddr = NULL;
server.glueoutputbuf = 1; server.glueoutputbuf = 1;
server.daemonize = 0; server.daemonize = 0;
server.pidfile = "/var/run/redis.pid";
server.dbfilename = "dump.rdb"; server.dbfilename = "dump.rdb";
ResetServerSaveParams(); ResetServerSaveParams();
...@@ -878,6 +880,8 @@ static void loadServerConfig(char *filename) { ...@@ -878,6 +880,8 @@ static void loadServerConfig(char *filename) {
else { else {
err = "argument must be 'yes' or 'no'"; goto loaderr; err = "argument must be 'yes' or 'no'"; goto loaderr;
} }
} else if (!strcmp(argv[0],"pidfile") && argc == 2) {
server.pidfile = zstrdup(argv[1]);
} else { } else {
err = "Bad directive or wrong number of arguments"; goto loaderr; err = "Bad directive or wrong number of arguments"; goto loaderr;
} }
...@@ -1899,6 +1903,9 @@ static void bgsaveCommand(redisClient *c) { ...@@ -1899,6 +1903,9 @@ static void bgsaveCommand(redisClient *c) {
static void shutdownCommand(redisClient *c) { static void shutdownCommand(redisClient *c) {
redisLog(REDIS_WARNING,"User requested shutdown, saving DB..."); redisLog(REDIS_WARNING,"User requested shutdown, saving DB...");
if (saveDb(server.dbfilename) == REDIS_OK) { if (saveDb(server.dbfilename) == REDIS_OK) {
if (server.daemonize) {
unlink(server.pidfile);
}
redisLog(REDIS_WARNING,"Server exit now, bye bye..."); redisLog(REDIS_WARNING,"Server exit now, bye bye...");
exit(1); exit(1);
} else { } else {
...@@ -3033,7 +3040,7 @@ static void daemonize(void) { ...@@ -3033,7 +3040,7 @@ static void daemonize(void) {
if (fd > STDERR_FILENO) close(fd); if (fd > STDERR_FILENO) close(fd);
} }
/* Try to write the pid file */ /* Try to write the pid file */
fp = fopen("/var/run/redis.pid","w"); fp = fopen(server.pidfile,"w");
if (fp) { if (fp) {
fprintf(fp,"%d\n",getpid()); fprintf(fp,"%d\n",getpid());
fclose(fp); fclose(fp);
......
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize no daemonize no
# When run as a daemon, Redis write a pid file in /var/run/redis.pid by default.
# You can specify a custom pid file location here.
pidfile /var/run/redis.pid
# Accept connections on the specified port, default is 6379 # Accept connections on the specified port, default is 6379
port 6379 port 6379
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册