[RndTbl] *reading* a file causes reboot

Adam Thompson athompso at athompso.net
Mon May 4 23:20:57 CDT 2015


*xargs -0

Oops.

On May 4, 2015 10:59:28 PM CDT, Adam Thompson <athompso at athompso.net> wrote:
>I've found "find / -xdev -type f -print0 | xargs grep string /dev/null"
>to be completely reliable and reasonably portable.  Not to mention a
>lot faster.  Faster yet if you use any of the #NN arguments to xargs to
>batch the grep invocations.
>I started doing that because every time I ran grep -r, it would just
>hang somewhere in /etc.
>-Adam
>-Adam
>
>On May 4, 2015 10:51:08 PM CDT, Trevor Cordes <trevor at tecnopolis.ca>
>wrote:
>>On 2015-05-04 Gilbert E. Detillieux wrote:
>>> A read on a file in /dev will almost always trigger an action
>>> (usually causing data to be read from a device, of course), but I
>>
>>Hmm, that's a good point.  I suppose a read on a device could "steal"
>>the input another program was expecting.
>>
>>It's strange though, because now that I think about it, when I run
>grep
>>-r /, I'm pretty sure it's not reading all the disk block files, etc,
>>as it runs way too fast for that...
>>
>>Ah, I forgot I had this set as an alias to grep on every system I use:
>>/bin/grep -s --devices=skip
>>
>>I just checked and this new Rackspace box indeed had my alias set!
>>So the plot thickens!  So it's two possibly bugs: why was grep even
>>reading that watchdog device in the first place; and why did reading
>it
>>trigger a reboot?
>>
>>> can end up in symlink-induced loops.  I'd also avoid going
>>
>>I've never actually ended up in a symlink loop, but I can see how it
>>would be easy to run into.  I guess I don't use many dir symlinks on
>my
>>systems.
>>
>>Or... I just RTFM and it looks like gnu grep solved the symlink
>problem
>>already:
>>
>>       -r, --recursive
>>              Read  all  files  under  each  directory,  recursively,
>>following  symbolic links only if they are on the command line.  Note
>>       that if no file operand is given, grep
>>              searches the working directory.  This is equivalent to
>>the -d recurse option.
>>
>>       -R, --dereference-recursive
>>              Read all files under each directory, recursively. 
>Follow
>>              all symbolic links, unlike -r.
>>
>>So that explains why I've never hit a symlink loop: I've never used -R
>>(capital).
>>
>>Ah, even better:
>>       -D ACTION, --devices=ACTION
>>              If  an input file is a device, FIFO or socket, use
>ACTION
>>to process it.  By default, ACTION is read, which means that devices
>>are
>>read just as if they were ordinary
>>              files.  If ACTION is skip, devices are silently skipped.
>>
>>So that means my -D skips every "weird" file.  That means that I've
>>definitely, for sure, hit some bugs here.  There's absolutely nothing
>>now that should stop anyone from safely doing a:
>>
>>grep -r -D skip /
>>
>>on any system with modern gnu grep.
>>
>>The main reason I want to be able to do grep -r / sometimes is that I
>>need to find a string (like an IP address) that may be scattered
>>literally anywhere on the fs.  In the past when I say to myself "oh,
>it
>>must only be in /etc or /var or /home", there ends up being some
>little
>>file in /usr (not even /usr/local) or wherever that was changed ages
>>ago
>>for whatever reason to work around whatever problem, and it gets
>missed
>>unless I just "grep the whole darn thing".  And to ls / and go through
>>the 10-15 items in my brain deciding if they are greppable or 
>>"system/non-greppable" takes time and is error/omission-prone, and to
>>list each one on the command line is a pain.  Now this would be easier
>>with a shell like zsh that has "negative globs" where I could specify
>>"* except /dev /sys" (ie just make an "exclude" list, not an include
>>list), but my beloved tcsh doesn't have that and I'm not ready to
>>switch
>>to zsh yet.  And like I said before, each UNIX has its own different
>>set of "don't grep this" dirs, and they change over time (even in
>>Linux), so making a "one-alias fits all" is a non-solution.
>>_______________________________________________
>>Roundtable mailing list
>>Roundtable at muug.mb.ca
>>http://www.muug.mb.ca/mailman/listinfo/roundtable
>
>-- 
>Sent from my Android device with K-9 Mail. Please excuse my brevity.
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Roundtable mailing list
>Roundtable at muug.mb.ca
>http://www.muug.mb.ca/mailman/listinfo/roundtable

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.muug.mb.ca/pipermail/roundtable/attachments/20150504/26f85a43/attachment-0001.html>


More information about the Roundtable mailing list