Hi, I have a system which monitors 2 UPSs, and it runs upslog twice. I had a problem with newsyslog rotating the log file because upslog keeps it open (arguably a bug IMO), but it also has no way of changing the PID file so newsyslog can't HUP it when log rotating.
Attached is a patch which allows you to specify the argument for writepid() so you can differentiate them easily. -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C
--- clients/upslog.c.orig 2009-04-20 03:05:39.000000000 +0000
+++ clients/upslog.c 2009-04-20 03:11:21.000000000 +0000
@@ -109,6 +109,7 @@
printf(" - Use -f \"<format>\" so your shell doesn't
break it up.\n");
printf(" -i <interval> - Time between updates, in seconds\n");
printf(" -l <logfile> - Log file name, or - for stdout\n");
+ printf(" -p <pidbase> - Base name for PID file (defaults to
\"upslog\")\n");
printf(" -s <ups> - Monitor UPS <ups> -
<upsname>@<host>[:<port>]\n");
printf(" - Example: -s my...@server\n");
printf(" -u <user> - Switch to <user> if started as root\n");
@@ -371,6 +372,7 @@
char *prog = NULL;
const char *user = NULL;
struct passwd *new_uid = NULL;
+ const char *pidfilebase = "upslog";
logformat = DEFAULT_LOGFORMAT;
user = RUN_AS_USER;
@@ -379,7 +381,7 @@
prog = argv[0];
- while ((i = getopt(argc, argv, "+hs:l:i:f:u:V")) != -1) {
+ while ((i = getopt(argc, argv, "+hs:l:i:f:u:Vp:")) != -1) {
switch(i) {
case 'h':
help(prog);
@@ -407,6 +409,10 @@
case 'V':
exit(EXIT_SUCCESS);
+
+ case 'p':
+ pidfilebase = optarg;
+ break;
}
}
@@ -476,7 +482,7 @@
setup_signals();
- writepid("upslog");
+ writepid(pidfilebase);
become_user(new_uid);
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Nut-upsdev mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/nut-upsdev
