svlogd: fix timestamping; do not warn if config is missing

sv: extend help text
This commit is contained in:
Denis Vlasenko 2007-08-03 10:58:12 +00:00
parent 9a3b7b1db7
commit f223efbcde
3 changed files with 25 additions and 18 deletions

View File

@ -3256,8 +3256,18 @@ USE_FEATURE_RUN_PARTS_FANCY("\n -l Prints names of all matching files even when
#define sv_trivial_usage \ #define sv_trivial_usage \
"[-v] [-w sec] command service..." "[-v] [-w sec] command service..."
#define sv_full_usage \ #define sv_full_usage \
"Report the current status and control the state of services " \ "Control services monitored by runsv supervisor.\n" \
"monitored by the runsv supervisor" "Commands (only first character is enough):\n" \
"\n" \
"status: query service status\n" \
"up: if service isn't running, start it. If service stops, restart it\n" \
"once: like 'up', but if service stops, don't restart it\n" \
"down: send TERM and CONT signals. If ./run exits, start ./finish\n" \
" if it exists. After it stops, do not restart service\n" \
"exit: send TERM and CONT signals to service and log service. If they exit,\n" \
" runsv exits too\n" \
"pause, cont, hup, alarm, interrupt, quit, 1, 2, term, kill: send\n" \
"STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, KILL signal to service"
#define svlogd_trivial_usage \ #define svlogd_trivial_usage \
"[-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir..." "[-ttv] [-r c] [-R abc] [-l len] [-b buflen] dir..."

View File

@ -36,7 +36,7 @@ The sv program reports the current status and controls the state of services
monitored by the runsv(8) supervisor. monitored by the runsv(8) supervisor.
services consists of one or more arguments, each argument naming a directory services consists of one or more arguments, each argument naming a directory
service used by runsv(8). If service doesn?t start with a dot or slash, service used by runsv(8). If service doesn't start with a dot or slash,
it is searched in the default services directory /var/service/, otherwise it is searched in the default services directory /var/service/, otherwise
relative to the current directory. relative to the current directory.
@ -72,6 +72,8 @@ exit
sv actually looks only at the first character of above commands. sv actually looks only at the first character of above commands.
Commands compatible to LSB init script actions:
status status
Same as status. Same as status.
start start
@ -104,7 +106,7 @@ force-restart
7 seconds for the service to restart. Then report the status, and 7 seconds for the service to restart. Then report the status, and
on timeout send the service the kill command. If the script ./check on timeout send the service the kill command. If the script ./check
exists in the service directory, sv runs this script to check whether exists in the service directory, sv runs this script to check whether
the service is up and available again; it?s considered to be available the service is up and available again; it's considered to be available
if ./check exits with 0. if ./check exits with 0.
force-shutdown force-shutdown
Same as exit, but wait up to 7 seconds for the runsv(8) process to Same as exit, but wait up to 7 seconds for the runsv(8) process to

View File

@ -465,8 +465,8 @@ static unsigned logdir_open(struct logdir *ld, const char *fn)
/* read config */ /* read config */
i = open_read_close("config", buf, sizeof(buf)); i = open_read_close("config", buf, sizeof(buf));
if (i < 0) if (i < 0 && errno != ENOENT)
warn2("cannot read config", ld->name); bb_perror_msg(WARNING": %s/config", ld->name);
if (i > 0) { if (i > 0) {
if (verbose) bb_error_msg(INFO"read: %s/config", ld->name); if (verbose) bb_error_msg(INFO"read: %s/config", ld->name);
s = buf; s = buf;
@ -835,19 +835,8 @@ int svlogd_main(int argc, char **argv)
char ch; char ch;
lineptr = line; lineptr = line;
taia_now(&now); if (timestamp)
/* Prepare timestamp if needed */
if (timestamp) {
switch (timestamp) {
case 1:
fmt_taia25(stamp, &now);
break;
default: /* case 2: */
fmt_ptime30nul(stamp, &now);
break;
}
lineptr += 26; lineptr += 26;
}
/* lineptr[0..linemax-1] - buffer for stdin */ /* lineptr[0..linemax-1] - buffer for stdin */
/* (possibly has some unprocessed data from prev loop) */ /* (possibly has some unprocessed data from prev loop) */
@ -857,6 +846,7 @@ int svlogd_main(int argc, char **argv)
if (!np && !exitasap) { if (!np && !exitasap) {
i = linemax - stdin_cnt; /* avail. bytes at tail */ i = linemax - stdin_cnt; /* avail. bytes at tail */
if (i >= 128) { if (i >= 128) {
taia_now(&now);
i = buffer_pread(0, lineptr + stdin_cnt, i, &now); i = buffer_pread(0, lineptr + stdin_cnt, i, &now);
if (i <= 0) /* EOF or error on stdin */ if (i <= 0) /* EOF or error on stdin */
exitasap = 1; exitasap = 1;
@ -889,6 +879,11 @@ int svlogd_main(int argc, char **argv)
printlen = linelen; printlen = linelen;
printptr = lineptr; printptr = lineptr;
if (timestamp) { if (timestamp) {
taia_now(&now);
if (timestamp == 1)
fmt_taia25(stamp, &now);
else /* 2: */
fmt_ptime30nul(stamp, &now);
printlen += 26; printlen += 26;
printptr -= 26; printptr -= 26;
memcpy(printptr, stamp, 25); memcpy(printptr, stamp, 25);