Date: Tue, 22 Dec 2009 14:10:22 -0800 From: Xin LI <delphij@delphij.net> To: Stanislav Sedov <stas@FreeBSD.ORG> Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG, Xin LI <delphij@FreeBSD.ORG> Subject: Re: svn commit: r200806 - head/usr.sbin/newsyslog Message-ID: <4B3143CE.1000608@delphij.net> In-Reply-To: <20091222133217.aad538b0.stas@FreeBSD.org> References: <200912212012.nBLKC2aS039479@svn.freebsd.org> <20091222133217.aad538b0.stas@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------050907050800030009080600 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 2009/12/22 13:32, Stanislav Sedov wrote: > On Mon, 21 Dec 2009 20:12:02 +0000 (UTC) > Xin LI<delphij@FreeBSD.org> mentioned: > >> Author: delphij >> Date: Mon Dec 21 20:12:01 2009 >> New Revision: 200806 >> URL: http://svn.freebsd.org/changeset/base/200806 >> >> Log: >> Don't consider non-existence of a PID file an error, we should be able >> to proceed anyway as this most likely mean that the process has been >> terminated. > > Or the process has not created the PID file and can be screwed up by rotating > its log file. What about making this optional controlled by a command line > switch? It might be a more safe alternative. Yes probably. I think the both case (can't find the PID file, or the PID file is empty) should be counted, as they may represent the similar situation, however, I think we'd better leave the current behavior default, since it's the most case. Do you think the attached patch makes sense? Cheers, -- Xin LI <delphij@delphij.net> http://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die --------------050907050800030009080600 Content-Type: text/plain; name="newsyslog-option.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="newsyslog-option.diff" Index: newsyslog.8 =================================================================== --- newsyslog.8 (revision 200868) +++ newsyslog.8 (working copy) @@ -17,7 +17,7 @@ .\" the suitability of this software for any purpose. It is .\" provided "as is" without express or implied warranty. .\" -.Dd February 24, 2005 +.Dd December 23, 2009 .Dt NEWSYSLOG 8 .Os .Sh NAME @@ -25,7 +25,7 @@ .Nd maintain system log files to manageable sizes .Sh SYNOPSIS .Nm -.Op Fl CFNnrsv +.Op Fl CFNPnrsv .Op Fl R Ar tagname .Op Fl a Ar directory .Op Fl d Ar directory @@ -169,6 +169,10 @@ or .Fl CC options when creating log files is the only objective. +.It Fl P +Prevent further action if we should send signal but the +.Dq pidfile +is empty or does not exist. .It Fl R Ar tagname Specify that .Nm Index: newsyslog.c =================================================================== --- newsyslog.c (revision 200868) +++ newsyslog.c (working copy) @@ -167,6 +167,7 @@ int noaction = 0; /* Don't do anything, just show it */ int norotate = 0; /* Don't rotate */ int nosignal; /* Do not send any signals */ +int enforcepid = 0; /* If PID file does not exist or empty, do nothing */ int force = 0; /* Force the trim no matter what */ int rotatereq = 0; /* -R = Always rotate the file(s) as given */ /* on the command (this also requires */ @@ -580,7 +581,7 @@ *p = '\0'; /* Parse command line options. */ - while ((ch = getopt(argc, argv, "a:d:f:nrsvCD:FNR:")) != -1) + while ((ch = getopt(argc, argv, "a:d:f:nrsvCD:FNR:P")) != -1) switch (ch) { case 'a': archtodir++; @@ -624,6 +625,8 @@ case 'N': norotate++; break; + case 'P': + enforcepid++; case 'R': rotatereq++; requestor = strdup(optarg); @@ -1779,7 +1782,7 @@ f = fopen(ent->pid_file, "r"); if (f == NULL) { - if (errno == ENOENT) { + if (errno == ENOENT && enforcepid == 0) { /* * Warn if the PID file doesn't exist, but do * not consider it an error. Most likely it @@ -1801,7 +1804,7 @@ * has terminated, so it should be safe to rotate any * log files that the process would have been using. */ - if (feof(f)) { + if (feof(f) && enforcepid == 0) { swork->sw_pidok = 1; warnx("pid file is empty: %s", ent->pid_file); } else --------------050907050800030009080600--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B3143CE.1000608>