4.6.2 early report
gene heskett
gheskett at wdtv.com
Tue Apr 12 02:11:03 BST 2011
On Monday, April 11, 2011 08:46:30 PM Duncan did opine:
> gene heskett posted on Mon, 11 Apr 2011 08:08:52 -0400 as excerpted:
> > Re my script. I didn't use pgrep, but $pidof, and it works, I can
> > start
>
> > and stop kmail and this script follows suit:
> ...snip script setup...
>
> > Cmd="/usr/lib/qt4/bin/qdbus org.kde.kmail /KMail
> > org.kde.kmail.kmail.checkMail" while :
> > do
> >
> > if [ $(pidof kmail) ]; then
> >
> > # I've found that stderr needs dumped to /dev/null, so
> > InMail=`/usr/bin/inotifywait -q -e close --format %f
${WatchDir}`
> > 2>&1 >/dev/null if [[ ${InMail} = 'gene' ]]
> > then
> >
> > $Cmd
> >
> > elif [[ ${InMail} = 'gene-from-linda' ]]
> > then
> >
> > $Cmd
> >
> > elif [[ ${InMail} = 'amanda' ]]
> > then
> >
> > ${Cmd}
> >
> > fi
> >
> > date -R >>${Mlog}/${Log}
> > echo ${InMail} >>${Mlog}/${Log}
> > InMail=''
> >
> > else
> >
> > sleep 3
> >
> > fi
> >
> > done
> > ================
> >
> > Even a blind man finds an apple occasionally. ;-)
> >
> > Now tear it up & chew me out, this kmail detection was todays
> > additions, the rest of it has been running here for about a year.
> > The diff?
> >
> > Now I can put it in /etc/rc.d/rc.local & quit running it by hand after
> > I get kmail started.
>
> As (deliberately, to keep the reply here shorter) explained in the
> reply to your "until" post, the above "while" loop is effectively
> an endless loop, due to the always-true ":" null-command.
>
> It works for what your after, because both branches of the "if"
> have delays (3s sleep if kmail isn't yet up, inotifywait, waiting
> for an event, when kmail is alive). I'm not absolutely sure if
> you discovered that as you tested, or if you just tested and
> went with what worked, not understanding the implications of
> your endless loop. As you said, even a blind man finds an apple
> occasionally...
No, the endless loop was intentional. That way, if kmail disappeared, it
would revert to the wait.
> I had originally thought you'd use until pgrep/pidof..., to wait
> until kmail appeared, then do the other stuff below. However,
> this actually works better, I think, because you accomplish
> in a single loop and an if, what I had in mind to do with two
> loops.
I did have two loops early in the session, but then the lights came on. :)
> Additionally, your version continues to work if you quit
> kmail (or it dies, or you logout of kde/X or it crashes
> so kmail quits as a result), then ultimately restart it, as
> in that case, the script simply switches back to three-second
> polling-for-kmail mode once again, and back to checking
> for mail once it appears again.
>
> That works one way while what I had in mind works another.
> Your way, you run this, as you said, from rc.local, and
> it continues to run, effectively as a daemon. The way
> I had in mind, the test for kmail would have been a
> one-shot, but could have been run either at kde startup
> (as originally discussed) or (with a simple addition that
> starts kmail itself) in place of the normal kmail binary.
I didn't want to putz too much with kmail. It can get all confused when
trying to force it into a one size fits all mold. I have some of those T-
Shirts too. ;-)
> So blind-man or not, I really like that apple you came
> across. It takes a different route than I had in mind,
> but ends up working as well, and arguably better.
>
> The one caveat is that it /is/ an endless loop, effectively
> running as a daemon. And just as with any daemon, in
> ordered to keep it from either interfering with shutdown or
> having to be caught by the the generic kill-anything-left
> logic, I'd suggest creating a daemon-stop script as well,
> that simply terminates this one, and put it in your
> stop-scripts.
A full kill would be both mailwatcher and inotiywait, in that order. But
it appears the kill-anything-left logic also handles it.
> Meanwhile, on the pidof/pgrep topic...
>
> pidof and pgrep are similar in function but different in detail.
>
> pidof is substantially simpler and less flexible, matching ONLY
> on the literal command name (name of the executable or symlink
> to it) itself.
Well, this is a case of needing a quick vim session to change the name(s).
> pgrep is FAR more flexible, not only because like grep it matches
> on regular expressions, but because it can optionally match
> against an entire command line, not just the executable name,
> because it can be
> user/group/terminal/session/oldest/newest/etc-limited, and
> because it can return not only PIDs but also process names
> (useful due to regex search for human consumption, thus
> avoiding an immediate ps to find the name of the returned pids,
> pidof of course operates on process names so returning what was
> fed into it in the first place makes little sense).
>
> So pgrep's hugely more flexible, but where pidof fits the need
> exactly, as here, there's little reason to invoke pgrep with its
> additional complexity.
Spot on I believe.
> Thanks for provoking me to do that comparison. I learned
> something myself by doing so. =:^)
>
> Finally, inotifywait...
>
> While I was aware of inotify, I hadn't really worked with it at
> all and don't even have an inotifywait commandline binary installed
> here. But now that I'm aware of it, a quick package search
> turns up inotify-tools, which presumably contains among other
> things the binary in question. I'll have to install and
> play with it. Thanks for the helpful cluein! =:^)
Be careful with it, and redirect any output path you don't need to
/dev/null. I have contacted the author, a student who was not aware of any
problems, advising him that its spitting some bad control chars out that
can screw up a konsole session pretty badly. But if any fresh release is
made, I suspect it will be after spring semester has been put to bed.
> One thing I've observed over the years that's so great about
> newsgroups and mailing lists is how often helping someone returns
> useful information in the other direction as well. I'm quite
> sure that's one of the reasons I've continued to find them
> so addictive, even as my own knowledge has continued to grow.
> No one knows everything, and one never knows when the next
> post one reads or the next post one replies to trying to help,
> will in turn reveal useful information of its own.
+100.
>
> Often, the useful info returned is simply a better understanding
> of the material one is helping others with. My dad was a teacher
> (now retired tho still volunteering at the local school a few
> days a week, health permitting), and I've never forgotten
> something he said, that the best way to learn something is to try
> to teach it to others. That's certainly true, as time and again
> replies on the newsgroups and lists have forced me to confront
> questions about material I already "knew" that I'd have never
> considered on my own.
:-)
> Other times, it's information I simply didn't know at all,
> previously.
>
> While I've certainly spent several hours replying in this thread,
> by now, both the above have been true. I know more about both
> pidof and pgrep as I've examined them based on your provocation,
> and I've learned about inotify-tools, something I was entirely
> unaware of before, tho I imagine I'd have been able to find
> them if I'd really /really/ needed them. But now I can place
> them in my toolbox to be used at my convenience, and I expect
> I /will/ find reason to use them, whereas otherwise I likely
> wouldn't have. =:^)
Precisely. My problem at my age is in recalling the tool 6 months later
when I need that function again, my short term memory has faded into the
sunset by then, so I find myself re-inventing stuff. And often, I go back
and look at the code 6 months later, and wonder if I was the idiot that
wrote it in the first place. ;-) My re-inventions usually work better
than the original... And if I have somebody to 'talk to', its quite often
that an un-related remark, might contain the seed of a better idea. I can
get into one of those can't see the forest through all these trees moods.
Writers block its been called...
--
Cheers, Gene
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
<http://tinyurl.com/ddg5bz>
<http://www.cantrip.org/gatto.html>
Why do they call a fast a fast, when it goes so slow?
___________________________________________________
This message is from the kde mailing list.
Account management: https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.
More information about the kde
mailing list