Date: Mon, 27 Nov 2006 17:14:35 -0600 From: Dan Nelson <dnelson@allantgroup.com> To: jhall@vandaliamo.net Cc: freebsd-questions@freebsd.org Subject: Re: Checking processes without PIDs Message-ID: <20061127231435.GA69797@dan.emsphone.com> In-Reply-To: <2437.65.117.48.155.1164666185.squirrel@admintool.trueband.net> References: <2365.65.117.48.155.1164660366.squirrel@admintool.trueband.net> <20061127212948.GL29363@dan.emsphone.com> <2437.65.117.48.155.1164666185.squirrel@admintool.trueband.net>
next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Nov 27), jhall@vandaliamo.net said: > > In the last episode (Nov 27), jhall@vandaliamo.net said: > >> I have written a script to determine if processes are running. I am > >> using, as an example, > >> > >> ps -ax | grep -c postgrey > >> > >> Ocassionally, I am receiving a notification a process is not running > >> (and it varies which process I receive notifications for). And, when > >> checking, the process actually is running. > >> > >> Is there a better way to determine if a process is running than using ps > >> and grep? > > > > Reading the program's pidfile and checking to see if that pid still > > exists is the best way. That only works if your program generates a > > pidfile, though. Most of the time they're in /var/run or a > > subdirectory. If it doesn't generate a pidfile, you can try the pgrep > > command, which is better than a "ps|grep" combo because it won't ever > > accidentally match itself. > > > > Yes, that works much better for most of the processes I am testing > against! Two are still giving me problems since their command line > has (perl) listed at the end. Any suggestions on how to better deal > with these two? > > They display as follows > > 422 ?? Ss 8:04.49 /home/postgrey/postgrey --inet=10023 --greylist-text=Greylisted, see http://www.mnea.org/greylisted.html -d (perl) You'll probably need to use the -f option to pgrep to match against the full commandline instead of just the process name: pgrep -f "/home/postgrey/postgrey --inet=10023" I added the first argument to the search string, because if you just use "/home/postgrey/postgrey", then commands like "less /home/postgrey/postgrey" would match. A quick web search indicates that postgrey supports a --pidfile option, so you might want to use that. In fact, the startup script installed by the FreeBSD port seems to include it, so I'm not sure why it's not in your ps output there. -- Dan Nelson dnelson@allantgroup.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061127231435.GA69797>