5 ms·
'ps ax | grep [m]ysqld' (The regex '[f]oo' will match 'foo' but not itself.)
by KC8ZKF 17y ago
'ps ax | grep [m]ysqld'
(The regex '[f]oo' will match 'foo' but not itself.)
- kree10 17y agoThat's one of my favorite shell techniques. Still, I think they're doing it wrong. For keeping daemons alive I rely on http://cr.yp.to/daemontools.html http://cr.yp.to/daemontools.html .
- jrockway 17y agoThis is the correct answer -- when you fork the process yourself, you don't have to guess about it dying, you get SIGCHLD and can handle it accordingly. If you use daemontools, this code is already written for you.
- trapper 17y agoCan you use daemontools to monitor/kill/restart processes that run out of memory but don't exit?
- deleted 17y ago[deleted]
- CrLf 17y agoWell, but why does that work? Doesn't it rely on the opposite outcome of the race condition mentioned in the article?
- cracki 17y agonope. doesn't.
- CrLf 17y agoI guess it was I that fell into a race condition: replying before my brain had finished parsing the command. :) It's obvious now, that regexp does not match, for example, the "]".
- sjs 17y agoregex background: [abc] matches any of 'a', 'b', or 'c'. [m] matches only 'm'. It works because the text to match is no longer included in the command line invoked to do the matching. Whether or not 'grep [m]ysqld' appears in the list produced by ps is irrelevant, as [m]ysqld does not match "m]ysqld". i.e. the 'm' matches, but then the match fails when it hits ']'. tl;dr It's just a short way of matching "mysqld" without the matching pattern itself being "mysqld".
- viraptor 17y agoDon't... You will still see someone else's 'grep mysql' as well as yours 'man mysql' and any command that just happens to include that string :/