Repository: philovivero/distribution Branch: master Commit: 50d6fe2f089c Files: 26 Total size: 219.9 KB Directory structure: gitextract_1pfsqkt6/ ├── .flake8 ├── LICENSE.md ├── README.md ├── VERSION ├── distribution ├── distribution.py ├── distributionrc └── tests/ ├── runTests.sh ├── stderr.01.expected.txt ├── stderr.02.expected.txt ├── stderr.03.expected.txt ├── stderr.04.expected.txt ├── stderr.05.expected.txt ├── stderr.06.expected.txt ├── stderr.07.expected.txt ├── stdin.01.txt ├── stdin.02.txt ├── stdin.03.txt ├── stdin.04.txt ├── stdout.01.expected.txt ├── stdout.02.expected.txt ├── stdout.03.expected.txt ├── stdout.04.expected.txt ├── stdout.05.expected.txt ├── stdout.06.expected.txt └── stdout.07.expected.txt ================================================ FILE CONTENTS ================================================ ================================================ FILE: .flake8 ================================================ [flake8] ignore = E501, W503 ================================================ FILE: LICENSE.md ================================================ GNU GENERAL PUBLIC LICENSE ========================== Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble ======== The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION =============================================================== 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY =========== 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS =========================== ================================================ FILE: README.md ================================================ New Canonical Source ==================== I have taken employment such that it is difficult for me to be the owner of this project. I have transferred control to [the excellent engineer wizzat](https://github.com/wizzat/distribution). Please contribute any PRs, issues, etc to that project rather than this one. Thank you, and it's been good serving you these past years. distribution ============ Short, simple, direct scripts for creating character-based graphs in a command terminal. Status: stable. Features added very rarely. ![diagram](https://raw.github.com/philovivero/distribution/master/screenshot.png?raw=true) Purpose ======= To generate graphs directly in the (ASCII-based) terminal. Most common use-case: if you type `long | list | of | commands | sort | uniq -c | sort -rn` in the terminal, then you could replace the final `| sort | uniq -c | sort -rn` with `| distribution` and very likely be happier with what you see. The tool is mis-named. It was originally for generating histograms (a distribution of the frequency of input tokens) but it has since been expanded to generate time-series graphs (or, in fact, graphs with any arbitrary "x-axis") as well. At first, there will be only two scripts, the originals written in Perl and Python by Tim Ellis. Any other versions people are willing to create will be placed here. The next likely candidate language is C++. There are a few typical use cases for graphs in a terminal as we'll lay out here: ## Tokenize and Graph A stream of ASCII bytes, tokenize it, tally the matching tokens, and graph the result. For this example, assume "file" is a list of words with one word per line, so passing it to "xargs" makes it all-one-line. ``` $ cat file | xargs #put all words on one line this is an arbitrary stream of tokens. this will be graphed with tokens pulled out. this is the first use case. $ cat file | xargs | distribution --tokenize=word --match=word --size=small -v tokens/lines examined: 25 tokens/lines matched: 21 histogram keys: 17 runtime: 8.00ms Key|Ct (Pct) Histogram this|3 (14.29%) -----------------------------------------------------------------------o is|2 (9.52%) ---------------------------------------o tokens|2 (9.52%) ---------------------------------------o graphed|1 (4.76%) -------o will|1 (4.76%) -------o ``` ## Aggregate and Graph An already-tokenised input, one-per-line, tally and graph them. ``` $ cat file | distribution -s=small -v tokens/lines examined: 21 tokens/lines matched: 21 histogram keys: 18 runtime: 14.00ms Key|Ct (Pct) Histogram this|3 (14.29%) -----------------------------------------------------------------------o is|2 (9.52%) ---------------------------------------o graphed|1 (4.76%) -------o be|1 (4.76%) -------o ``` ## Graph Already-Aggregated/Counted Tokens A list of tallies + tokens, one-per-line. Create a graph with labels. This matches the typical output of several Unix commands such as "du." ``` $ du -s /etc/*/ 2>/dev/null | distribution -g -v tokens/lines examined: 107 tokens/lines matched: 5,176 histogram keys: 107 runtime: 2.00ms Key|Ct (Pct) Histogram /etc/ssl/|920 (17.77%) ------------------------------------------- /etc/init.d/|396 (7.65%) ------------------- /etc/apt/|284 (5.49%) ------------- /etc/nagios-plugins/|224 (4.33%) ----------- /etc/cis/|188 (3.63%) --------- /etc/nagios/|180 (3.48%) --------- /etc/fonts/|172 (3.32%) -------- /etc/ssh/|172 (3.32%) -------- /etc/default/|164 (3.17%) -------- /etc/console-setup/|132 (2.55%) ------- ``` ## Graph a List of Integers A list of tallies only. Create a graph without labels. This is typical if you just have a stream of numbers and wonder what they look like. The `--numonly` switch is used to toggle this behaviour. There is a different project: https://github.com/holman/spark that will produce simpler, more-compact graphs. By contrast, this project will produce rather lengthy and verbose graphs with far more resolution, which you may prefer. Features ======== 0. Configurable colourised output. 1. rcfile for your own preferred default commandline options. 2. Full Perl tokenising and regexp matching. 3. Partial-width Unicode characters for high-resolution charts. 4. Configurable chart sizes including "fill up my whole screen." Installation ============ If you use homebrew, `brew install distribution` should do the trick, although if you already have Perl or Python installed, you can simply download the file and put it into your path. To put the script into your homedir on the machine you plan to run the script: ``` $ wget https://raw.githubusercontent.com/philovivero/distribution/master/distribution.py $ sudo mv distribution.py /usr/local/bin/distribution $ alias worddist="distribution -t=word" ``` It is fine to place the script anywhere in your `$PATH`. The worddist alias is useful for asking the script to tokenize the input for you eg `ls -alR | worddist`. Options ======= ``` --keys=K periodically prune hash to K keys (default 5000) --char=C character(s) to use for histogram character, some substitutions follow: pl Use 1/3-width unicode partial lines to simulate 3x actual terminal width pb Use 1/8-width unicode partial blocks to simulate 8x actual terminal width ba (▬) Bar bl (Ξ) Building em (—) Emdash me (⋯) Mid-Elipses di (♦) Diamond dt (•) Dot sq (□) Square --color colourise the output --graph[=G] input is already key/value pairs. vk is default: kv input is ordered key then value vk input is ordered value then key --height=N height of histogram, headers non-inclusive, overrides --size --help get help --logarithmic logarithmic graph --match=RE only match lines (or tokens) that match this regexp, some substitutions follow: word ^[A-Z,a-z]+$ - tokens/lines must be entirely alphabetic num ^\d+$ - tokens/lines must be entirely numeric --numonly[=N] input is numerics, simply graph values without labels actual input is just values (default - abs, absolute are synonymous to actual) diff input monotonically-increasing, graph differences (of 2nd and later values) --palette=P comma-separated list of ANSI colour values for portions of the output in this order: regular, key, count, percent, graph. implies --color. --rcfile=F use this rcfile instead of $HOME/.distributionrc - must be first argument! --size=S size of histogram, can abbreviate to single character, overridden by --width/--height small 40x10 medium 80x20 large 120x30 full terminal width x terminal height (approximately) --tokenize=RE split input on regexp RE and make histogram of all resulting tokens word [^\w] - split on non-word characters like colons, brackets, commas, etc white \s - split on whitespace --width=N width of the histogram report, N characters, overrides --size --verbose be verbose ``` Syslog Analysis Example ======================= You can grab out parts of your syslog ask the script to tokenize on non-word delimiters, then only match words. The verbosity gives you some stats as it works and right before it prints the histogram. ``` $ zcat /var/log/syslog*gz \ | awk '{print $5" "$6}' \ | distribution --tokenize=word --match=word --height=10 --verbose --char=o tokens/lines examined: 16,645 tokens/lines matched: 5,843 histogram keys: 92 runtime: 10.75ms Val |Ct (Pct) Histogram ntop |1818 (31.11%) ooooooooooooooooooooooooooooooooooooooooooooooooooooooo WARNING |1619 (27.71%) ooooooooooooooooooooooooooooooooooooooooooooooooo kernel |1146 (19.61%) ooooooooooooooooooooooooooooooooooo CRON |153 (2.62%) ooooo root |147 (2.52%) ooooo message |99 (1.69%) ooo last |99 (1.69%) ooo ntpd |99 (1.69%) ooo dhclient |88 (1.51%) ooo THREADMGMT|52 (0.89%) oo ``` Process List Example ==================== You can start thinking of normal commands in new ways. For example, you can take your "ps ax" output, get just the command portion, and do a word-analysis on it. You might find some words are rather interesting. In this case, it appears Chrome is doing some sort of A/B testing and their commandline exposes that. ``` $ ps axww \ | cut -c 28- \ | distribution --tokenize=word --match=word --char='|' --width=90 --height=25 Val |Ct (Pct) Histogram usr |100 (6.17%) ||||||||||||||||||||||||||||||||||||||||||||||||||||| lib |73 (4.51%) |||||||||||||||||||||||||||||||||||||| browser |38 (2.35%) |||||||||||||||||||| chromium |38 (2.35%) |||||||||||||||||||| P |32 (1.98%) ||||||||||||||||| daemon |31 (1.91%) ||||||||||||||||| sbin |26 (1.60%) |||||||||||||| gnome |23 (1.42%) |||||||||||| bin |22 (1.36%) |||||||||||| kworker |21 (1.30%) ||||||||||| type |19 (1.17%) |||||||||| gvfs |17 (1.05%) ||||||||| no |17 (1.05%) ||||||||| en |16 (0.99%) ||||||||| indicator |15 (0.93%) |||||||| channel |14 (0.86%) |||||||| bash |14 (0.86%) |||||||| US |14 (0.86%) |||||||| lang |14 (0.86%) |||||||| force |12 (0.74%) ||||||| pluto |12 (0.74%) ||||||| ProxyConnectionImpact |12 (0.74%) ||||||| HiddenExperimentB |12 (0.74%) ||||||| ConnectBackupJobsEnabled|12 (0.74%) ||||||| session |12 (0.74%) ||||||| ``` Graphing Pre-Tallied Tokens Example =================================== Sometimes the output you have is already some keys with their counts. For example the output of "du" or "command | uniq -c". In these cases, use the --graph (-g) option, which skips the parsing and tokenizing of the input. Further, you can use very short versions of the options in case you don't like typing a lot. The default character is "+" because it creates a type of grid system which makes it easy for the eye to trace right/left or up/down. ``` $ sudo du -sb /etc/* | distribution -w=90 -h=15 -g Val |Ct (Pct) Histogram /etc/mateconf |7780758 (44.60%) +++++++++++++++++++++++++++++++++++++++++++++++++ /etc/brltty |3143272 (18.02%) ++++++++++++++++++++ /etc/apparmor.d |1597915 (9.16%) ++++++++++ /etc/bash_completion.d|597836 (3.43%) ++++ /etc/mono |535352 (3.07%) ++++ /etc/ssl |465414 (2.67%) +++ /etc/ardour2 |362303 (2.08%) +++ /etc/X11 |226309 (1.30%) ++ /etc/ImageMagick |202358 (1.16%) ++ /etc/init.d |143281 (0.82%) + /etc/ssh |138042 (0.79%) + /etc/fonts |119862 (0.69%) + /etc/sound |112051 (0.64%) + /etc/xdg |111971 (0.64%) + /etc/java-7-openjdk |100414 (0.58%) + ``` Keys in Natural Order Examples ============================== The output is separated between STDOUT and STDERR so you can sort the resulting histogram by values. This is useful for time series or other cases where the keys you're graphing are in some natural order. Note how the "-v" output still appears at the top. ``` $ cat NotServingRegionException-DateHour.txt \ | distribution -v \ | sort -n tokens/lines examined: 1,414,196 tokens/lines matched: 1,414,196 histogram keys: 453 runtime: 1279.30ms Val |Ct (Pct) Histogram 2012-07-13 03|38360 (2.71%) ++++++++++++++++++++++++ 2012-07-28 21|18293 (1.29%) ++++++++++++ 2012-07-28 23|20748 (1.47%) +++++++++++++ 2012-07-29 06|15692 (1.11%) ++++++++++ 2012-07-29 07|30432 (2.15%) +++++++++++++++++++ 2012-07-29 08|76943 (5.44%) ++++++++++++++++++++++++++++++++++++++++++++++++ 2012-07-29 09|54955 (3.89%) ++++++++++++++++++++++++++++++++++ 2012-07-30 05|15652 (1.11%) ++++++++++ 2012-07-30 09|40102 (2.84%) +++++++++++++++++++++++++ 2012-07-30 10|21718 (1.54%) ++++++++++++++ 2012-07-30 16|16041 (1.13%) ++++++++++ 2012-08-01 09|22740 (1.61%) ++++++++++++++ 2012-08-02 04|31851 (2.25%) ++++++++++++++++++++ 2012-08-02 06|28748 (2.03%) ++++++++++++++++++ 2012-08-02 07|18062 (1.28%) ++++++++++++ 2012-08-02 20|23519 (1.66%) +++++++++++++++ 2012-08-03 03|21587 (1.53%) ++++++++++++++ 2012-08-03 08|33409 (2.36%) +++++++++++++++++++++ 2012-08-03 10|15854 (1.12%) ++++++++++ 2012-08-03 15|29828 (2.11%) +++++++++++++++++++ 2012-08-03 16|20478 (1.45%) +++++++++++++ 2012-08-03 17|39758 (2.81%) +++++++++++++++++++++++++ 2012-08-03 18|19514 (1.38%) ++++++++++++ 2012-08-03 19|18353 (1.30%) ++++++++++++ 2012-08-03 22|18726 (1.32%) ++++++++++++ __________________ $ cat /usr/share/dict/words \ | awk '{print length($1)}' \ | distribution -c=: -w=90 -h=16 \ | sort -n Val|Ct (Pct) Histogram 2 |182 (0.18%) : 3 |845 (0.85%) :::: 4 |3346 (3.37%) :::::::::::::::: 5 |6788 (6.84%) ::::::::::::::::::::::::::::::: 6 |11278 (11.37%) :::::::::::::::::::::::::::::::::::::::::::::::::::: 7 |14787 (14.91%) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 |15674 (15.81%) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 9 |14262 (14.38%) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 10|11546 (11.64%) ::::::::::::::::::::::::::::::::::::::::::::::::::::: 11|8415 (8.49%) ::::::::::::::::::::::::::::::::::::::: 12|5508 (5.55%) ::::::::::::::::::::::::: 13|3236 (3.26%) ::::::::::::::: 14|1679 (1.69%) :::::::: 15|893 (0.90%) ::::: 16|382 (0.39%) :: 17|176 (0.18%) : ``` MySQL Slow Query Log Analysis Examples ====================================== You can sometimes gain interesting insights just by measuring the size of files on your filesystem. Someone had captured slow-query-logs for every hour for most of a day. Assuming they all compressed the same (a proper analysis would be on uncompressed files - uncompressing them would have caused server impact - this is good enough for illustration's sake), we can determine how much slow query traffic appeared during a given hour of the day. Something happened around 8am but otherwise the server seems to follow a normal sinusoidal pattern. But note because we're only analysing the file size, it could be that 8am had the same number of slow queries, but that the queries themselves were larger in byte-count. Or that the queries didn't compress as well. Also note that we aren't seeing every histogram entry here. Always take care to remember the tool is hiding low-frequency data from you unless you ask it to draw uncommonly-tall histograms. ``` $ du -sb mysql-slow.log.*.gz | ~/distribution -g | sort -n Val |Ct (Pct) Histogram mysql-slow.log.01.gz|1426694 (5.38%) ++++++++++++++++++++ mysql-slow.log.02.gz|1499467 (5.65%) +++++++++++++++++++++ mysql-slow.log.03.gz|1840727 (6.94%) ++++++++++++++++++++++++++ mysql-slow.log.04.gz|1570131 (5.92%) ++++++++++++++++++++++ mysql-slow.log.05.gz|1439021 (5.42%) ++++++++++++++++++++ mysql-slow.log.07.gz|859939 (3.24%) ++++++++++++ mysql-slow.log.08.gz|2976177 (11.21%) ++++++++++++++++++++++++++++++++++++++++++ mysql-slow.log.09.gz|792269 (2.99%) +++++++++++ mysql-slow.log.11.gz|722148 (2.72%) ++++++++++ mysql-slow.log.12.gz|825731 (3.11%) ++++++++++++ mysql-slow.log.14.gz|1476023 (5.56%) +++++++++++++++++++++ mysql-slow.log.15.gz|2087129 (7.86%) +++++++++++++++++++++++++++++ mysql-slow.log.16.gz|1905867 (7.18%) +++++++++++++++++++++++++++ mysql-slow.log.19.gz|1314297 (4.95%) +++++++++++++++++++ mysql-slow.log.20.gz|802212 (3.02%) ++++++++++++ ``` A more-proper analysis on another set of slow logs involved actually getting the time the query ran, pulling out the date/hour portion of the timestamp, and graphing the result. At first blush, it might appear someone had captured logs for various hours of one day and at 10am for several days in a row. However, note that the Pct column shows this is only about 20% of all data, which we can also conclude because there are 964 histogram entries, of which we're only seeing a couple dozen. This means something happened on July 31st that caused slow queries all day, and then 10am is a time of day when slow queries tend to happen. To test this theory, we might re-run this with a "--height=600" (or even 900) to see nearly all the entries to get a more precise idea of what's going on. ``` $ zcat mysql-slow.log.*.gz \ | fgrep Time: \ | cut -c 9-17 \ | ~/distribution --width=90 --verbose \ | sort -n tokens/lines examined: 30,027 tokens/lines matched: 30,027 histogram keys: 964 runtime: 1224.58ms Val |Ct (Pct) Histogram 120731 03|274 (0.91%) ++++++++++++++++++++++++++++++++++ 120731 04|210 (0.70%) ++++++++++++++++++++++++++ 120731 07|208 (0.69%) ++++++++++++++++++++++++++ 120731 08|271 (0.90%) +++++++++++++++++++++++++++++++++ 120731 09|403 (1.34%) +++++++++++++++++++++++++++++++++++++++++++++++++ 120731 10|556 (1.85%) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 120731 11|421 (1.40%) +++++++++++++++++++++++++++++++++++++++++++++++++++ 120731 12|293 (0.98%) ++++++++++++++++++++++++++++++++++++ 120731 13|327 (1.09%) ++++++++++++++++++++++++++++++++++++++++ 120731 14|318 (1.06%) +++++++++++++++++++++++++++++++++++++++ 120731 15|446 (1.49%) ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 120731 16|397 (1.32%) ++++++++++++++++++++++++++++++++++++++++++++++++ 120731 17|228 (0.76%) ++++++++++++++++++++++++++++ 120801 10|515 (1.72%) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 120803 10|223 (0.74%) +++++++++++++++++++++++++++ 120809 10|215 (0.72%) ++++++++++++++++++++++++++ 120810 10|210 (0.70%) ++++++++++++++++++++++++++ 120814 10|193 (0.64%) ++++++++++++++++++++++++ 120815 10|205 (0.68%) +++++++++++++++++++++++++ 120816 10|207 (0.69%) +++++++++++++++++++++++++ 120817 10|226 (0.75%) ++++++++++++++++++++++++++++ 120819 10|197 (0.66%) ++++++++++++++++++++++++ ``` A typical problem for MySQL administrators is figuring out how many slow queries are taking how long. The slow query log can be quite verbose. Analysing it in a visual nature can help. For example, there is a line that looks like this in the slow query log: ``` # Query_time: 5.260353 Lock_time: 0.000052 Rows_sent: 0 Rows_examined: 2414 Rows_affected: 1108 Rows_read: 2 ``` It might be useful to see how many queries ran for how long in increments of tenths of seconds. You can grab that third field and get tenth-second precision with a simple awk command, then graph the result. It seems interesting that there are spikes at 3.2, 3.5, 4, 4.3, 4.5 seconds. One hypothesis might be that those are individual queries, each warranting its own analysis. ``` $ head -90000 mysql-slow.log.20120710 \ | fgrep Query_time: \ | awk '{print int($3 * 10)/10}' \ | ~/distribution --verbose --height=30 --char='|o' \ | sort -n tokens/lines examined: 12,269 tokens/lines matched: 12,269 histogram keys: 481 runtime: 12.53ms Val|Ct (Pct) Histogram 0 |1090 (8.88%) ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||o 2 |1018 (8.30%) |||||||||||||||||||||||||||||||||||||||||||||||||||||||||o 2.1|949 (7.73%) |||||||||||||||||||||||||||||||||||||||||||||||||||||o 2.2|653 (5.32%) |||||||||||||||||||||||||||||||||||||o 2.3|552 (4.50%) |||||||||||||||||||||||||||||||o 2.4|554 (4.52%) |||||||||||||||||||||||||||||||o 2.5|473 (3.86%) ||||||||||||||||||||||||||o 2.6|423 (3.45%) ||||||||||||||||||||||||o 2.7|394 (3.21%) ||||||||||||||||||||||o 2.8|278 (2.27%) |||||||||||||||o 2.9|189 (1.54%) ||||||||||o 3 |173 (1.41%) |||||||||o 3.1|193 (1.57%) ||||||||||o 3.2|200 (1.63%) |||||||||||o 3.3|138 (1.12%) |||||||o 3.4|176 (1.43%) ||||||||||o 3.5|213 (1.74%) ||||||||||||o 3.6|157 (1.28%) ||||||||o 3.7|134 (1.09%) |||||||o 3.8|121 (0.99%) ||||||o 3.9|96 (0.78%) |||||o 4 |110 (0.90%) ||||||o 4.1|80 (0.65%) ||||o 4.2|84 (0.68%) ||||o 4.3|90 (0.73%) |||||o 4.4|76 (0.62%) ||||o 4.5|93 (0.76%) |||||o 4.6|79 (0.64%) ||||o 4.7|71 (0.58%) ||||o 5.1|70 (0.57%) |||o ``` Apache Logs Analysis Example ============================ Even if you know sed/awk/grep, the built-in tokenizing/matching can be less verbose. Say you want to look at all the URLs in your Apache logs. People will be doing GET /a/b/c /a/c/f q/r/s q/n/p. A and Q are the most common, so you can tokenize on / and the latter parts of the URL will be buried, statistically. By tokenizing and matching using the script, you may also find unexpected common portions of the URL that don't show up in the prefix. ``` $ zcat access.log*gz \ | awk '{print $7}' \ | distribution -t=/ -h=15 Val |Ct (Pct) Histogram Art |1839 (16.58%) +++++++++++++++++++++++++++++++++++++++++++++++++ Rendered |1596 (14.39%) ++++++++++++++++++++++++++++++++++++++++++ Blender |1499 (13.52%) ++++++++++++++++++++++++++++++++++++++++ AznRigging |760 (6.85%) ++++++++++++++++++++ Music |457 (4.12%) ++++++++++++ Ringtones |388 (3.50%) +++++++++++ CuteStance |280 (2.52%) ++++++++ Traditional |197 (1.78%) ++++++ Technology |171 (1.54%) +++++ CreativeExhaust|134 (1.21%) ++++ Fractals |127 (1.15%) ++++ robots.txt |125 (1.13%) ++++ RingtoneEP1.mp3|125 (1.13%) ++++ Poetry |108 (0.97%) +++ RingtoneEP2.mp3|95 (0.86%) +++ ``` Here we had pulled apart our access logs and put them in TSV format for input into Hive. The user agent string was in the 13th position. I wanted to just get an overall idea of what sort of user agents were coming to the site. I'm using the minimal argument size and my favorite "character" combo of "|o". I find it interesting that there were only 474 unique word-based tokens in the input. Also, it's clear that a large percentage of the visitors come with mobile devices now. ``` $ zcat weblog-2014-05.tsv.gz \ | awk -F '\t' '{print $13}' \ | distribution -t=word -m=word -c='|o' -s=m -v tokens/lines examined: 28,062,913 tokens/lines matched: 11,507,407 histogram keys: 474 runtime: 15659.97ms Val |Ct (Pct) Histogram Mozilla |912852 (7.93%) ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||o like |722945 (6.28%) |||||||||||||||||||||||||||||||||||||||||||||||||||||||||o OS |611503 (5.31%) ||||||||||||||||||||||||||||||||||||||||||||||||o AppleWebKit|605618 (5.26%) |||||||||||||||||||||||||||||||||||||||||||||||o Gecko |535620 (4.65%) ||||||||||||||||||||||||||||||||||||||||||o Windows |484056 (4.21%) ||||||||||||||||||||||||||||||||||||||o NT |483085 (4.20%) ||||||||||||||||||||||||||||||||||||||o KHTML |356730 (3.10%) ||||||||||||||||||||||||||||o Safari |355400 (3.09%) ||||||||||||||||||||||||||||o X |347033 (3.02%) |||||||||||||||||||||||||||o Mac |344205 (2.99%) |||||||||||||||||||||||||||o appversion |300816 (2.61%) |||||||||||||||||||||||o Type |299085 (2.60%) |||||||||||||||||||||||o Connection |299085 (2.60%) |||||||||||||||||||||||o Mobile |282759 (2.46%) ||||||||||||||||||||||o CPU |266837 (2.32%) |||||||||||||||||||||o NET |247418 (2.15%) |||||||||||||||||||o CLR |247418 (2.15%) |||||||||||||||||||o Aspect |242566 (2.11%) |||||||||||||||||||o Ratio |242566 (2.11%) |||||||||||||||||||o ``` And here we had a list of referrers in "referrer [count]" format. They were done one per day, but I wanted a count for January through September, so I used a shell glob to specify all those files for my 'cat'. Distribution will notice that it's getting the same key as previously and just add the new value, so the key "x1" can come in many times and we'll get the aggregate in the output. The referrers have been anonymized here since they are very specific to the company. ``` $ cat referrers-20140* | distribution -v -g=kv -s=m tokens/lines examined: 133,564 tokens/lines matched: 31,498,986 histogram keys: 14,882 runtime: 453.45ms Val |Ct (Pct) Histogram x1 |24313595 (77.19%) ++++++++++++++++++++++++++++++++++++++++++++++++++++ x2 |3430278 (10.89%) ++++++++ x3 |1049996 (3.33%) +++ x4 |210083 (0.67%) + x5 |179554 (0.57%) + x6 |163158 (0.52%) + x7 |129997 (0.41%) + x8 |122725 (0.39%) + x9 |120487 (0.38%) + xa |109085 (0.35%) + xb |99956 (0.32%) + xc |92208 (0.29%) + xd |90017 (0.29%) + xe |79416 (0.25%) + xf |70094 (0.22%) + xg |58089 (0.18%) + xh |52349 (0.17%) + xi |37002 (0.12%) + xj |36651 (0.12%) + xk |32860 (0.10%) + ``` This seems a really good time to use the --logarithmic option, since that top referrer is causing a loss of resolution on the following ones! I'll re-run this for one month. ``` $ cat referrers-201402* | distribution -v -g=kv -s=m -l tokens/lines examined: 23,517 tokens/lines matched: 5,908,765 histogram keys: 5,888 runtime: 78.28ms Val |Ct (Pct) Histogram x1 |4471708 (75.68%) +++++++++++++++++++++++++++++++++++++++++++++++++++++ x2 |670703 (11.35%) ++++++++++++++++++++++++++++++++++++++++++++++ x3 |203489 (3.44%) ++++++++++++++++++++++++++++++++++++++++++ x4 |43751 (0.74%) +++++++++++++++++++++++++++++++++++++ x5 |36211 (0.61%) ++++++++++++++++++++++++++++++++++++ x6 |34589 (0.59%) ++++++++++++++++++++++++++++++++++++ x7 |31279 (0.53%) ++++++++++++++++++++++++++++++++++++ x8 |29596 (0.50%) +++++++++++++++++++++++++++++++++++ x9 |23125 (0.39%) +++++++++++++++++++++++++++++++++++ xa |21429 (0.36%) ++++++++++++++++++++++++++++++++++ xb |19670 (0.33%) ++++++++++++++++++++++++++++++++++ xc |19057 (0.32%) ++++++++++++++++++++++++++++++++++ xd |18945 (0.32%) ++++++++++++++++++++++++++++++++++ xe |18936 (0.32%) ++++++++++++++++++++++++++++++++++ xf |16015 (0.27%) +++++++++++++++++++++++++++++++++ xg |13115 (0.22%) +++++++++++++++++++++++++++++++++ xh |12067 (0.20%) ++++++++++++++++++++++++++++++++ xi |8485 (0.14%) +++++++++++++++++++++++++++++++ xj |7694 (0.13%) +++++++++++++++++++++++++++++++ xk |7199 (0.12%) +++++++++++++++++++++++++++++++ ``` Graphing a Series of Numbers Example ==================================== Suppose you just have a list of integers you want to graph. For example, you've captured a "show global status" for every second for 5 minutes, and you want to grep out just one stat for the five-minute sample and graph it. Or, slightly more-difficult, you want to pull out the series of numbers and only graph the difference between each pair (as in a monotonically-increasing counter). The ```--numonly=``` option takes care of both these cases. This option will override any "height" and simply graph all the numbers, since there's no frequency to dictate which values are more important to graph than others. Therefore there's a lot of output, which is snipped in the example output that follows. The "val" column is simply an ascending list of integers, so you can tell where output was snipped by the jumps in those values. ``` $ grep ^Innodb_data_reads globalStatus*.txt \ | awk '{print $2}' \ | distribution --numonly=mon --char='|+' Val|Ct (Pct) Histogram 1 |0 (0.00%) + 91 |15 (0.05%) + 92 |14 (0.04%) + 93 |30 (0.10%) |+ 94 |11 (0.03%) + 95 |922 (2.93%) |||||||||||||||||||||||||||||||||||||||||||||||||||||||||+ 96 |372 (1.18%) |||||||||||||||||||||||+ 97 |44 (0.14%) ||+ 98 |37 (0.12%) ||+ 99 |110 (0.35%) ||||||+ 100|18 (0.06%) |+ 101|12 (0.04%) + 102|19 (0.06%) |+ 103|164 (0.52%) ||||||||||+ 200|62 (0.20%) |||+ 201|372 (1.18%) |||||||||||||||||||||||+ 202|228 (0.72%) ||||||||||||||+ 203|43 (0.14%) ||+ 204|917 (2.91%) ||||||||||||||||||||||||||||||||||||||||||||||||||||||||+ 205|64 (0.20%) |||+ 206|178 (0.57%) |||||||||||+ 207|90 (0.29%) |||||+ 208|90 (0.29%) |||||+ 209|101 (0.32%) ||||||+ 453|0 (0.00%) + 454|0 (0.00%) + ``` The Python version eschews the header and superfluous "key" as the Perl version will probably also soon do: ``` $ cat ~/tmp/numberSeries.txt | xargs 01 05 06 09 12 22 28 32 34 30 37 44 48 54 63 70 78 82 85 88 89 89 90 92 95 $ cat ~/tmp/numberSeries.txt \ | ~/Dev/distribution/distribution.py --numonly -c='|o' -s=s 5 (0.39%) ||o 6 (0.47%) ||o 9 (0.70%) ||||o 12 (0.94%) |||||o 22 (1.71%) ||||||||||o 28 (2.18%) |||||||||||||o 32 (2.49%) |||||||||||||||o 34 (2.65%) ||||||||||||||||o 30 (2.34%) ||||||||||||||o 37 (2.88%) |||||||||||||||||o 44 (3.43%) ||||||||||||||||||||o 48 (3.74%) ||||||||||||||||||||||o 54 (4.21%) |||||||||||||||||||||||||o 63 (4.91%) |||||||||||||||||||||||||||||o 70 (5.46%) |||||||||||||||||||||||||||||||||o 78 (6.08%) ||||||||||||||||||||||||||||||||||||o 82 (6.39%) ||||||||||||||||||||||||||||||||||||||o 85 (6.63%) ||||||||||||||||||||||||||||||||||||||||o 88 (6.86%) |||||||||||||||||||||||||||||||||||||||||o 89 (6.94%) ||||||||||||||||||||||||||||||||||||||||||o 89 (6.94%) ||||||||||||||||||||||||||||||||||||||||||o 90 (7.01%) ||||||||||||||||||||||||||||||||||||||||||o 92 (7.17%) |||||||||||||||||||||||||||||||||||||||||||o 95 (7.40%) |||||||||||||||||||||||||||||||||||||||||||||o $ cat ~/tmp/numberSeries.txt \ | ~/Dev/distribution/distribution.py --numonly=diff -c='|o' -s=s 4 (4.26%) ||||||||||||||||||o 1 (1.06%) ||||o 3 (3.19%) |||||||||||||o 3 (3.19%) |||||||||||||o 10 (10.64%) |||||||||||||||||||||||||||||||||||||||||||||o 6 (6.38%) |||||||||||||||||||||||||||o 4 (4.26%) ||||||||||||||||||o 2 (2.13%) |||||||||o -4 (-4.26%) o 7 (7.45%) |||||||||||||||||||||||||||||||o 7 (7.45%) |||||||||||||||||||||||||||||||o 4 (4.26%) ||||||||||||||||||o 6 (6.38%) |||||||||||||||||||||||||||o 9 (9.57%) ||||||||||||||||||||||||||||||||||||||||o 7 (7.45%) |||||||||||||||||||||||||||||||o 8 (8.51%) ||||||||||||||||||||||||||||||||||||o 4 (4.26%) ||||||||||||||||||o 3 (3.19%) |||||||||||||o 3 (3.19%) |||||||||||||o 1 (1.06%) ||||o 0 (0.00%) o 1 (1.06%) ||||o 2 (2.13%) |||||||||o 3 (3.19%) |||||||||||||o ``` HDFS DU Example =============== HDFS files are often rather large, so I first change the numeric file size to megabytes by dividing by 1048576. I must also change it to an int value, since distribution doesn't currently deal with non-integer counts. Also, we are pre-parsing the du output to give us only the megabytes count and the final entry in the filename. `awk -F /` supports that. ``` $ hdfs dfs -du /apps/hive/warehouse/aedb/hitcounts_byday/cookie_type=shopper \ | awk -F / '{print int($1/1048576) " " $8}' \ | distribution -g -c='-~' --height=20 \ | sort Key|Ct (Pct) Histogram dt=2014-11-15|3265438 (2.53%) ----------------------------------------------~ dt=2014-11-16|3241614 (2.51%) ----------------------------------------------~ dt=2014-11-20|2964636 (2.29%) ------------------------------------------~ dt=2014-11-21|3049912 (2.36%) -------------------------------------------~ dt=2014-11-22|3292621 (2.55%) -----------------------------------------------~ dt=2014-11-23|3319538 (2.57%) -----------------------------------------------~ dt=2014-11-24|3070654 (2.38%) -------------------------------------------~ dt=2014-11-25|3086090 (2.39%) --------------------------------------------~ dt=2014-11-27|3113888 (2.41%) --------------------------------------------~ dt=2014-11-28|3124426 (2.42%) --------------------------------------------~ dt=2014-11-29|3431859 (2.66%) -------------------------------------------------~ dt=2014-11-30|3391117 (2.62%) ------------------------------------------------~ dt=2014-12-01|3167744 (2.45%) ---------------------------------------------~ dt=2014-12-02|3134248 (2.43%) --------------------------------------------~ dt=2014-12-03|3023733 (2.34%) -------------------------------------------~ dt=2014-12-04|3022274 (2.34%) -------------------------------------------~ dt=2014-12-05|3040776 (2.35%) -------------------------------------------~ dt=2014-12-06|3054159 (2.36%) -------------------------------------------~ dt=2014-12-09|3065252 (2.37%) -------------------------------------------~ dt=2014-12-10|3316703 (2.57%) -----------------------------------------------~ ``` Running Tests ============= The `tests` directory contains sample input and output files, as well as a script to verify expected output based on the sample inputs. To use it, first export an environment variable called `distribution` that points to the location of your distribution executable. The script must be run from the `tests` directory. For example, the following will run tests against the Perl script and then against the Python script: cd tests/ distribution=../distribution ./runTests.sh distribution=../distribution.py ./runTests.sh The `runTests.sh` script takes one optional argument, `-v`. This enables verbose mode, which prints out any differences in the stderr of the test runs, for comparing diagnostic info. To-Do List ========== New features are unlikely to be added, as the existing functionality is already arguably a superset of what's necessary. Still, there are some things that need to be done. * No Time::HiRes Perl module? Don't die. Much harder than it should be. Negated by next to-do. * Get scripts into package managers. Porting ======= Perl and Python are fairly common, but I'm not sure 100% of systems out there have them. A C/C++ port would be most welcome. If you write a port, send me a pull request so I can include it in this repo. Port requirements: from the user's point of view, it's the exact same script. They pass in the same options in the same way, and get the same output, byte-for-byte if possible. This means you'll need (Perl) regexp support in your language of choice. Also a hash map structure makes the implementation simple, but more-efficient methods are welcome. I imagine, in order of nice-to-haveness: * C or C++ * Go * Lisp * Ocaml * Java * Ruby List of known ports ------------------- 1. [go-distribution](https://github.com/bradfordboyle/go-distribution) Authors ======= * Tim Ellis * Philo Vivero * Taylor Stearns ================================================ FILE: VERSION ================================================ 1.2.2 ================================================ FILE: distribution ================================================ #!/usr/bin/env perl # vim: set noexpandtab sw=4 ts=4: # -- # A recent battle with vim and a Go program finally settled this for me. # Tabs for indent, spaces for formatting. If you change your shiftwidth and # tabstop to different values and your code looks ugly, say aloud: tabs # for indent, spaces for formatting. # distribution - creates histograms based on input # # Version 1.0 # # Written by Tim Ellis of Fifth Sigma, Inc. # Copyright (c) 2012-2014 by Tim Ellis # Released under the terms of GNU GPLv2: # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program; if not, visit http://www.gnu.org/licenses/gpl-2.0.html in your # web browser. # # If you're still living in the 1800's, you can instead write to: # # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. use warnings; use strict; # Time::HiRes will be used if found, to provide more precise timings # with --verbose. BEGIN { eval { require Time::HiRes; Time::HiRes->import('time'); 1; }; } # for determining how long this program ran my $startTime = time() * 1000; # defaults - overridden first by distributionrc then by commandline options my $size = ''; my $width = 80; my $height = 15; my $widthArg = 0; my $heightArg = 0; my $logarithmic = 0; # every keyPruneInterval keys, prune the hash to maxKeys top keys my $keyPruneInterval = 1500000; my $maxKeys = 5000; my $numOnly = ''; my $histogramChar = "-"; my $unicode = 0; my $tokenize = 0; # by default, everything matches (nothing is stripped out) my $matchRegexp = "."; # status and summary statistics my $verbose = 0; # how often to give status if verbose my $statInterval = 1.0; my $numPrunes = 0; # whether or not to parse input into bins (if data is pre-summarised and we're # just presenting results) my $graphValues = ""; # variables to support colourised output my $colourisedOutput = 0; my $colourPalette = '0,0,32,35,34'; my $regularColour = ""; my $keyColour = ""; my $ctColour = ""; my $pctColour = ""; my $graphColour = ""; # we'll re-use inLine at various times for reading files my $inLine; # if they want an rcfile, must be first arg my $rcFile = $ENV{"HOME"} . "/.distributionrc"; if (@ARGV && $ARGV[0] =~ /^-+r(cfile)*=(.+)$/) { $rcFile = $2; } # read in rcfile if it exists - it'll just be args if (open (IFILE, "< $rcFile")) { while ($inLine = ) { chomp ($inLine); # must put args from rcfile at start so options passed on the # commandline will override them unshift (@ARGV, $inLine); } } # process input arguments -- any arguments that aren't known switches are stuck # onto @extraArgs - note that you can have one or two dashes before the option, # and only need the first character. also options that take values and switches # can be overloaded, so -c=o -c means use the o character and colourise the # output. this can be confusing. my @extraArgs; foreach my $arg (@ARGV) { if ($arg =~ /^-+h(elp)*$/) { doArgs(); exit 0; } elsif ($arg =~ /^-+w(idth)*=(.+)$/) { $widthArg = $2; } elsif ($arg =~ /^-+h(eight)*=(.+)$/) { $heightArg = $2; } elsif ($arg =~ /^-+k(eys)*=(.+)$/) { $maxKeys = $2; } # --char takes option... elsif ($arg =~ /^-+c(har)*=(.+)$/) { $histogramChar = $2; } # ...--color doesn't. elsif ($arg =~ /^-+c(olor)*$/) { $colourisedOutput = 1; } # can pass --graph without option, will default to value/key ordering # since Unix prefers that for piping-to-sort reasons elsif ($arg =~ /^-+g(raph)*=(.+)$/) { $graphValues = $2; } elsif ($arg =~ /^-+g(raph)*$/) { $graphValues = 'vk'; } elsif ($arg =~ /^-+l(ogarithmic)*$/) { $logarithmic = 2; } # can pass --numonly without option elsif ($arg =~ /^-+n(umonly)$/) { $numOnly = 'abs'; } elsif ($arg =~ /^-+n(umonly)*=(.+)$/) { $numOnly = $2; } # palette is a comma-separated list of ANSI colour values elsif ($arg =~ /^-+p(alette)*=(.+)$/) { $colourPalette = $2; $colourisedOutput = 1; } # size has somewhat complex override semantics including some # non-obvious ones like if passing --numonly for example elsif ($arg =~ /^-+s(ize)*=(.+)$/) { $size = $2; } # tokenize the input based on Perl regexp elsif ($arg =~ /^-+t(okenize)*=(.+)$/) { $tokenize = $2; } # match tokens based on Perl regexp elsif ($arg =~ /^-+m(atch)*=(.+)$/) { $matchRegexp = $2; } elsif ($arg =~ /^-+v(erbose)*$/) { $verbose = 1; } else { push (@extraArgs, $arg); } } # variables to support colourised output if ($colourisedOutput) { # input should be comma-separated list of numerals my @cp = split (',', $colourPalette); # add ANSI colour commands around the values - final looks like ^[[32m for (my $i=0; $i < scalar @cp; $i++) { $cp[$i] = chr(27) . '[' . $cp[$i] . 'm'; } ($regularColour, $keyColour, $ctColour, $pctColour, $graphColour) = @cp; } # for advanced graphing my $verticalBlocks = ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"]; # for future? my $partialBlocks = ["▏", "▎", "▍", "▌", "▋", "▊", "▉", "█"]; # char=pb my $partialCircles = ["◖", "●"]; # char=pc my $partialLines = ["╸", "╾", "━"]; # char=pl # some useful substitutions for prettiness if ($histogramChar eq "ba") { $unicode = 1; $histogramChar = "▬"; } elsif ($histogramChar eq "bl") { $unicode = 1; $histogramChar = "Ξ"; } elsif ($histogramChar eq "em") { $unicode = 1; $histogramChar = "—"; } elsif ($histogramChar eq "me") { $unicode = 1; $histogramChar = "⋯"; } elsif ($histogramChar eq "di") { $unicode = 1; $histogramChar = "♦"; } elsif ($histogramChar eq "dt") { $unicode = 1; $histogramChar = "•"; } elsif ($histogramChar eq "sq") { $unicode = 1; $histogramChar = "□"; } # high-bit set means we're not in ASCIIland anymore if (ord (substr ($histogramChar, 0, 1)) >= 128) { $unicode = 1; } # sub-full character width graphing systems my $charWidth = 1; my $graphChars = undef; if ($histogramChar eq "pb") { $charWidth = 0.125; $graphChars = $partialBlocks; } elsif ($histogramChar eq "pl") { $charWidth = 0.3334; $graphChars = $partialLines; } # some useful regexp replacements if ($matchRegexp eq 'word') { $matchRegexp = '^[A-Z,a-z]+$'; } elsif ($matchRegexp eq 'num') { $matchRegexp = '^\d+$'; } if ($tokenize eq 'word') { $tokenize = '[^\w]'; } elsif ($tokenize eq 'white') { $tokenize = '\s'; } # set the heigh/width of the histogram based on size input, # this is the lowest level of height/width priority if ($size =~ /^f/) { $width = int (`tput cols` * 0.99); if ($width < 80) { $width = 80; } $height = int (`tput lines` - 3); if ($verbose) { $height -= 4; } if ($height < 20) { $height = 20; } } elsif ($size =~ /^s/) { $width = 60; $height = 10; } elsif ($size =~ /^m/) { $width = 100; $height = 20; } elsif ($size =~ /^l/) { $width = 140; $height = 35; } # if they passed in --width or --height, they probably meant it moreso than # defaults or the --size parameter - so code this last if ($widthArg) { $width = $widthArg; } if ($heightArg) { $height = $heightArg; } # maxKeys should be at least a few thousand greater than height to reduce odds # of throwing away high-count values that appear sparingly in the data if ($maxKeys < $height + 3000) { $maxKeys = $height + 3000; print STDERR "Updated maxKeys to $maxKeys (height + 3000)\n"; } my $nextStat = time() + $statInterval; my $valuesDict; my $totalValues = 0; my $totalObjects = 0; my $graphVal = 0; my $maxVal = 0; # build the dict/map/hash of input values in one of the three modes of operation if ($numOnly) { readNumerics(); } elsif ($graphValues) { readPretalliedTokens(); } else { readLinesBuildHash(); } # see if there was input checkValuesObjects(); my $totalKeys; my @sortedKeys; # if we're just graphing a bunch of numbers, no need to sort # the values dict/map/hash if ($numOnly) { # here we sort on KEYS not VALUES like other cases @sortedKeys = sortKeysByKey(); # we graph everything we're given - throw away nothing! this overrides # --height or --size options! it is the highest priority height directive $height = $totalObjects; } else { # build the sorted dict/map/hash @sortedKeys = sortKeysByValueFrequency(); $maxVal = $valuesDict->{$sortedKeys[0]}; } # if there aren't height # of distinct values, choose the number # of values so the loop later on doesn't have to check for special # cases $totalKeys = scalar @sortedKeys; if ($totalKeys < $height) { $height = $totalKeys; } # for logarithmic graphs my $maxLog = 0; if ($logarithmic) { $maxLog = log($maxVal); } my $i; my $j; my $keyText; my $ctText; my $pctText; my $preBarLen; my $barWidth; my $maxPreBarLen = 0; my $maxKeyLen = 0; # here is the complex part - read it carefully for ($i = 0; $i < $height; $i++) { # print the i'th most-common key $keyText->[$i] = $sortedKeys[$i]; # how many times this key occurred in the input my $count = $valuesDict->{$sortedKeys[$i]}; # determine the bar width based on key occurence if ($logarithmic) { if ($count > 0) { $barWidth->[$i] = log($count) / $maxLog; } else { $barWidth->[$i] = 0; } } else { $barWidth->[$i] = $count / $maxVal; } # determine the percent of key frequency my $percentile = $count / $totalValues * 100; # graph axis labels, really $ctText->[$i] = sprintf ("%d", $count); $pctText->[$i] = sprintf ("(%3.02f%%)", $percentile); $preBarLen = length ($ctText->[$i]) + length ($pctText->[$i]); # determine the longest key name and longest count/percent text for # aligning the output if ($preBarLen > $maxPreBarLen) { $maxPreBarLen = $preBarLen; } if (length ($sortedKeys[$i]) > $maxKeyLen) { $maxKeyLen = length ($sortedKeys[$i]); } } my $endTime = time() * 1000; my $totalMillis = sprintf ("%.2f", ($endTime - $startTime)); # TODO: Collect stats on histogram keys, like how many times maxKeys was # reached and pruned, and present them here. For now that seems complicated # for the end-user, so I'll wait until there's a feature request if ($verbose) { print STDERR "tokens/lines examined: " . addCommas($totalObjects) . " \n"; print STDERR " tokens/lines matched: " . addCommas($totalValues) . "\n"; print STDERR " histogram keys: " . addCommas($totalKeys) . "\n"; print STDERR " runtime: " . addCommas($totalMillis) . "ms\n"; } # almost done now! outputGraph(); exit 0; # --------------------------------------------------------------------------- # # subroutines # --------------------------------------------------------------------------- # # get the keys ordered - we'll only print the most common keys sub sortKeysByValueFrequency { # sort first by the value of a key, then by the key itself in case of a tie. # this allows us to create deterministic sorts when we have multiple entries # in our histogram with the same frequency. particularly important given that # perl intentionally randomizes the order of dictionary keys, so not even a # stable sort would save us. my @sortedKeys = reverse sort { int($valuesDict->{$a}) <=> int($valuesDict->{$b}) || $a cmp $b } keys %{$valuesDict}; return @sortedKeys; } # keep only the most maxKeys keys sub pruneKeys { my $newDict; my $numKeysTransferred = 0; foreach my $key (&sortKeysByValueFrequency) { $newDict->{$key} = $valuesDict->{$key}; $numKeysTransferred++; last if ($numKeysTransferred > $maxKeys); } $valuesDict = $newDict; $numPrunes++; } # get the keys ordered simply by key sub sortKeysByKey { my @sortedKeys = sort { int($a) <=> int($b) } keys %{$valuesDict}; return @sortedKeys; } # here we just pull in a stream of numerics and graph them, optionally graphing # the difference between each pair of values sub readNumerics { # monotonically-increasing pairs, must have at least one value my $lastVal = undef; while ($inLine = ) { chomp ($inLine); if ($numOnly =~ /^m/i || $numOnly =~ /^d/i) { if (defined $lastVal) { $graphVal = $inLine - $lastVal; $totalValues += $graphVal; $totalObjects++; } $lastVal = $inLine; } else { $graphVal= $inLine; $totalValues += $inLine; $totalObjects++; } if ($graphVal > $maxVal) { $maxVal = $graphVal; } # we just build a list where the keys are line num and values are the # value if ($totalObjects > 0) { $valuesDict->{$totalObjects} = $graphVal; } } } # read in lines and build dict/map/hash object from it sub readLinesBuildHash { my $pruneObjects = 0; while ($inLine = ) { chomp($inLine); if ($tokenize) { # in this case we break the line into tokens and tally them foreach my $lineToken (split (/$tokenize/, $inLine)) { $totalObjects++; if ($lineToken =~ /$matchRegexp/) { $valuesDict->{$lineToken}++; $totalValues++; $pruneObjects++; } } } else { # in this case the entire line is the token to be tallied $totalObjects++; if ($inLine =~ /$matchRegexp/) { $valuesDict->{$inLine}++; $totalValues++; $pruneObjects++; } } if ($verbose && time() > $nextStat) { print STDERR "tokens/lines examined: " . addCommas($totalObjects) . "... ; hash prunes: $numPrunes" . chr(13); $nextStat = time() + $statInterval; } if ($pruneObjects >= $keyPruneInterval) { pruneKeys(); $pruneObjects = 0; } } } # here is the case where we don't need to put the input into bins and tally - # the data is pre-tallied for us sub readPretalliedTokens { while ($inLine = ) { chomp ($inLine); if ($graphValues eq 'vk') { if ($inLine =~ /^\s*(\d+)\s+(.+)$/) { $valuesDict->{$2} += $1; $totalValues += $1; if ($1 > $maxVal) { $maxVal = $1; } $totalObjects++; } else { print STDERR " E Input malformed+discarded (perhaps pass -g=kv?): $inLine\n"; } } elsif ($graphValues eq 'kv') { if ($inLine =~ /^(.+?)\s+(\d+)$/) { $valuesDict->{$1} += $2; $totalValues += $2; if ($2 > $maxVal) { $maxVal = $2; } $totalObjects++; } else { print STDERR " E Input malformed+discarded (perhaps pass -g=vk?): $inLine\n"; } } } } # see if there was input sub checkValuesObjects { # the input may be empty. or we may have been too strict on the # matching regexp passed in. either way, we were left with nothing. if ($totalValues == 0) { if ($totalObjects > 0) { print STDERR "All input filtered! "; } else { print STDERR "No input! "; } print STDERR "No histogram for you. Sorry?\n"; exit 255; } } # make a number filled with commas - humans hate to see a number like # 18008675309. is that 180M or 1.8B? look again. 18B. sub addCommas { my $theNumber = shift; $theNumber = reverse $theNumber; $theNumber =~ s<(\d\d\d)(?=\d)(?!\d*\.)><$1,>g; return reverse $theNumber; } # the following arrays, hashes, variables must be correct for this to work # keyText->[] - list of the keys # pctText->[] - list of the percents # ctText->[] - list of the counts # barWidth->[] - list of the widths of the bars sub outputGraph { # print a header with alignment from key names for ($j = 4; $j <= $maxKeyLen; $j++) { print STDERR " "; } print STDERR "Key"; print STDERR "|Ct (Pct)"; for ($j = 7; $j <= $maxPreBarLen; $j++) { print STDERR " "; } print STDERR "Histogram"; # get ready for the output, but sorting gets hosed if we print the # colour code before the key, so put it on the line before print STDERR "$keyColour\n"; # amount of other output reduces possible size of bar - alas my $maxBarWidth = $width - $maxPreBarLen - $maxKeyLen - 4; for ($i = 0; $i < $height; $i++) { # first the key that we aggregated for ($j = length ($keyText->[$i]); $j < $maxKeyLen; $j++) { print " "; } print $keyText->[$i]; print $regularColour; # alignment # separater between keys and count/pct print "|"; print $ctColour; print $ctText->[$i] . " "; print $pctColour; print $pctText->[$i]; # spaces 'til time to print the bar for ($j = length ($ctText->[$i]) + length ($pctText->[$i]); $j <= $maxPreBarLen; $j++) { print " "; } print $graphColour; for ($j = 0; $j < int ($barWidth->[$i] * $maxBarWidth); $j++) { if ($charWidth < 1) { # print out maximum-width character (always last in array) print $graphChars->[scalar @$graphChars - 1]; } else { # we're printing regular non-unicode characters if (length ($histogramChar) > 1 && !$unicode) { # but still we have >1 byte! so print initial byte # for all but the last character (printed outside loop) print substr ($histogramChar, 0, 1); } else { print $histogramChar; } } } # print one too many bar characters so we always see something if ($charWidth < 1) { # if we have partial-width characters, get higher resolution my $remainder = ($barWidth->[$i] * $maxBarWidth) - int ($barWidth->[$i] * $maxBarWidth); my $whichChar = int ($remainder / $charWidth); if ($barWidth->[$i] * $maxBarWidth > $charWidth) { # we have more than charWidth remainder, so print out a # remainder portion print $graphChars->[$whichChar]; } else { # we had minimum remainder, so print minimum-width # character just print the minimum-width portion print $graphChars->[0]; } } else { # we're printing regular non-unicode characters if (length ($histogramChar) > 1 && !$unicode) { # but still we have >1 byte! so print final byte of input string print substr ($histogramChar, -1, 1); } else { print $histogramChar; } } # FIXME: even with all these colour-printing antics, still one key will # be printed with the wrong colour on sorted output most of the time, # but i have no idea how to fix this other than to implement sorting of # the output within the script itself. if ($i == $height - 1) { # put the terminal back into a normal-colour mode on last entry print "$regularColour\n"; } else { # we do these antics of printing $keyColour on the line before # the key so that piping output to sort will work print "$keyColour\n"; } } } # usage sub doArgs { print "\n"; print "usage: | $0\n"; print " [--rcfile=]\n"; print " [--size={sm|med|lg|full} | --width= --height=]\n"; print " [--color] [--palette=r,k,c,p,g]\n"; print " [--tokenize=]\n"; print " [--graph[=[kv|vk]] [--numonly[=derivative,diff|abs,absolute,actual]]\n"; print " [--char=|]\n"; print " [--help] [--verbose]\n"; print " --keys=K every $keyPruneInterval values added, prune hash to K keys (default 5000)\n"; print " --char=C character(s) to use for histogram character, some substitutions follow:\n"; print " pl Use 1/3-width unicode partial lines to simulate 3x actual terminal width\n"; print " pb Use 1/8-width unicode partial blocks to simulate 8x actual terminal width\n"; print " ba (▬) Bar\n"; print " bl (Ξ) Building\n"; print " em (—) Emdash\n"; print " me (⋯) Mid-Elipses\n"; print " di (♦) Diamond\n"; print " dt (•) Dot\n"; print " sq (□) Square\n"; print " --color colourise the output\n"; print " --graph[=G] input is already key/value pairs. vk is default:\n"; print " kv input is ordered key then value\n"; print " vk input is ordered value then key\n"; print " --height=N height of histogram, headers non-inclusive, overrides --size\n"; print " --help get help\n"; print " --logarithmic logarithmic graph\n"; print " --match=RE only match lines (or tokens) that match this regexp, some substitutions follow:\n"; print " word ^[A-Z,a-z]+\$ - tokens/lines must be entirely alphabetic\n"; print " num ^\\d+\$ - tokens/lines must be entirely numeric\n"; print " --numonly[=N] input is numerics, simply graph values without labels\n"; print " actual input is just values (default - abs, absolute are synonymous to actual)\n"; print " diff input monotonically-increasing, graph differences (of 2nd and later values)\n"; print " --palette=P comma-separated list of ANSI colour values for portions of the output\n"; print " in this order: regular, key, count, percent, graph. implies --color.\n"; print " --rcfile=F use this rcfile instead of \$HOME/.distributionrc - must be first argument!\n"; print " --size=S size of histogram, can abbreviate to single character, overridden by --width/--height\n"; print " small 40x10\n"; print " medium 80x20\n"; print " large 120x30\n"; print " full terminal width x terminal height (approximately)\n"; print " --tokenize=RE split input on regexp RE and make histogram of all resulting tokens\n"; print " word [^\\w] - split on non-word characters like colons, brackets, commas, etc\n"; print " white \\s - split on whitespace\n"; print " --width=N width of the histogram report, N characters, overrides --size\n"; print " --verbose be verbose\n"; print "\n"; print "You can use single-characters options, like so: -h=25 -w=20 -v. You must still include the =\n"; print "\n"; print "Samples:\n"; print " du -sb /etc/* | $0 --palette=0,37,34,33,32 --graph\n"; print " du -sk /etc/* | awk '{print \$2\" \"\$1}' | $0 --graph=kv\n"; print " zcat /var/log/syslog*gz | $0 --char=o --tokenize=white\n"; print " zcat /var/log/syslog*gz | awk '{print \$5}' | $0 --t=word --m-word --h=15 --c=/\n"; print " zcat /var/log/syslog*gz | cut -c 1-9 | $0 --width=60 --height=10 --char=em\n"; print " find /etc -type f | cut -c 6- | $0 --tokenize=/ --w=90 --h=35 --c=dt\n"; print " cat /usr/share/dict/words | awk '{print length(\$1)}' | $0 --c=* --w=50 --h=10 | sort -n\n"; print "\n"; } ================================================ FILE: distribution.py ================================================ #! /usr/bin/env python3 """ Generate Graphs Directly in the (ASCII- or Unicode-based) Terminal If you find yourself typing: [long | list | of | commands | sort | uniq -c | sort -rn] Replace: [| sort | uniq -c | sort -rn] With: [| distribution] Then bask in the glory of your new-found data visualization. There are other use cases as well. """ import math import os import re import shutil import sys import time from pathlib import Path class Histogram: """ Takes the tokenDict built in the InputReader class and goes through it, printing a histogram for each of the highest height entries """ def __init__(self): pass def histogram_bar(self, s, histWidth, maxVal, barVal): # given a value and max, return string for histogram bar of the proper # number of characters, including unicode partial-width characters returnBar = "" # first case is partial-width chars if s.charWidth < 1: zeroChar = s.graphChars[-1] elif len(s.histogramChar) > 1 and not s.unicodeMode: zeroChar = s.histogramChar[0] oneChar = s.histogramChar[1] else: zeroChar = s.histogramChar oneChar = s.histogramChar # write out the full-width integer portion of the histogram if s.logarithmic: maxLog = math.log(maxVal) barLog = math.log(barVal) if barVal > 0 else 0 intWidth = int(barLog / maxLog * histWidth) remainderWidth = (barLog / maxLog * histWidth) - intWidth else: intWidth = int(barVal * 1.0 / maxVal * histWidth) remainderWidth = (barVal * 1.0 / maxVal * histWidth) - intWidth # write the zeroeth character intWidth times... returnBar += zeroChar * intWidth # we always have at least one remaining char for histogram - if # we have full-width chars, then just print it, otherwise do a # calculation of how much remainder we need to print # # FIXME: The remainder partial char printed does not take into # account logarithmic scale (can humans notice?). if s.charWidth == 1: returnBar += oneChar elif s.charWidth < 1: # this is high-resolution, so figure out what remainder we # have to represent if remainderWidth > s.charWidth: whichChar = int(remainderWidth / s.charWidth) returnBar += s.graphChars[whichChar] return returnBar def write_hist(self, s, tokenDict): maxTokenLen = 0 outputDict = {} numItems = 0 maxVal = 0 s.totalValues = int(s.totalValues) # given a dict, create a comparison tuple that sorts first by the value of a key, # then by the key itself in case of a tie. this allows us to create deterministic sorts # when we have multiple entries in our histogram with the same frequency. def value_key_compare(dict): return lambda key: (dict.get(key), key) for k in sorted(tokenDict, key=value_key_compare(tokenDict), reverse=True): # can't remember what feature "if k:" adds - i think there's an # off-by-one death the script sometimes suffers without it. if k: outputDict[k] = tokenDict[k] if len(str(k)) > maxTokenLen: maxTokenLen = len(str(k)) if outputDict[k] > maxVal: maxVal = outputDict[k] numItems += 1 if numItems >= s.height: break s.endTime = int(time.time() * 1000) totalMillis = s.endTime - s.startTime if s.verbose: sys.stderr.write(f"tokens/lines examined: {s.totalObjects:,d}\n") sys.stderr.write(f" tokens/lines matched: {s.totalValues:,d}\n") sys.stderr.write(f" histogram keys: {len(tokenDict):,d}\n") sys.stderr.write(f" runtime: {totalMillis:,.2f}ms\n") # the first entry will determine these values maxValueWidth = 0 maxPctWidth = 0 sortedOutput = sorted( outputDict, key=value_key_compare(outputDict), reverse=True ) for i in range(0, len(sortedOutput)): k = sortedOutput[i] # can't remember what feature "if k:" adds - i think there's an # off-by-one death the script sometimes suffers without it. if k: if maxValueWidth == 0: testString = f"{outputDict[k]}" maxValueWidth = len(testString) testString = f"({outputDict[k] * 1.0 / s.totalValues * 100:2.2f}%)" maxPctWidth = len(testString) # we always output a single histogram char at the end, so # we output one less than actual number here histWidth = ( s.width - (maxTokenLen + 1) - (maxValueWidth + 1) - (maxPctWidth + 1) - 1 ) # output a header sys.stderr.write("Key".rjust(maxTokenLen) + "|") sys.stderr.write("Ct".ljust(maxValueWidth) + " ") sys.stderr.write("(Pct)".ljust(maxPctWidth) + " ") sys.stderr.write("Histogram") # get ready for the output, but sorting gets hosed if we print the # colour code before the key, so put it on the line before sys.stderr.write(s.keyColour) sys.stderr.write("\n") sys.stdout.write(str(k).rjust(maxTokenLen)) sys.stdout.write(s.regularColour) sys.stdout.write("|") sys.stdout.write(s.ctColour) outVal = f"{outputDict[k]}" sys.stdout.write(outVal.rjust(maxValueWidth) + " ") pct = f"({outputDict[k] * 1.0 / s.totalValues * 100:2.2f}%)" sys.stdout.write(s.pctColour) sys.stdout.write(pct.rjust(maxPctWidth) + " ") sys.stdout.write(s.graphColour) sys.stdout.write( self.histogram_bar(s, histWidth, maxVal, outputDict[k]) ) if i == len(sortedOutput) - 1: # put the terminal back into a normal-colour mode on last entry sys.stdout.write(s.regularColour) else: # we do these antics of printing $keyColour on the line before # the key so that piping output to sort will work sys.stdout.write(s.keyColour) sys.stdout.write("\n") class InputReader: """ Reads stdin, parses it into a dictionary of key and value is number of appearances of that key in the input - this will also prune the token frequency dict on after a certain number of insertions to prevent OOME on large datasets """ def __init__(self): self.tokenDict = {} def prune_keys(self, s): newDict = {} numKeysTransferred = 0 for k in sorted(self.tokenDict, key=self.tokenDict.get, reverse=True): if k: newDict[k] = self.tokenDict[k] numKeysTransferred += 1 if numKeysTransferred > s.maxKeys: break self.tokenDict = newDict s.numPrunes += 1 def tokenize_input(self, s): # how to split the input... typically we split on whitespace or # word boundaries, but the user can specify any regexp if s.tokenize == "white": s.tokenize = r"\s+" elif s.tokenize == "word": s.tokenize = r"\W" # how to match (filter) the input... typically we want either # all-alpha or all-numeric, but again, user can specify if s.matchRegexp == "word": s.matchRegexp = r"^[A-Z,a-z]+$" elif s.matchRegexp in ["num", "number"]: s.matchRegexp = r"^\d+$" # docs say these are cached, but i got about 2x speed boost # from doing the compile pt = re.compile(s.tokenize) pm = re.compile(s.matchRegexp) nextStat = time.time() + s.statInterval pruneObjects = 0 for line in sys.stdin: line = line.rstrip("\n") if s.tokenize: for token in pt.split(line): # user desires to break line into tokens... s.totalObjects += 1 if pm.match(token): s.totalValues += 1 pruneObjects += 1 if token in self.tokenDict: self.tokenDict[token] += 1 else: self.tokenDict[token] = 1 else: # user just wants every line to be a token s.totalObjects += 1 if pm.match(line): s.totalValues += 1 pruneObjects += 1 if line in self.tokenDict: self.tokenDict[line] += 1 else: self.tokenDict[line] = 1 # prune the hash if it gets too large if pruneObjects >= s.keyPruneInterval: self.prune_keys(s) pruneObjects = 0 if s.verbose and time.time() > nextStat: sys.stderr.write( f"tokens/lines examined: {s.totalObjects:,d} ; hash prunes: {s.numPrunes:,d}..." + chr(13) ) nextStat = time.time() + s.statInterval def read_pretallied_tokens(self, s): # the input is already just a series of keys with the frequency of the # keys precomputed, as in "du -sb" - vk means the number is first, key # second. kv means key first, number second vk = re.compile(r"^\s*(\d+)\s+(.+)$") kv = re.compile(r"^(.+?)\s+(\d+)$") if s.graphValues == "vk": for line in sys.stdin: m = vk.match(line) try: if m.group(2) in self.tokenDict: self.tokenDict[m.group(2)] += int(m.group(1)) else: self.tokenDict[m.group(2)] = int(m.group(1)) s.totalValues += int(m.group(1)) s.totalObjects += 1 except Exception: sys.stderr.write( f" E Input malformed+discarded (perhaps pass -g=kv?): {line}\n" ) elif s.graphValues == "kv": for line in sys.stdin: m = kv.match(line) try: if m.group(1) in self.tokenDict: self.tokenDict[m.group(1)] += int(m.group(2)) else: self.tokenDict[m.group(1)] = int(m.group(2)) s.totalValues += int(m.group(2)) s.totalObjects += 1 except Exception: sys.stderr.write( f" E Input malformed+discarded (perhaps pass -g=vk?): {line}\n" ) def read_numerics(self, s, h): # in this special mode, we print out the histogram here instead # of later - because it's a far simpler histogram without all the # totals, percentages, etc of the real histogram. we're just # showing a graph of a series of numbers lastVal = 0 maxVal = 0 maxWidth = 0 sumVal = 0 outList = [] for line in sys.stdin: try: line = float(line.rstrip()) except Exception: line = lastVal graphVal = 0 if s.numOnly == "mon": if s.totalObjects > 0: graphVal = line - lastVal lastVal = line else: graphVal = line if graphVal > maxVal: maxVal = graphVal maxWidth = len(str(graphVal)) sumVal += int(graphVal) if s.totalObjects > 0: outList.append(graphVal) s.totalObjects += 1 # simple graphical output for k in outList: sys.stdout.write(s.keyColour) sys.stdout.write(str(int(k)).rjust(maxWidth)) pct = f"({float(k) / float(sumVal) * 100:2.2f}%)" sys.stdout.write(s.pctColour) sys.stdout.write(pct.rjust(9) + " ") sys.stdout.write(s.graphColour) sys.stdout.write( h.histogram_bar(s, s.width - 11 - maxWidth, maxVal, k) + "\n" ) sys.stdout.write(s.regularColour) class Settings: def __init__(self): self.totalMillis = 0 self.startTime = int(time.time() * 1000) self.endTime = 0 self.widthArg = 0 self.heightArg = 0 self.width = 80 self.height = 15 self.histogramChar = "-" self.colourisedOutput = False self.logarithmic = False self.numOnly = "XXX" self.verbose = False self.graphValues = "" self.size = "" self.tokenize = "" # by default, everything matches (nothing is stripped out) self.matchRegexp = "." # how often to give status if verbose self.statInterval = 1.0 self.numPrunes = 0 # for colourised output self.colourPalette = "0,0,32,35,34" self.regularColour = "" self.keyColour = "" self.ctColour = "" self.pctColour = "" self.graphColour = "" # for stats self.totalObjects = 0 self.totalValues = 0 # every keyPruneInterval keys, prune the hash to maxKeys top keys self.keyPruneInterval = 1500000 self.maxKeys = 5000 # for advanced graphing self.unicodeMode = False self.charWidth = 1 self.graphChars = [] self.partialBlocks = ["▏", "▎", "▍", "▌", "▋", "▊", "▉", "█"] # char=pb self.partialLines = ["╸", "╾", "━"] # char=hl # rcfile grabbing/parsing if specified if len(sys.argv) > 1 and "--rcfile" in sys.argv[1]: rcFile = sys.argv[1].split("=")[1] rcFile = os.path.expanduser(rcFile) else: rcFile = os.environ.get("HOME") + "/.distributionrc" # parse opts from the rcFile if it exists try: with open(rcFile) as f: rcfileOptList = f.readlines() for rcOpt in rcfileOptList: rcOpt = rcOpt.rstrip().split("#")[0] if rcOpt: sys.argv.insert(0, rcOpt) except OSError: # don't die or in fact do anything if rcfile doesn't exist pass # manual argument parsing easier than getopts IMO for arg in sys.argv: if arg in ("-h", "--help"): doUsage(self) sys.exit(0) elif arg in ("-c", "--color", "--colour"): self.colourisedOutput = True elif arg in ("-g", "--graph"): # can pass --graph without option, will default to value/key ordering # since Unix prefers that for piping-to-sort reasons self.graphValues = "vk" elif arg in ("-l", "--logarithmic"): self.logarithmic = True elif arg in ("-n", "--numonly"): self.numOnly = "abs" elif arg in ("-v", "--verbose"): self.verbose = True else: argList = arg.split("=", 1) if argList[0] in ("-w", "--width"): self.widthArg = int(argList[1]) elif argList[0] in ("-h", "--height"): self.heightArg = int(argList[1]) elif argList[0] in ("-k", "--keys"): self.maxKeys = int(argList[1]) elif argList[0] in ("-c", "--char"): self.histogramChar = argList[1] elif argList[0] in ("-g", "--graph"): self.graphValues = argList[1] elif argList[0] in ("-n", "--numonly"): self.numOnly = argList[1] elif argList[0] in ("-p", "--palette"): self.colourPalette = argList[1] self.colourisedOutput = True elif argList[0] in ("-s", "--size"): self.size = argList[1] elif argList[0] in ("-t", "--tokenize"): self.tokenize = argList[1] elif argList[0] in ("-m", "--match"): self.matchRegexp = argList[1] # first, size, which might be further overridden by width/height later if self.size in ("full", "fl", "f"): # tput will tell us the term width/height even if input is stdin self.width, self.height = shutil.get_terminal_size() # convert to numerics from string self.width = int(self.width) self.height = int(self.height) - 3 # need room for the verbosity output if self.verbose: self.height -= 4 # in case tput went all bad, ensure some minimum size self.width = max(self.width, 40) self.height = max(self.height, 10) elif self.size in ("small", "sm", "s"): self.width = 60 self.height = 10 elif self.size in ("medium", "med", "m"): self.width = 100 self.height = 20 elif self.size in ("large", "lg", "l"): self.width = 140 self.height = 35 # synonyms "monotonically-increasing": derivative, difference, delta, increasing # so all "d" "i" and "m" words will be graphing those differences if self.numOnly[0] in ("d", "i", "m"): self.numOnly = "mon" # synonyms "actual values": absolute, actual, number, normal, noop, # so all "a" and "n" words will graph straight up numbers if self.numOnly[0] in ("a", "n"): self.numOnly = "abs" # override variables if they were explicitly given if self.widthArg != 0: self.width = self.widthArg if self.heightArg != 0: self.height = self.heightArg # maxKeys should be at least a few thousand greater than height to reduce odds # of throwing away high-count values that appear sparingly in the data if self.maxKeys < self.height + 3000: self.maxKeys = self.height + 3000 if self.verbose: sys.stderr.write(f"Updated maxKeys to {self.maxKeys} (height + 3000)\n") # colour palette if self.colourisedOutput: cl = self.colourPalette.split(",") # ANSI color code is ESC+[+NN+m where ESC=chr(27), [ and m are # the literal characters, and NN is a two-digit number, typically # from 31 to 37 - why is this knowledge still useful in 2014? cl = [chr(27) + "[" + e + "m" for e in cl] ( self.regularColour, self.keyColour, self.ctColour, self.pctColour, self.graphColour, ) = cl # some useful ASCII-->utf-8 substitutions if self.histogramChar == "ba": self.unicodeMode = True self.histogramChar = "▬" elif self.histogramChar == "bl": self.unicodeMode = True self.histogramChar = "Ξ" elif self.histogramChar == "em": self.unicodeMode = True self.histogramChar = "—" elif self.histogramChar == "me": self.unicodeMode = True self.histogramChar = "⋯" elif self.histogramChar == "di": self.unicodeMode = True self.histogramChar = "♦" elif self.histogramChar == "dt": self.unicodeMode = True self.histogramChar = "•" elif self.histogramChar == "sq": self.unicodeMode = True self.histogramChar = "□" # sub-full character width graphing systems if self.histogramChar == "pb": self.charWidth = 0.125 self.graphChars = self.partialBlocks elif self.histogramChar == "pl": self.charWidth = 0.3334 self.graphChars = self.partialLines # detect whether the user has passed a multibyte unicode character directly as the histogram char if ord(self.histogramChar[0]) >= 128: self.unicodeMode = True def doUsage(s): print( f""" usage: | {scriptName} [--rcfile=] [--size={{sm|med|lg|full}} | --width= --height=] [--color] [--palette=r,k,c,p,g] [--tokenize=] [--graph[=[kv|vk]] [--numonly[=derivative,diff|abs,absolute,actual]] [--char=|] [--help] [--verbose] --keys=K every {s.keyPruneInterval} values added, prune hash to K keys (default 5000) --char=C character(s) to use for histogram character, some substitutions follow: pl Use 1/3-width unicode partial lines to simulate 3x actual terminal width pb Use 1/8-width unicode partial blocks to simulate 8x actual terminal width ba (▬) Bar bl (Ξ) Building em (—) Emdash me (⋯) Mid-Elipses di (♦) Diamond dt (•) Dot sq (□) Square --color colourise the output --graph[=G] input is already key/value pairs. vk is default: kv input is ordered key then value vk input is ordered value then key --height=N height of histogram, headers non-inclusive, overrides --size --help get help --logarithmic logarithmic graph --match=RE only match lines (or tokens) that match this regexp, some substitutions follow: word ^[A-Z,a-z]+\\$ - tokens/lines must be entirely alphabetic num ^\\d+\\$ - tokens/lines must be entirely numeric --numonly[=N] input is numerics, simply graph values without labels actual input is just values (default - abs, absolute are synonymous to actual) diff input monotonically-increasing, graph differences (of 2nd and later values) --palette=P comma-separated list of ANSI colour values for portions of the output in this order: regular, key, count, percent, graph. implies --color. --rcfile=F use this rcfile instead of ~/.distributionrc - must be first argument! --size=S size of histogram, can abbreviate to single character, overridden by --width/--height small 40x10 medium 80x20 large 120x30 full terminal width x terminal height (approximately) --tokenize=RE split input on regexp RE and make histogram of all resulting tokens word [^\\w] - split on non-word characters like colons, brackets, commas, etc white \\s - split on whitespace --width=N width of the histogram report, N characters, overrides --size --verbose be verbose You can use single-characters options, like so: -h=25 -w=20 -v. You must still include the = Samples: du -sb /etc/* | {scriptName} --palette=0,37,34,33,32 --graph du -sk /etc/* | awk '{{print $2\" \"$1}}' | {scriptName} --graph=kv zcat /var/log/syslog*gz | {scriptName} --char=o --tokenize=white zcat /var/log/syslog*gz | awk '{{print $5}}' | {scriptName} -t=word -m-word -h=15 -c=/ zcat /var/log/syslog*gz | cut -c 1-9 | {scriptName} -width=60 -height=10 -char=em find /etc -type f | cut -c 6- | {scriptName} -tokenize=/ -w=90 -h=35 -c=dt cat /usr/share/dict/words | awk '{{print length($1)}}' | {scriptName} -c=* -w=50 -h=10 | sort -n """ ) # simple argument parsing and call top-level routines def main(): # instantiate our classes s = Settings() i = InputReader() h = Histogram() if s.graphValues: # user passed g=vk or g=kv i.read_pretallied_tokens(s) elif s.numOnly != "XXX": # s.numOnly was specified by the user i.read_numerics(s, h) # read_numerics will have output a graph already, so exit sys.exit(0) else: # this is the original behaviour of distribution i.tokenize_input(s) h.write_hist(s, i.tokenDict) # what is this magic? scriptName = str(Path(sys.argv[0]).name) if __name__ == "__main__": main() ================================================ FILE: distributionrc ================================================ # put this file at $HOME/.distributionrc or specify it as --rcfile= # AS THE FIRST ARGUMENT to the script # # options for the distribution program can be specified one per line exactly as # you'd specify them on the commandline. options in this file are overridden by # the commandline options passed # # do not try to specify the same option twice in this file, you'll probably be # surprised by the reverse-order of overrides # obvious options? --color #--size=full # two-char choice --char=-o # cool unicode partial-width characters # --char=pb # other interesting-but-unusual graph bar choices #--char=◵ #--char=■ #--char=◣ #--char=░ #--char=▞ # ANSI colour palette, in this order: # regular, key, count, percent, graph --palette=0,32,34,35,37 ================================================ FILE: tests/runTests.sh ================================================ #!/bin/sh # make sure env is setup proper if [ "xxx$distribution" == "xxx" ] ; then echo "To run tests, first export distribution=" exit 255 fi getopts "v" verbose # the tests echo "" printf "Running test: 1. " cat stdin.01.txt | $distribution --rcfile=../distributionrc --graph --height=35 --width=120 --char=dt --color --verbose > stdout.01.actual.txt 2> stderr.01.actual.txt printf "2. " cat stdin.02.txt | awk '{print $4" "$5}' | $distribution --rcfile=../distributionrc -s=med --width=110 --tokenize=word --match=word -v -c > stdout.02.actual.txt 2> stderr.02.actual.txt printf "3. " grep modem stdin.02.txt | awk '{print $1}' | $distribution --rcfile=../distributionrc --width=110 -h=15 -c='|' -v -c 2> stderr.03.actual.txt | sort > stdout.03.actual.txt printf "4. " cat stdin.03.txt | $distribution --rcfile=../distributionrc --size=large --height=8 --width=60 -t=/ --palette=0,31,33,35,37 -c='()' > stdout.04.actual.txt 2> stderr.04.actual.txt printf "5. " cat stdin.03.txt | $distribution --rcfile=../distributionrc -c=pc -w=48 --tokenize=word --match=num --size=large --verbose 2> stderr.05.actual.txt | sort -n > stdout.05.actual.txt printf "6. " # generate a large list of deterministic but meaningless numbers (( i=0 )) ; while [[ $i -lt 3141592 ]] ; do echo $(( i ^ (i+=17) )) done | cut -c 2-6 | $distribution --rcfile=../distributionrc --width=124 --height=29 -p=0,32,34,36,31 -c=^ -v > stdout.06.actual.txt 2> stderr.06.actual.txt printf "7. " cat stdin.04.txt | awk '{print $8}' | $distribution --rcfile=../distributionrc -s=s -w=90 --char=Ξ > stdout.07.actual.txt 2> stderr.07.actual.txt echo "done." # be sure output is proper err=0 printf "Comparing results: " for i in 01 02 03 04 05 06 07 ; do printf "$i. " diff -w stdout.$i.expected.txt stdout.$i.actual.txt if [ $? -ne 0 ]; then err=1 fi # when in verbose mode, ignore any "runtime lines, since those may differ by # milliseconds from machine to machine. Also ignore any lines with "^M" markers, # which are line-erase signals used for updating the screen interactively, and # thus don't need to be stored or compared. if [ "$verbose" = "v" ]; then diff -w -I "runtime:" -I " " stderr.$i.expected.txt stderr.$i.actual.txt fi done echo "done." # clean up rm stdout.*.actual.txt stderr.*.actual.txt exit $err ================================================ FILE: tests/stderr.01.expected.txt ================================================ tokens/lines examined: 279 tokens/lines matched: 17,444,532 histogram keys: 279 runtime: 1.52ms Key|Ct (Pct) Histogram ================================================ FILE: tests/stderr.02.expected.txt ================================================ tokens/lines examined: 5,480 tokens/lines matched: 1,104 histogram keys: 144 runtime: 6.19ms Key|Ct (Pct) Histogram ================================================ FILE: tests/stderr.03.expected.txt ================================================ tokens/lines examined: 29 tokens/lines matched: 29 histogram keys: 9 runtime: 0.31ms Key|Ct (Pct) Histogram ================================================ FILE: tests/stderr.04.expected.txt ================================================ Key|Ct (Pct) Histogram ================================================ FILE: tests/stderr.05.expected.txt ================================================ tokens/lines examined: 1,942 tokens/lines matched: 191 histogram keys: 11 runtime: 2.12ms Key|Ct (Pct) Histogram ================================================ FILE: tests/stderr.06.expected.txt ================================================ tokens/lines examined: 56,960... ; hash prunes: 0 tokens/lines examined: 113,920... ; hash prunes: 0 tokens/lines examined: 171,773... ; hash prunes: 0 tokens/lines examined: 184,800 tokens/lines matched: 184,800 histogram keys: 68 runtime: 3,243.41ms Key|Ct (Pct) Histogram ================================================ FILE: tests/stderr.07.expected.txt ================================================ Key|Ct (Pct) Histogram ================================================ FILE: tests/stdin.01.txt ================================================ 27944 /etc/acpi 2981 /etc/adduser.conf 10 /etc/adjtime 15375 /etc/alternatives 395 /etc/anacrontab 1096 /etc/ansible 800 /etc/anthy 95556 /etc/apache2 112 /etc/apg.conf 3397 /etc/apm 16922 /etc/apparmor 1597915 /etc/apparmor.d 2666 /etc/apport 40810 /etc/apt 362303 /etc/ardour2 144 /etc/at.deny 41 /etc/ati 1366 /etc/at-spi2 5791 /etc/avahi 9085 /etc/avserver.conf 2076 /etc/bash.bashrc 58753 /etc/bash_completion 597836 /etc/bash_completion.d 356 /etc/bindresvport.blacklist 321 /etc/blkid.conf 15 /etc/blkid.tab 5306 /etc/bluetooth 7439 /etc/bogofilter.cf 392 /etc/bonobo-activation 33 /etc/brlapi.key 3143272 /etc/brltty 19925 /etc/brltty.conf 1878 /etc/ca-certificates 6961 /etc/ca-certificates.conf 632 /etc/calendar 2301 /etc/chatscripts 509 /etc/checkbox.d 248 /etc/chromium-browser 186 /etc/clutter-imcontext 699 /etc/colord.conf 1122 /etc/compizconfig 161 /etc/ConsoleKit 57645 /etc/console-setup 3300 /etc/corosync 429 /etc/cron.d 30047 /etc/cron.daily 127 /etc/cron.hourly 455 /etc/cron.monthly 722 /etc/crontab 2127 /etc/cron.weekly 67 /etc/crypttab 14653 /etc/cups 8964 /etc/cupshelpers 70918 /etc/dbus-1 3694 /etc/dconf 2969 /etc/debconf.conf 11 /etc/debian_version 32218 /etc/default 604 /etc/deluser.conf 55 /etc/depmod.d 18191 /etc/dhcp 1785 /etc/dhcp3 71 /etc/dictionaries-common 4730 /etc/dkms 352 /etc/doc-base 1308 /etc/dpkg 1616 /etc/emacs 343 /etc/environment 389 /etc/esound 574 /etc/firefox 119862 /etc/fonts 1171 /etc/foomatic 743 /etc/fstab 6 /etc/fstab.d 216 /etc/fuse.conf 3343 /etc/gai.conf 4975 /etc/gconf 59 /etc/gdb 9937 /etc/gdm 10799 /etc/ghostscript 41894 /etc/gimp 8395 /etc/ginn 580 /etc/gnashpluginrc 5767 /etc/gnashrc 690 /etc/gnashthumbnailrc 33126 /etc/gnome 200 /etc/gnome-app-install 25 /etc/gnome-settings-daemon 603 /etc/gnome-vfs-2.0 2550 /etc/gnucash 1741 /etc/groff 977 /etc/group 958 /etc/group- 40058 /etc/grub.d 800 /etc/gshadow 789 /etc/gshadow- 921 /etc/gtk-2.0 1116 /etc/gtk-3.0 2105 /etc/ha.d 4233 /etc/haproxy 6748 /etc/hddtemp.db 4728 /etc/hdparm.conf 92 /etc/host.conf 7 /etc/hostname 271 /etc/hosts 580 /etc/hosts.allow 880 /etc/hosts.deny 900 /etc/hp 163 /etc/icedtea-web 78 /etc/ifplugd 202358 /etc/ImageMagick 58780 /etc/init 143281 /etc/init.d 6610 /etc/initramfs-tools 1721 /etc/inputrc 28 /etc/insserv 839 /etc/insserv.conf 6 /etc/insserv.conf.d 1256 /etc/iproute2 853 /etc/ipsec.conf 20491 /etc/ipsec.d 698 /etc/ipsec.secrets 24 /etc/issue 17 /etc/issue.net 100414 /etc/java-7-openjdk 2838 /etc/kbd 6035 /etc/kernel 91 /etc/kernel-img.conf 1309 /etc/kerneloops.conf 354 /etc/ldap 92934 /etc/ld.so.cache 34 /etc/ld.so.conf 342 /etc/ld.so.conf.d 267 /etc/legal 2695 /etc/libnl-3 6 /etc/libpaper.d 5336 /etc/libreoffice 564 /etc/lightdm 2570 /etc/locale.alias 2819 /etc/localtime 8750 /etc/logcheck 1475 /etc/logd.cf 10551 /etc/login.defs 599 /etc/logrotate.conf 8279 /etc/logrotate.d 6 /etc/lsb-base 3279 /etc/lsb-base-logging.sh 104 /etc/lsb-release 15752 /etc/ltrace.conf 111 /etc/magic 111 /etc/magic.mime 23576 /etc/mailcap 449 /etc/mailcap.order 5173 /etc/manpath.config 416 /etc/matecomponent-activation 7780758 /etc/mateconf 15409 /etc/mate-system-tools 584 /etc/mate-vfs-2.0 10862 /etc/mate-vfs-mime-magic 440 /etc/menu 15646 /etc/menu-methods 23958 /etc/mime.types 956 /etc/mke2fs.conf 11521 /etc/modprobe.d 198 /etc/modules 535352 /etc/mono 13 /etc/motd 13899 /etc/mplayer 887 /etc/mtab 0 /etc/mtab.fuselock 624 /etc/mtools.conf 5181 /etc/mysql 8453 /etc/nanorc 2064 /etc/netscsid.conf 12602 /etc/network 12958 /etc/NetworkManager 91 /etc/networks 739 /etc/newt 513 /etc/nsswitch.conf 689 /etc/obex-data-server 6 /etc/ODBCDataSources 0 /etc/odbc.ini 0 /etc/odbcinst.ini 9012 /etc/openal 90 /etc/OpenCL 10421 /etc/openhpi 15684 /etc/openvpn 6 /etc/opt 552 /etc/pam.conf 24963 /etc/pam.d 7 /etc/papersize 2039 /etc/passwd 2036 /etc/passwd- 1141 /etc/pcmcia 667 /etc/perl 346 /etc/pkcs11 2243 /etc/pm 7649 /etc/pnm2ppa.conf 1084 /etc/polkit-1 350 /etc/popularity-contest.conf 41552 /etc/ppp 22 /etc/printcap 665 /etc/profile 506 /etc/profile.d 2933 /etc/protocols 11511 /etc/pulse 2172 /etc/purple 120 /etc/python 184 /etc/python2.7 4900 /etc/rc0.d 4861 /etc/rc1.d 5288 /etc/rc2.d 5263 /etc/rc3.d 5263 /etc/rc4.d 5263 /etc/rc5.d 4900 /etc/rc6.d 306 /etc/rc.local 608 /etc/rcS.d 1889 /etc/request-key.conf 9102 /etc/resolvconf 60 /etc/resolv.conf 147 /etc/resolv.conf.orig 268 /etc/rmt 887 /etc/rpc 1263 /etc/rsyslog.conf 2677 /etc/rsyslog.d 12559 /etc/samba 71429 /etc/sane.d 3902 /etc/securetty 24629 /etc/security 10333 /etc/sensors3.conf 25 /etc/sensors.d 19281 /etc/services 19266 /etc/sgml 1356 /etc/shadow 1231 /etc/shadow- 73 /etc/shells 12903 /etc/skel 235 /etc/snmp 112051 /etc/sound 53500 /etc/speech-dispatcher 138042 /etc/ssh 465414 /etc/ssl 741 /etc/sudoers 772 /etc/sudoers.d 19 /etc/su-to-rootrc 2112 /etc/sysctl.conf 8215 /etc/sysctl.d 118 /etc/systemd 231 /etc/terminfo 186 /etc/thunderbird 20 /etc/timezone 4680 /etc/timidity 645 /etc/ts.conf 1260 /etc/ucf.conf 3665 /etc/udev 9425 /etc/ufw 326 /etc/updatedb.conf 1141 /etc/update-manager 8396 /etc/update-motd.d 6 /etc/update-notifier 1678 /etc/UPower 572 /etc/usb_modeswitch.conf 6 /etc/usb_modeswitch.d 25081 /etc/vga 2912 /etc/vim 496 /etc/vlc 21837 /etc/vpnc 23 /etc/vtrgb 4496 /etc/wgetrc 4680 /etc/wildmidi 1343 /etc/wodim.conf 31611 /etc/wpa_supplicant 226309 /etc/X11 111971 /etc/xdg 769 /etc/xl2tpd 35802 /etc/xml 326 /etc/xul-ext 349 /etc/zsh_command_not_found ================================================ FILE: tests/stdin.02.txt ================================================ 2012-01-01 08:01:52 anacron[14182]: Job `cron.daily' 2012-01-02 08:01:52 anacron[14182]: Normal exit 2012-01-03 08:17:01 CRON[14610]: (root) CMD 2012-01-04 09:07:50 pppd[13041]: Modem hangup 2012-01-05 09:07:50 pppd[13041]: Connect time 2012-01-06 09:07:50 pppd[13041]: Sent 19243191 2012-01-07 09:07:50 modem-manager[1113]: (ttyUSB0) 2012-01-08 09:07:50 modem-manager[1113]: (ttyUSB0) 2012-01-09 09:07:50 modem-manager[1113]: (ttyUSB2) 2012-01-01 09:07:50 modem-manager[1113]: (ttyUSB2) 2012-01-02 09:07:50 kernel: [142597.045021] usb 2012-01-03 09:07:50 kernel: [142597.045214] option: 2012-01-04 09:07:50 kernel: [142597.045492] option1 2012-01-05 09:07:50 kernel: [142597.045525] option 2012-01-06 09:07:50 kernel: [142597.045773] option1 2012-01-07 09:07:50 kernel: [142597.045814] option 2012-01-08 09:07:50 pppd[13041]: Connection terminated. 2012-01-09 09:07:50 modem-manager[1113]: (tty/ttyUSB0): 2012-01-01 09:07:50 kernel: [142597.046728] option1 2012-01-02 09:07:50 kernel: [142597.046777] option 2012-01-03 09:07:50 modem-manager[1113]: Modem 2012-01-04 09:07:50 NetworkManager[1127]: (ttyUSB0): 2012-01-05 09:07:50 NetworkManager[1127]: Activation 2012-01-06 09:07:50 NetworkManager[1127]: SCPlugin-Ifupdown: devices 2012-01-07 09:07:50 NetworkManager[1127]: (ttyUSB0): 2012-01-08 09:07:50 NetworkManager[1127]: (ttyUSB0): 2012-01-09 09:07:50 NetworkManager[1127]: (ttyUSB0): 2012-01-01 09:07:50 dbus[1092]: [system] Activating 2012-01-02 09:07:50 NetworkManager[1127]: could 2012-01-03 09:07:50 NetworkManager[1127]: nm_system_iface_flush_routes: assertion 2012-01-04 09:07:50 NetworkManager[1127]: nm_system_iface_flush_addresses: assertion 2012-01-05 09:07:50 dbus[1092]: [system] Successfully 2012-01-06 09:07:50 dnsmasq[13066]: exiting on 2012-01-07 09:07:50 NetworkManager[1127]: DNS: 2012-01-08 09:07:50 NetworkManager[1127]: (ttyUSB0): 2012-01-09 09:07:50 dnsmasq[14766]: started, version 2012-01-01 09:07:50 dnsmasq[14766]: compile time 2012-01-02 09:07:50 dnsmasq[14766]: warning: no 2012-01-03 09:07:50 NetworkManager[1127]: (ttyUSB0): 2012-01-04 09:07:50 NetworkManager[1127]: (ttyUSB0): 2012-01-05 09:07:50 NetworkManager[1127]: Unmanaged 2012-01-06 09:07:50 NetworkManager[1127]: Unmanaged 2012-01-07 09:07:52 pppd[13041]: Exit. 2012-01-08 09:07:54 NetworkManager[1127]: sleep 2012-01-09 09:07:54 NetworkManager[1127]: sleeping 2012-01-01 09:07:54 NetworkManager[1127]: (eth0): 2012-01-02 09:07:54 NetworkManager[1127]: (eth0): 2012-01-03 09:07:54 NetworkManager[1127]: (eth0): 2012-01-04 09:07:54 NetworkManager[1127]: (eth0): 2012-01-05 09:07:55 anacron[14932]: Anacron 2.3 2012-01-06 09:07:55 anacron[14932]: Normal exit 2012-01-07 09:07:56 NetworkManager[1127]: (wlan0): 2012-01-08 09:07:56 NetworkManager[1127]: (wlan0): 2012-01-09 09:07:56 NetworkManager[1127]: SCPlugin-Ifupdown: devices 2012-01-01 09:07:56 NetworkManager[1127]: radio 2012-01-02 09:07:56 NetworkManager[1127]: WiFi 2012-01-03 09:07:57 kernel: [142603.804145] bcma-pci-bridge 2012-01-04 09:37:34 kernel: [142606.236638] PM: 2012-01-05 09:37:34 kernel: [142606.399207] PM: 2012-01-06 09:37:34 kernel: [142606.399218] Freezing 2012-01-07 09:37:34 kernel: [142606.413472] Freezing 2012-01-08 09:37:34 kernel: [142606.429503] PM: 2012-01-09 09:37:34 kernel: [142606.429522] Suspending 2012-01-01 09:37:34 kernel: [142606.430280] sd 2012-01-02 09:37:34 kernel: [142606.430306] apple-gmux 2012-01-03 09:37:34 kernel: [142606.430367] sd 2012-01-04 09:37:34 kernel: [142606.431471] snd_hda_intel 2012-01-05 09:37:34 kernel: [142606.431474] [fglrx] 2012-01-06 09:37:34 kernel: [142606.431534] pciehp 2012-01-07 09:37:34 kernel: [142606.431537] [fglrx] 2012-01-08 09:37:34 kernel: [142606.469351] uhci_hcd 2012-01-09 09:37:34 kernel: [142606.469376] uhci_hcd 2012-01-01 09:37:34 kernel: [142606.477296] ehci_hcd 2012-01-02 09:37:34 kernel: [142606.493280] ehci_hcd 2012-01-03 09:37:34 kernel: [142606.533344] snd_hda_intel 2012-01-04 09:37:34 kernel: [142606.549221] PM: 2012-01-05 09:37:34 kernel: [142607.070401] PM: 2012-01-06 09:37:34 kernel: [142607.070417] PM: 2012-01-07 09:37:34 kernel: [142607.070424] PM: 2012-01-08 09:37:34 kernel: [142607.070680] ata_piix 2012-01-09 09:37:34 kernel: [142607.084707] PM: 2012-01-01 09:37:34 kernel: [142607.361272] [fglrx] 2012-01-02 09:37:34 kernel: [142607.361274] [fglrx] 2012-01-03 09:37:34 kernel: [142607.361345] PM: 2012-01-04 09:37:34 kernel: [142607.361366] PM: 2012-01-05 09:37:34 kernel: [142607.361418] PM: 2012-01-06 09:37:34 kernel: [142607.361461] PM: 2012-01-07 09:37:34 kernel: [142607.361463] PM: 2012-01-08 09:37:34 kernel: [142607.361901] ehci_hcd 2012-01-09 09:37:34 kernel: [142607.361908] ehci_hcd 2012-01-01 09:37:34 kernel: [142607.376801] ehci_hcd 2012-01-02 09:37:34 kernel: [142607.376807] ehci_hcd 2012-01-03 09:37:34 kernel: [142607.408538] PM: 2012-01-04 09:37:34 kernel: [142607.408793] ACPI: 2012-01-05 09:37:34 kernel: [142607.448529] PM: 2012-01-06 09:37:34 kernel: [142607.448680] Disabling 2012-01-07 09:37:34 kernel: [142607.552327] CPU 2012-01-08 09:37:34 kernel: [142607.656226] CPU 2012-01-09 09:37:34 kernel: [142607.760122] CPU 2012-01-01 09:37:34 kernel: [142607.864015] CPU 2012-01-02 09:37:34 kernel: [142607.967918] CPU 2012-01-03 09:37:34 kernel: [142608.071815] CPU 2012-01-04 09:37:34 kernel: [142608.175716] CPU 2012-01-05 09:37:34 kernel: [142608.176048] Extended 2012-01-06 09:37:34 kernel: [142608.176319] ACPI: 2012-01-07 09:37:34 kernel: [142608.176359] PM: 2012-01-08 09:37:34 kernel: [142608.176667] Extended 2012-01-09 09:37:34 kernel: [142608.176704] Enabling 2012-01-01 09:37:34 kernel: [142608.176802] Booting 2012-01-02 09:37:34 kernel: [142608.176804] smpboot 2012-01-03 09:37:34 kernel: [142608.187115] Initializing 2012-01-04 09:37:34 kernel: [142608.187819] Calibrating 2012-01-05 09:37:34 kernel: [142608.208146] NMI 2012-01-06 09:37:34 kernel: [142608.208802] CPU1 2012-01-07 09:37:34 kernel: [142608.208915] Booting 2012-01-08 09:37:34 kernel: [142608.208916] smpboot 2012-01-09 09:37:34 kernel: [142608.219212] Initializing 2012-01-01 09:37:34 kernel: [142608.219930] Calibrating 2012-01-02 09:37:34 kernel: [142608.240268] NMI 2012-01-03 09:37:34 kernel: [142608.240987] CPU2 2012-01-04 09:37:34 kernel: [142608.241045] Booting 2012-01-05 09:37:34 kernel: [142608.241047] smpboot 2012-01-06 09:37:34 kernel: [142608.251343] Initializing 2012-01-07 09:37:34 kernel: [142608.252061] Calibrating 2012-01-08 09:37:34 kernel: [142608.272427] NMI 2012-01-09 09:37:34 kernel: [142608.273159] CPU3 2012-01-01 09:37:34 kernel: [142608.273233] Booting 2012-01-02 09:37:34 kernel: [142608.273234] smpboot 2012-01-03 09:37:34 kernel: [142608.283529] Initializing 2012-01-04 09:37:34 kernel: [142608.284247] Calibrating 2012-01-05 09:37:34 kernel: [142608.304827] NMI 2012-01-06 09:37:34 kernel: [142608.305639] CPU4 2012-01-07 09:37:34 kernel: [142608.305738] Booting 2012-01-08 09:37:34 kernel: [142608.305739] smpboot 2012-01-09 09:37:34 kernel: [142608.316043] Initializing 2012-01-01 09:37:34 kernel: [142608.316754] Calibrating 2012-01-02 09:37:34 kernel: [142608.337444] NMI 2012-01-03 09:37:34 kernel: [142608.338329] CPU5 2012-01-04 09:37:34 kernel: [142608.338442] Booting 2012-01-05 09:37:34 kernel: [142608.338444] smpboot 2012-01-06 09:37:34 kernel: [142608.348727] Initializing 2012-01-07 09:37:34 kernel: [142608.349456] Calibrating 2012-01-08 09:37:34 kernel: [142608.370266] NMI 2012-01-09 09:37:34 kernel: [142608.371217] CPU6 2012-01-01 09:37:34 kernel: [142608.371481] Booting 2012-01-02 09:37:34 kernel: [142608.371483] smpboot 2012-01-03 09:37:34 kernel: [142608.381765] Initializing 2012-01-04 09:37:34 kernel: [142608.382495] Calibrating 2012-01-05 09:37:34 kernel: [142608.403488] NMI 2012-01-06 09:37:34 kernel: [142608.404562] CPU7 2012-01-07 09:37:34 kernel: [142608.412434] ACPI: 2012-01-08 09:37:34 kernel: [142609.363300] pcieport 2012-01-09 09:37:34 kernel: [142609.363305] pcieport 2012-01-01 09:37:34 kernel: [142609.363307] pcieport 2012-01-02 09:37:34 kernel: [142609.363309] pcieport 2012-01-03 09:37:34 kernel: [142609.363312] pcieport 2012-01-04 09:37:34 kernel: [142609.363315] pcieport 2012-01-05 09:37:34 kernel: [142609.363331] pcieport 2012-01-06 09:37:34 kernel: [142609.363335] pcieport 2012-01-07 09:37:34 kernel: [142609.363337] pcieport 2012-01-08 09:37:34 kernel: [142609.363339] pcieport 2012-01-09 09:37:34 kernel: [142609.363341] pcieport 2012-01-01 09:37:34 kernel: [142609.363344] pcieport 2012-01-02 09:37:34 kernel: [142609.363346] pcieport 2012-01-03 09:37:34 kernel: [142609.363363] mei 2012-01-04 09:37:34 kernel: [142609.363376] mei 2012-01-05 09:37:34 kernel: [142609.363394] uhci_hcd 2012-01-06 09:37:34 kernel: [142609.363404] uhci_hcd 2012-01-07 09:37:34 kernel: [142609.363413] uhci_hcd 2012-01-08 09:37:34 kernel: [142609.363433] ehci_hcd 2012-01-09 09:37:34 kernel: [142609.363448] ehci_hcd 2012-01-01 09:37:34 kernel: [142609.363454] ehci_hcd 2012-01-02 09:37:34 kernel: [142609.363470] ehci_hcd 2012-01-03 09:37:34 kernel: [142609.363474] ehci_hcd 2012-01-04 09:37:34 kernel: [142609.363487] snd_hda_intel 2012-01-05 09:37:34 kernel: [142609.363499] snd_hda_intel 2012-01-06 09:37:34 kernel: [142609.363503] snd_hda_intel 2012-01-07 09:37:34 kernel: [142609.363508] snd_hda_intel 2012-01-08 09:37:34 kernel: [142609.363532] pcieport 2012-01-09 09:37:34 kernel: [142609.363541] pcieport 2012-01-01 09:37:34 kernel: [142609.363545] pcieport 2012-01-02 09:37:34 kernel: [142609.363549] pcieport 2012-01-03 09:37:34 kernel: [142609.363553] pcieport 2012-01-04 09:37:34 kernel: [142609.363559] pcieport 2012-01-05 09:37:34 kernel: [142609.363563] pcieport 2012-01-06 09:37:34 kernel: [142609.363601] pcieport 2012-01-07 09:37:34 kernel: [142609.363610] pcieport 2012-01-08 09:37:34 kernel: [142609.363614] pcieport 2012-01-09 09:37:34 kernel: [142609.363618] pcieport 2012-01-01 09:37:34 kernel: [142609.363622] pcieport 2012-01-02 09:37:34 kernel: [142609.363628] pcieport 2012-01-03 09:37:34 kernel: [142609.363632] pcieport 2012-01-04 09:37:34 kernel: [142609.363671] pcieport 2012-01-05 09:37:34 kernel: [142609.363679] pcieport 2012-01-06 09:37:34 kernel: [142609.363684] pcieport 2012-01-07 09:37:34 kernel: [142609.363691] pcieport 2012-01-08 09:37:34 kernel: [142609.363696] pcieport 2012-01-09 09:37:34 kernel: [142609.363734] pcieport 2012-01-01 09:37:34 kernel: [142609.363743] pcieport 2012-01-02 09:37:34 kernel: [142609.363747] pcieport 2012-01-03 09:37:34 kernel: [142609.363751] pcieport 2012-01-04 09:37:34 kernel: [142609.363755] pcieport 2012-01-05 09:37:34 kernel: [142609.363760] pcieport 2012-01-06 09:37:34 kernel: [142609.363765] pcieport 2012-01-07 09:37:34 kernel: [142609.363796] uhci_hcd 2012-01-08 09:37:34 kernel: [142609.363806] uhci_hcd 2012-01-09 09:37:34 kernel: [142609.363815] uhci_hcd 2012-01-01 09:37:34 kernel: [142609.363834] ehci_hcd 2012-01-02 09:37:34 kernel: [142609.363849] ehci_hcd 2012-01-03 09:37:34 kernel: [142609.363855] ehci_hcd 2012-01-04 09:37:34 kernel: [142609.363869] ehci_hcd 2012-01-05 09:37:34 kernel: [142609.363873] ehci_hcd 2012-01-06 09:37:34 kernel: [142609.363915] ata_piix 2012-01-07 09:37:34 kernel: [142609.363923] ata_piix 2012-01-08 09:37:34 kernel: [142609.363927] ata_piix 2012-01-09 09:37:34 kernel: [142609.363931] ata_piix 2012-01-01 09:37:34 kernel: [142609.363935] ata_piix 2012-01-02 09:37:34 kernel: [142609.363939] ata_piix 2012-01-03 09:37:34 kernel: [142609.363944] ata_piix 2012-01-04 09:37:34 kernel: [142609.363956] pci 2012-01-05 09:37:34 kernel: [142609.363968] pci 2012-01-06 09:37:34 kernel: [142609.363974] pci 2012-01-07 09:37:34 kernel: [142609.363994] fglrx_pci 2012-01-08 09:37:34 kernel: [142609.363999] fglrx_pci 2012-01-09 09:37:34 kernel: [142609.364005] fglrx_pci 2012-01-01 09:37:34 kernel: [142609.364009] fglrx_pci 2012-01-02 09:37:34 kernel: [142609.364013] fglrx_pci 2012-01-03 09:37:34 kernel: [142609.364017] fglrx_pci 2012-01-04 09:37:34 kernel: [142609.364021] fglrx_pci 2012-01-05 09:37:34 kernel: [142609.364056] snd_hda_intel 2012-01-06 09:37:34 kernel: [142609.364069] snd_hda_intel 2012-01-07 09:37:34 kernel: [142609.364072] snd_hda_intel 2012-01-08 09:37:34 kernel: [142609.364077] snd_hda_intel 2012-01-09 09:37:34 kernel: [142609.364165] tg3 2012-01-01 09:37:34 kernel: [142609.364190] tg3 2012-01-02 09:37:34 kernel: [142609.364198] tg3 2012-01-03 09:37:34 kernel: [142609.364204] tg3 2012-01-04 09:37:34 kernel: [142609.364212] tg3 2012-01-05 09:37:34 kernel: [142609.364303] pci 2012-01-06 09:37:34 kernel: [142609.364320] pci 2012-01-07 09:37:34 kernel: [142609.364346] pci 2012-01-08 09:37:34 kernel: [142609.364354] pci 2012-01-09 09:37:34 kernel: [142609.364365] pci 2012-01-01 09:37:34 kernel: [142609.364433] firewire_ohci 2012-01-02 09:37:34 kernel: [142609.364465] firewire_ohci 2012-01-03 09:37:34 kernel: [142609.364473] firewire_ohci 2012-01-04 09:37:34 kernel: [142609.364560] PM: 2012-01-05 09:37:34 kernel: [142609.364660] uhci_hcd 2012-01-06 09:37:34 kernel: [142609.364669] uhci_hcd 2012-01-07 09:37:34 kernel: [142609.364685] mei 2012-01-08 09:37:34 kernel: [142609.364694] ehci_hcd 2012-01-09 09:37:34 kernel: [142609.364697] usb 2012-01-01 09:37:34 kernel: [142609.364699] snd_hda_intel 2012-01-02 09:37:34 kernel: [142609.364705] ehci_hcd 2012-01-03 09:37:34 kernel: [142609.364714] snd_hda_intel 2012-01-04 09:37:34 kernel: [142609.364736] uhci_hcd 2012-01-05 09:37:34 kernel: [142609.364739] ehci_hcd 2012-01-06 09:37:34 kernel: [142609.364744] pciehp 2012-01-07 09:37:34 kernel: [142609.364747] ata_piix 2012-01-08 09:37:34 kernel: [142609.364753] snd_hda_intel 2012-01-09 09:37:34 kernel: [142609.364765] uhci_hcd 2012-01-01 09:37:34 kernel: [142609.364767] ata_piix 2012-01-02 09:37:34 kernel: [142609.364770] ehci_hcd 2012-01-03 09:37:34 kernel: [142609.364775] snd_hda_intel 2012-01-04 09:37:34 kernel: [142609.364817] usb 2012-01-05 09:37:34 kernel: [142609.364871] snd_hda_intel 2012-01-06 09:37:34 kernel: [142609.364910] fglrx_pci 2012-01-07 09:37:34 kernel: [142609.364932] snd_hda_intel 2012-01-08 09:37:34 kernel: [142609.365580] sd 2012-01-09 09:37:34 kernel: [142609.369962] [fglrx] 2012-01-01 09:37:34 kernel: [142609.370140] [fglrx] 2012-01-02 09:37:34 kernel: [142609.414760] [fglrx] 2012-01-03 09:37:34 kernel: [142609.414831] [fglrx] 2012-01-04 09:37:34 kernel: [142609.419272] firewire_ohci 2012-01-05 09:37:34 kernel: [142609.419483] firewire_core: 2012-01-06 09:37:34 kernel: [142609.483100] PM: 2012-01-07 09:37:34 kernel: [142609.483105] PM: 2012-01-08 09:37:34 kernel: [142609.483108] PM: 2012-01-09 09:37:34 kernel: [142609.483113] PM: 2012-01-01 09:37:34 kernel: [142609.483116] PM: 2012-01-02 09:37:34 kernel: [142609.483122] PM: 2012-01-03 09:37:34 kernel: [142609.487587] PM: 2012-01-04 09:37:34 kernel: [142609.487603] PM: 2012-01-05 09:37:34 kernel: [142609.487607] PM: 2012-01-06 09:37:34 kernel: [142609.487611] PM: 2012-01-07 09:37:34 kernel: [142609.487614] PM: 2012-01-08 09:37:34 kernel: [142609.487617] PM: 2012-01-09 09:37:34 kernel: [142609.487648] PM: 2012-01-01 09:37:34 kernel: [142609.487936] PM: 2012-01-02 09:37:34 kernel: [142609.487939] PM: 2012-01-03 09:37:34 kernel: [142609.487942] PM: 2012-01-04 09:37:34 kernel: [142609.487947] PM: 2012-01-05 09:37:34 kernel: [142609.487950] PM: 2012-01-06 09:37:34 kernel: [142609.487953] PM: 2012-01-07 09:37:34 kernel: [142609.515164] PM: 2012-01-08 09:37:34 kernel: [142609.515377] Extended 2012-01-09 09:37:34 kernel: [142609.535655] PM: 2012-01-01 09:37:34 kernel: [142609.535659] PM: 2012-01-02 09:37:34 kernel: [142609.535663] PM: 2012-01-03 09:37:34 kernel: [142609.535667] PM: 2012-01-04 09:37:34 kernel: [142609.535670] PM: 2012-01-05 09:37:34 kernel: [142609.535673] PM: 2012-01-06 09:37:34 kernel: [142609.535675] PM: 2012-01-07 09:37:34 kernel: [142609.535680] PM: 2012-01-08 09:37:34 kernel: [142609.535693] PM: 2012-01-09 09:37:34 kernel: [142609.535695] PM: 2012-01-01 09:37:34 kernel: [142609.535697] PM: 2012-01-02 09:37:34 kernel: [142609.535701] PM: 2012-01-03 09:37:34 kernel: [142609.918715] firewire_core: 2012-01-04 09:37:34 kernel: [142610.709877] ata2.01: 2012-01-05 09:37:34 kernel: [142610.709966] ata1.01: 2012-01-06 09:37:34 kernel: [142610.865813] ata2.00: 2012-01-07 09:37:34 kernel: [142610.865826] ata2.01: 2012-01-08 09:37:34 kernel: [142610.865835] ata2.01: 2012-01-09 09:37:34 kernel: [142610.873997] ata2.00: 2012-01-01 09:37:34 kernel: [142610.889964] ata2.00: 2012-01-02 09:37:34 kernel: [142611.145547] ata1.00: 2012-01-03 09:37:34 kernel: [142611.145558] ata1.01: 2012-01-04 09:37:34 kernel: [142611.153728] ata1.00: 2012-01-05 09:37:34 kernel: [142611.161928] ata1.00: 2012-01-06 09:37:34 kernel: [142611.190133] PM: 2012-01-07 09:37:34 kernel: [142611.190169] PM: 2012-01-08 09:37:34 kernel: [142611.190173] PM: 2012-01-09 09:37:34 kernel: [142611.191213] PM: 2012-01-01 09:37:34 kernel: [142611.191267] PM: 2012-01-02 09:37:34 kernel: [142611.191296] PM: 2012-01-03 09:37:34 kernel: [142611.191297] Restarting 2012-01-04 09:37:34 anacron[15579]: Anacron 2.3 2012-01-05 09:37:34 anacron[15579]: Normal exit 2012-01-06 09:37:34 kernel: [142611.282257] bcma-pci-bridge 2012-01-07 09:37:34 kernel: [142611.282274] bcma-pci-bridge 2012-01-08 09:37:34 kernel: [142611.282356] bcma: 2012-01-09 09:37:34 kernel: [142611.282393] bcma: 2012-01-01 09:37:34 kernel: [142611.282481] bcma: 2012-01-02 09:37:34 kernel: [142611.282678] bcma: 2012-01-03 09:37:34 kernel: [142611.358663] bcma: 2012-01-04 09:37:34 kernel: [142611.360598] cfg80211: 2012-01-05 09:37:34 kernel: [142611.365308] cfg80211: 2012-01-06 09:37:34 kernel: [142611.365310] cfg80211: 2012-01-07 09:37:34 kernel: [142611.365313] cfg80211: 2012-01-08 09:37:34 kernel: [142611.365316] cfg80211: 2012-01-09 09:37:34 kernel: [142611.365318] cfg80211: 2012-01-01 09:37:34 kernel: [142611.365321] cfg80211: 2012-01-02 09:37:34 kernel: [142611.365323] cfg80211: 2012-01-03 09:37:34 kernel: [142611.366185] b43-phy0: 2012-01-04 09:37:34 kernel: [142611.366858] cfg80211: 2012-01-05 09:37:34 kernel: [142611.366860] cfg80211: 2012-01-06 09:37:34 kernel: [142611.366861] cfg80211: 2012-01-07 09:37:34 kernel: [142611.366863] cfg80211: 2012-01-08 09:37:34 kernel: [142611.366865] cfg80211: 2012-01-09 09:37:34 kernel: [142611.366866] cfg80211: 2012-01-01 09:37:34 kernel: [142611.366868] cfg80211: 2012-01-02 09:37:34 kernel: [142611.366870] cfg80211: 2012-01-03 09:37:34 kernel: [142611.366871] cfg80211: 2012-01-04 09:37:34 kernel: [142611.366873] cfg80211: 2012-01-05 09:37:34 kernel: [142611.366874] cfg80211: 2012-01-06 09:37:34 kernel: [142611.366876] cfg80211: 2012-01-07 09:37:34 kernel: [142611.366877] cfg80211: 2012-01-08 09:37:34 kernel: [142611.366879] cfg80211: 2012-01-09 09:37:34 kernel: [142611.366881] cfg80211: 2012-01-01 09:37:34 kernel: [142611.366882] cfg80211: 2012-01-02 09:37:34 kernel: [142611.366884] cfg80211: 2012-01-03 09:37:34 kernel: [142611.366886] cfg80211: 2012-01-04 09:37:34 kernel: [142611.366887] cfg80211: 2012-01-05 09:37:34 kernel: [142611.366889] cfg80211: 2012-01-06 09:37:34 kernel: [142611.366890] cfg80211: 2012-01-07 09:37:34 kernel: [142611.366892] cfg80211: 2012-01-08 09:37:34 kernel: [142611.366893] cfg80211: 2012-01-09 09:37:34 kernel: [142611.366895] cfg80211: 2012-01-01 09:37:34 kernel: [142611.366896] cfg80211: 2012-01-02 09:37:34 kernel: [142611.366898] cfg80211: 2012-01-03 09:37:34 kernel: [142611.366900] cfg80211: 2012-01-04 09:37:34 kernel: [142611.366901] cfg80211: 2012-01-05 09:37:34 kernel: [142611.366998] ieee80211 2012-01-06 09:37:34 kernel: [142611.367354] Broadcom 2012-01-07 09:37:34 NetworkManager[1127]: found 2012-01-08 09:37:34 NetworkManager[1127]: WiFi 2012-01-09 09:37:34 NetworkManager[1127]: SCPlugin-Ifupdown: devices 2012-01-01 09:37:34 NetworkManager[1127]: SCPlugin-Ifupdown: device 2012-01-02 09:37:34 NetworkManager[1127]: (wlan0): 2012-01-03 09:37:34 NetworkManager[1127]: (wlan0): 2012-01-04 09:37:34 NetworkManager[1127]: (wlan0): 2012-01-05 09:37:34 NetworkManager[1127]: (wlan0): 2012-01-06 09:37:35 NetworkManager[1127]: wake 2012-01-07 09:37:35 NetworkManager[1127]: waking 2012-01-08 09:37:35 NetworkManager[1127]: (eth0): 2012-01-09 09:37:35 NetworkManager[1127]: (eth0): 2012-01-01 09:37:35 NetworkManager[1127]: (eth0): 2012-01-02 09:37:35 kernel: [142611.760464] tg3 2012-01-03 09:37:35 kernel: [142611.760472] tg3 2012-01-04 09:37:35 kernel: [142611.760480] tg3 2012-01-05 09:37:35 kernel: [142611.760487] tg3 2012-01-06 09:37:35 kernel: [142611.760492] tg3 2012-01-07 09:37:35 NetworkManager[1127]: (eth0): 2012-01-08 09:37:35 NetworkManager[1127]: (eth0): 2012-01-09 09:37:35 NetworkManager[1127]: Unmanaged 2012-01-01 09:37:35 NetworkManager[1127]: Unmanaged 2012-01-02 09:37:35 NetworkManager[1127]: (wlan0): 2012-01-03 09:37:35 NetworkManager[1127]: (wlan0): 2012-01-04 09:37:35 NetworkManager[1127]: (wlan0): 2012-01-05 09:37:35 NetworkManager[1127]: (wlan0): 2012-01-06 09:37:35 kernel: [142612.052707] ADDRCONF(NETDEV_UP): 2012-01-07 09:37:35 kernel: [142612.053500] ADDRCONF(NETDEV_UP): 2012-01-08 09:37:36 NetworkManager[1127]: (eth0): 2012-01-09 09:37:36 NetworkManager[1127]: (eth0): 2012-01-01 09:37:36 NetworkManager[1127]: Auto-activating 2012-01-02 09:37:36 NetworkManager[1127]: Activation 2012-01-03 09:37:36 kernel: [142613.615346] tg3 2012-01-04 09:37:36 kernel: [142613.615356] tg3 2012-01-05 09:37:36 NetworkManager[1127]: (eth0): 2012-01-06 09:37:36 kernel: [142613.615363] tg3 2012-01-07 09:37:36 kernel: [142613.615668] ADDRCONF(NETDEV_CHANGE): 2012-01-08 09:37:36 NetworkManager[1127]: Activation 2012-01-09 09:37:36 NetworkManager[1127]: Activation 2012-01-01 09:37:36 NetworkManager[1127]: Activation 2012-01-02 09:37:36 NetworkManager[1127]: Activation 2012-01-03 09:37:36 NetworkManager[1127]: Activation 2012-01-04 09:37:36 NetworkManager[1127]: (eth0): 2012-01-05 09:37:36 NetworkManager[1127]: Activation 2012-01-06 09:37:36 NetworkManager[1127]: Activation 2012-01-07 09:37:36 NetworkManager[1127]: Activation 2012-01-08 09:37:36 NetworkManager[1127]: Activation 2012-01-09 09:37:36 NetworkManager[1127]: (eth0): 2012-01-01 09:37:36 NetworkManager[1127]: Activation 2012-01-02 09:37:36 dhclient: Internet Systems 2012-01-03 09:37:36 dhclient: Copyright 2004-2011 2012-01-04 09:37:36 dhclient: All rights 2012-01-05 09:37:36 dhclient: For info, 2012-01-06 09:37:36 dhclient: 2012-01-07 09:37:36 NetworkManager[1127]: dhclient 2012-01-08 09:37:36 NetworkManager[1127]: Activation 2012-01-09 09:37:36 NetworkManager[1127]: Activation 2012-01-01 09:37:36 NetworkManager[1127]: (eth0): 2012-01-02 09:37:36 dhclient: Listening on 2012-01-03 09:37:36 dhclient: Sending on 2012-01-04 09:37:36 dhclient: Sending on 2012-01-05 09:37:36 dhclient: DHCPDISCOVER on 2012-01-06 09:37:37 dhclient: DHCPREQUEST of 2012-01-07 09:37:37 dhclient: DHCPOFFER of 2012-01-08 09:37:37 dhclient: DHCPACK of 2012-01-09 09:37:37 dhclient: bound to 2012-01-01 09:37:37 NetworkManager[1127]: (eth0): 2012-01-02 09:37:37 NetworkManager[1127]: address 2012-01-03 09:37:37 NetworkManager[1127]: prefix 2012-01-04 09:37:37 NetworkManager[1127]: gateway 2012-01-05 09:37:37 NetworkManager[1127]: hostname 2012-01-06 09:37:37 NetworkManager[1127]: nameserver 2012-01-07 09:37:37 NetworkManager[1127]: nameserver 2012-01-08 09:37:37 NetworkManager[1127]: Activation 2012-01-09 09:37:37 NetworkManager[1127]: Activation 2012-01-01 09:37:38 dnsmasq[14766]: exiting on 2012-01-02 09:37:38 NetworkManager[1127]: DNS: 2012-01-03 09:37:38 NetworkManager[1127]: (eth0): 2012-01-04 09:37:38 NetworkManager[1127]: (eth0): 2012-01-05 09:37:38 dnsmasq[16068]: started, version 2012-01-06 09:37:38 dnsmasq[16068]: compile time 2012-01-07 09:37:38 dnsmasq[16068]: using nameserver 2012-01-08 09:37:38 dnsmasq[16068]: using nameserver 2012-01-09 09:37:39 NetworkManager[1127]: Policy 2012-01-01 09:37:39 NetworkManager[1127]: Activation 2012-01-02 09:37:39 NetworkManager[1127]: Activation 2012-01-03 09:37:39 dbus[1092]: [system] Activating 2012-01-04 09:37:39 dbus[1092]: [system] Successfully 2012-01-05 09:37:41 gnome-screensaver-dialog: pam_ecryptfs: pam_sm_authenticate: 2012-01-06 09:37:47 kernel: [142623.749159] eth0: 2012-01-07 09:37:47 ntpdate[16132]: step time 2012-01-08 09:37:55 NetworkManager[1127]: (eth0): 2012-01-09 09:37:55 NetworkManager[1127]: Activation 2012-01-01 09:37:55 NetworkManager[1127]: Activation 2012-01-02 09:37:55 NetworkManager[1127]: Activation 2012-01-03 09:38:19 dbus[1092]: [system] Activating 2012-01-04 09:38:19 AptDaemon: INFO: Initializing 2012-01-05 09:38:19 dbus[1092]: [system] Successfully 2012-01-06 09:38:19 AptDaemon.PackageKit: INFO: Initializing 2012-01-07 09:38:19 AptDaemon: INFO: CommitPackages() 2012-01-08 09:38:20 AptDaemon.Trans: INFO: Queuing 2012-01-09 09:38:24 AptDaemon.Worker: INFO: Simulating 2012-01-01 09:38:24 AptDaemon.Worker: INFO: Committing 2012-01-02 09:38:25 AptDaemon.Worker: INFO: Processing 2012-01-03 09:43:30 anacron[16257]: Anacron 2.3 2012-01-04 09:43:30 anacron[16257]: Normal exit 2012-01-05 10:05:34 kernel: [144290.760767] CPU6: 2012-01-06 10:05:34 kernel: [144290.760771] CPU2: 2012-01-07 10:05:34 kernel: [144290.760774] CPU0: 2012-01-08 10:05:34 kernel: [144290.760779] CPU3: 2012-01-09 10:05:34 kernel: [144290.760783] CPU5: 2012-01-01 10:05:34 kernel: [144290.760786] CPU1: 2012-01-02 10:05:34 kernel: [144290.760790] CPU7: 2012-01-03 10:05:34 kernel: [144290.760794] CPU4: 2012-01-04 10:05:34 kernel: [144290.760797] CPU2: 2012-01-05 10:05:34 kernel: [144290.760801] CPU6: 2012-01-06 10:05:34 kernel: [144290.765807] CPU2: 2012-01-07 10:05:34 kernel: [144290.765810] CPU6: 2012-01-08 10:05:34 kernel: [144290.765813] CPU3: 2012-01-09 10:05:34 kernel: [144290.765816] CPU0: 2012-01-01 10:05:34 kernel: [144290.765819] CPU7: 2012-01-02 10:05:34 kernel: [144290.765822] CPU1: 2012-01-03 10:05:34 kernel: [144290.765825] CPU4: 2012-01-04 10:05:34 kernel: [144290.765827] CPU5: 2012-01-05 10:05:34 kernel: [144290.765829] CPU6: 2012-01-06 10:05:34 kernel: [144290.765832] CPU2: 2012-01-07 10:05:39 AptDaemon.Trans: INFO: Cancelling 2012-01-08 10:05:40 AptDaemon.Worker: INFO: Finished 2012-01-09 10:05:54 kernel: [144310.995421] [Hardware 2012-01-01 10:06:40 AptDaemon.PackageKit: INFO: Initializing 2012-01-02 10:06:40 AptDaemon.Worker: INFO: Simulating 2012-01-03 10:06:40 AptDaemon.Worker: INFO: Processing 2012-01-04 10:06:41 AptDaemon.PackageKit: INFO: Get 2012-01-05 10:06:41 AptDaemon.Worker: INFO: Finished 2012-01-06 10:12:33 AptDaemon: INFO: Quitting 2012-01-07 10:12:33 AptDaemon: INFO: Quitting 2012-01-08 10:15:44 kernel: [144899.845423] CPU6: 2012-01-09 10:15:44 kernel: [144899.845427] CPU3: 2012-01-01 10:15:44 kernel: [144899.845432] CPU0: 2012-01-02 10:15:44 kernel: [144899.845436] CPU1: 2012-01-03 10:15:44 kernel: [144899.845439] CPU2: 2012-01-04 10:15:44 kernel: [144899.845442] CPU5: 2012-01-05 10:15:44 kernel: [144899.845445] CPU4: 2012-01-06 10:15:44 kernel: [144899.845449] CPU7: 2012-01-07 10:15:44 kernel: [144899.845452] CPU2: 2012-01-08 10:15:44 kernel: [144899.845455] CPU6: 2012-01-09 10:15:44 kernel: [144899.846383] CPU6: 2012-01-01 10:15:44 kernel: [144899.846385] CPU1: 2012-01-02 10:15:44 kernel: [144899.846388] CPU3: 2012-01-03 10:15:44 kernel: [144899.846390] CPU4: 2012-01-04 10:15:44 kernel: [144899.846393] CPU7: 2012-01-05 10:15:44 kernel: [144899.846395] CPU0: 2012-01-06 10:15:44 kernel: [144899.846397] CPU2: 2012-01-07 10:15:44 kernel: [144899.846399] CPU5: 2012-01-08 10:15:44 kernel: [144899.846402] CPU2: 2012-01-09 10:15:44 kernel: [144899.846404] CPU6: 2012-01-01 10:17:01 CRON[16609]: (root) CMD 2012-01-02 10:17:30 kernel: [145006.236581] [Hardware 2012-01-03 10:32:27 NetworkManager[1127]: (eth0): 2012-01-04 10:32:27 kernel: [145902.179285] tg3 2012-01-05 10:32:31 NetworkManager[1127]: (eth0): 2012-01-06 10:32:31 NetworkManager[1127]: (eth0): 2012-01-07 10:32:32 NetworkManager[1127]: (eth0): 2012-01-08 10:32:32 dnsmasq[16068]: exiting on 2012-01-09 10:32:32 NetworkManager[1127]: DNS: 2012-01-01 10:32:32 NetworkManager[1127]: (eth0): 2012-01-02 10:32:32 dnsmasq[16617]: started, version 2012-01-03 10:32:32 dnsmasq[16617]: compile time 2012-01-04 10:32:32 dnsmasq[16617]: warning: no 2012-01-05 10:32:32 kernel: [145906.703379] ADDRCONF(NETDEV_UP): 2012-01-06 10:32:32 dbus[1092]: [system] Activating 2012-01-07 10:32:32 dbus[1092]: [system] Successfully 2012-01-08 10:32:32 kernel: [145906.924958] CPU0: 2012-01-09 10:32:32 kernel: [145906.924963] CPU3: 2012-01-01 10:32:32 kernel: [145906.924966] CPU4: 2012-01-02 10:32:32 kernel: [145906.924970] CPU5: 2012-01-03 10:32:32 kernel: [145906.924974] CPU1: 2012-01-04 10:32:32 kernel: [145906.924977] CPU7: 2012-01-05 10:32:32 kernel: [145906.924981] CPU2: 2012-01-06 10:32:32 kernel: [145906.924984] CPU6: 2012-01-07 10:32:32 kernel: [145906.924987] CPU2: 2012-01-08 10:32:32 kernel: [145906.924989] CPU6: 2012-01-09 10:32:32 kernel: [145906.925967] CPU4: 2012-01-01 10:32:32 kernel: [145906.925969] CPU6: 2012-01-02 10:32:32 kernel: [145906.925971] CPU2: 2012-01-03 10:32:32 kernel: [145906.925973] CPU3: 2012-01-04 10:32:32 kernel: [145906.925975] CPU5: 2012-01-05 10:32:32 kernel: [145906.925977] CPU1: 2012-01-06 10:32:32 kernel: [145906.925979] CPU0: 2012-01-07 10:32:32 kernel: [145906.925982] CPU7: 2012-01-08 10:32:32 kernel: [145906.925984] CPU6: 2012-01-09 10:32:32 kernel: [145906.925985] CPU2: 2012-01-01 10:33:13 NetworkManager[1127]: (eth0): 2012-01-02 10:33:13 NetworkManager[1127]: (eth0): 2012-01-03 10:33:13 NetworkManager[1127]: Auto-activating 2012-01-04 10:33:13 NetworkManager[1127]: Activation 2012-01-05 10:33:13 NetworkManager[1127]: (eth0): 2012-01-06 10:33:13 kernel: [145947.980648] tg3 2012-01-07 10:33:13 kernel: [145947.980650] tg3 2012-01-08 10:33:13 kernel: [145947.980652] tg3 2012-01-09 10:33:13 kernel: [145947.980737] ADDRCONF(NETDEV_CHANGE): 2012-01-01 10:33:13 NetworkManager[1127]: Activation 2012-01-02 10:33:13 NetworkManager[1127]: Activation 2012-01-03 10:33:13 NetworkManager[1127]: Activation 2012-01-04 10:33:13 NetworkManager[1127]: Activation 2012-01-05 10:33:13 NetworkManager[1127]: Activation 2012-01-06 10:33:13 NetworkManager[1127]: (eth0): 2012-01-07 10:33:13 NetworkManager[1127]: Activation 2012-01-08 10:33:13 NetworkManager[1127]: Activation 2012-01-09 10:33:13 NetworkManager[1127]: Activation 2012-01-01 10:33:13 NetworkManager[1127]: Activation 2012-01-02 10:33:13 NetworkManager[1127]: (eth0): 2012-01-03 10:33:13 NetworkManager[1127]: Activation 2012-01-04 10:33:13 NetworkManager[1127]: dhclient 2012-01-05 10:33:13 NetworkManager[1127]: Activation 2012-01-06 10:33:13 NetworkManager[1127]: Activation 2012-01-07 10:33:13 dhclient: Internet Systems 2012-01-08 10:33:13 dhclient: Copyright 2004-2011 2012-01-09 10:33:13 dhclient: All rights 2012-01-01 10:33:13 dhclient: For info, 2012-01-02 10:33:13 dhclient: 2012-01-03 10:33:13 NetworkManager[1127]: (eth0): 2012-01-04 10:33:13 dhclient: Listening on 2012-01-05 10:33:13 dhclient: Sending on 2012-01-06 10:33:13 dhclient: Sending on 2012-01-07 10:33:13 dhclient: DHCPREQUEST of 2012-01-08 10:33:13 dhclient: DHCPACK of 2012-01-09 10:33:13 dhclient: bound to 2012-01-01 10:33:13 NetworkManager[1127]: (eth0): 2012-01-02 10:33:13 NetworkManager[1127]: address 2012-01-03 10:33:13 NetworkManager[1127]: prefix 2012-01-04 10:33:13 NetworkManager[1127]: gateway 2012-01-05 10:33:13 NetworkManager[1127]: hostname 2012-01-06 10:33:13 NetworkManager[1127]: nameserver 2012-01-07 10:33:13 NetworkManager[1127]: nameserver 2012-01-08 10:33:13 NetworkManager[1127]: Activation 2012-01-09 10:33:13 NetworkManager[1127]: Activation 2012-01-01 10:33:14 dnsmasq[16617]: exiting on 2012-01-02 10:33:14 NetworkManager[1127]: DNS: 2012-01-03 10:33:14 NetworkManager[1127]: (eth0): 2012-01-04 10:33:14 dnsmasq[16644]: started, version 2012-01-05 10:33:14 dnsmasq[16644]: compile time 2012-01-06 10:33:14 dnsmasq[16644]: using nameserver 2012-01-07 10:33:14 dnsmasq[16644]: using nameserver 2012-01-08 10:33:14 NetworkManager[1127]: (eth0): 2012-01-09 10:33:14 NetworkManager[1127]: Policy 2012-01-01 10:33:14 NetworkManager[1127]: Activation 2012-01-02 10:33:14 dbus[1092]: [system] Activating 2012-01-03 10:33:14 NetworkManager[1127]: Activation 2012-01-04 10:33:14 dbus[1092]: [system] Successfully 2012-01-05 10:33:23 kernel: [145958.164609] eth0: 2012-01-06 10:33:24 ntpdate[16708]: adjust time 2012-01-07 10:33:24 kernel: [145959.395445] [Hardware 2012-01-08 10:33:33 NetworkManager[1127]: (eth0): 2012-01-09 10:33:33 NetworkManager[1127]: Activation 2012-01-01 10:33:33 NetworkManager[1127]: Activation 2012-01-02 10:33:33 NetworkManager[1127]: Activation 2012-01-03 10:43:49 kernel: [146583.435659] CPU2: 2012-01-04 10:43:49 kernel: [146583.435663] CPU6: 2012-01-05 10:43:49 kernel: [146583.435667] CPU7: 2012-01-06 10:43:49 kernel: [146583.435670] CPU3: 2012-01-07 10:43:49 kernel: [146583.435673] CPU4: 2012-01-08 10:43:49 kernel: [146583.435677] CPU0: 2012-01-09 10:43:49 kernel: [146583.435680] CPU6: 2012-01-01 10:43:49 kernel: [146583.435683] CPU2: 2012-01-02 10:43:49 kernel: [146583.435687] CPU5: 2012-01-03 10:43:49 kernel: [146583.435690] CPU1: 2012-01-04 10:43:49 kernel: [146583.436659] CPU6: 2012-01-05 10:43:49 kernel: [146583.436661] CPU2: 2012-01-06 10:43:49 kernel: [146583.436663] CPU4: 2012-01-07 10:43:49 kernel: [146583.436665] CPU3: 2012-01-08 10:43:49 kernel: [146583.436668] CPU7: 2012-01-09 10:43:49 kernel: [146583.436670] CPU0: 2012-01-01 10:43:49 kernel: [146583.436672] CPU2: 2012-01-02 10:43:49 kernel: [146583.436674] CPU6: 2012-01-03 10:43:49 kernel: [146583.436685] CPU1: 2012-01-04 10:43:49 kernel: [146583.436688] CPU5: 2012-01-05 10:45:00 kernel: [146654.791212] [Hardware 2012-01-06 10:58:24 dbus[1092]: [system] Activating 2012-01-07 10:58:24 AptDaemon: INFO: Initializing 2012-01-08 10:58:24 dbus[1092]: [system] Successfully 2012-01-09 10:58:24 AptDaemon.PackageKit: INFO: Initializing 2012-01-01 10:58:24 AptDaemon: INFO: CommitPackages() 2012-01-02 10:58:24 AptDaemon.Trans: INFO: Queuing 2012-01-03 10:58:31 AptDaemon.Worker: INFO: Simulating 2012-01-04 10:58:32 AptDaemon.Worker: INFO: Committing 2012-01-05 10:58:32 AptDaemon.Worker: INFO: Processing 2012-01-06 11:02:06 AptDaemon.Trans: INFO: Cancelling 2012-01-07 11:02:08 AptDaemon.Worker: INFO: Finished 2012-01-08 11:03:09 AptDaemon.PackageKit: INFO: Initializing 2012-01-09 11:03:09 AptDaemon.Worker: INFO: Simulating 2012-01-01 11:03:09 AptDaemon.Worker: INFO: Processing 2012-01-02 11:03:09 AptDaemon.PackageKit: INFO: Get 2012-01-03 11:03:09 AptDaemon.Worker: INFO: Finished 2012-01-04 11:04:55 AptDaemon: INFO: CommitPackages() 2012-01-05 11:04:55 AptDaemon.Trans: INFO: Queuing 2012-01-06 11:05:00 AptDaemon.Worker: INFO: Simulating 2012-01-07 11:05:00 AptDaemon.Worker: INFO: Committing 2012-01-08 11:05:01 AptDaemon.Worker: INFO: Processing 2012-01-09 11:16:31 AptDaemon.Trans: INFO: Cancelling 2012-01-01 11:16:32 AptDaemon.Worker: INFO: Finished 2012-01-02 11:17:01 CRON[16971]: (root) CMD 2012-01-03 11:17:32 AptDaemon.PackageKit: INFO: Initializing 2012-01-04 11:17:32 AptDaemon.Worker: INFO: Simulating 2012-01-05 11:17:32 AptDaemon.Worker: INFO: Processing 2012-01-06 11:17:33 AptDaemon.PackageKit: INFO: Get 2012-01-07 11:17:33 AptDaemon.Worker: INFO: Finished 2012-01-08 11:23:32 AptDaemon: INFO: Quitting 2012-01-09 11:23:32 AptDaemon: INFO: Quitting 2012-01-01 11:25:04 gnome-screensaver-dialog: pam_ecryptfs: pam_sm_authenticate: 2012-01-02 11:25:18 NetworkManager[1127]: sleep 2012-01-03 11:25:18 NetworkManager[1127]: sleeping 2012-01-04 11:25:18 NetworkManager[1127]: (eth0): 2012-01-05 11:25:18 NetworkManager[1127]: (eth0): 2012-01-06 11:25:18 NetworkManager[1127]: (eth0): 2012-01-07 11:25:18 kernel: [149069.922286] tg3 2012-01-08 11:25:18 NetworkManager[1127]: (eth0): 2012-01-09 11:25:18 dnsmasq[16644]: exiting on 2012-01-01 11:25:18 NetworkManager[1127]: DNS: 2012-01-02 11:25:18 NetworkManager[1127]: (eth0): 2012-01-03 11:25:18 NetworkManager[1127]: (eth0): 2012-01-04 11:25:18 dnsmasq[17021]: started, version 2012-01-05 11:25:18 dnsmasq[17021]: compile time 2012-01-06 11:25:18 dnsmasq[17021]: warning: no 2012-01-07 11:25:18 NetworkManager[1127]: (eth0): 2012-01-08 11:25:18 kernel: [149069.943676] ADDRCONF(NETDEV_UP): 2012-01-09 11:25:18 NetworkManager[1127]: (wlan0): 2012-01-01 11:25:18 NetworkManager[1127]: (wlan0): 2012-01-02 11:25:18 dbus[1092]: [system] Activating 2012-01-03 11:25:18 NetworkManager[1127]: (eth0): 2012-01-04 11:25:18 dbus[1092]: [system] Successfully 2012-01-05 11:25:19 anacron[17112]: Anacron 2.3 2012-01-06 11:25:19 anacron[17112]: Normal exit 2012-01-07 11:25:19 NetworkManager[1127]: SCPlugin-Ifupdown: devices 2012-01-08 11:25:19 NetworkManager[1127]: radio 2012-01-09 11:25:19 NetworkManager[1127]: WiFi 2012-01-01 11:25:20 kernel: [149071.669528] bcma-pci-bridge 2012-01-02 11:41:37 kernel: [149074.113021] PM: 2012-01-03 11:41:37 kernel: [149074.258012] PM: 2012-01-04 11:41:37 kernel: [149074.258023] Freezing 2012-01-05 11:41:37 kernel: [149074.274770] Freezing 2012-01-06 11:41:37 kernel: [149074.290744] PM: 2012-01-07 11:41:37 kernel: [149074.290797] Suspending 2012-01-08 11:41:37 kernel: [149074.291460] sd 2012-01-09 11:41:37 kernel: [149074.291526] apple-gmux 2012-01-01 11:41:37 kernel: [149074.291565] sd 2012-01-02 11:41:37 kernel: [149074.292207] snd_hda_intel 2012-01-03 11:41:37 kernel: [149074.292219] [fglrx] 2012-01-04 11:41:37 kernel: [149074.292257] pciehp 2012-01-05 11:41:37 kernel: [149074.292293] [fglrx] 2012-01-06 11:41:37 kernel: [149074.330712] uhci_hcd 2012-01-07 11:41:37 kernel: [149074.330736] uhci_hcd 2012-01-08 11:41:37 kernel: [149074.338654] ehci_hcd 2012-01-09 11:41:37 kernel: [149074.354637] ehci_hcd 2012-01-01 11:41:37 kernel: [149074.394719] snd_hda_intel 2012-01-02 11:41:37 kernel: [149074.410580] PM: 2012-01-03 11:41:37 kernel: [149074.920661] PM: 2012-01-04 11:41:37 kernel: [149074.920679] PM: 2012-01-05 11:41:37 kernel: [149074.920714] PM: 2012-01-06 11:41:37 kernel: [149074.920979] ata_piix 2012-01-07 11:41:37 kernel: [149074.934071] PM: 2012-01-08 11:41:37 kernel: [149075.224839] [fglrx] 2012-01-09 11:41:37 kernel: [149075.224841] [fglrx] 2012-01-01 11:41:37 kernel: [149075.224916] PM: 2012-01-02 11:41:37 kernel: [149075.224964] PM: 2012-01-03 11:41:37 kernel: [149075.225034] PM: 2012-01-04 11:41:37 kernel: [149075.225041] PM: 2012-01-05 11:41:37 kernel: [149075.225044] PM: 2012-01-06 11:41:37 kernel: [149075.225460] ehci_hcd 2012-01-07 11:41:37 kernel: [149075.225467] ehci_hcd 2012-01-08 11:41:37 kernel: [149075.238178] ehci_hcd 2012-01-09 11:41:37 kernel: [149075.238188] ehci_hcd 2012-01-01 11:41:37 kernel: [149075.269910] PM: 2012-01-02 11:41:37 kernel: [149075.270103] ACPI: 2012-01-03 11:41:37 kernel: [149075.309888] PM: 2012-01-04 11:41:37 kernel: [149075.310033] Disabling 2012-01-05 11:41:37 kernel: [149075.413683] CPU 2012-01-06 11:41:37 kernel: [149075.517580] CPU 2012-01-07 11:41:37 kernel: [149075.621476] CPU 2012-01-08 11:41:37 kernel: [149075.725376] CPU 2012-01-09 11:41:37 kernel: [149075.829271] CPU 2012-01-01 11:41:37 kernel: [149075.933171] CPU 2012-01-02 11:41:37 kernel: [149076.037069] CPU 2012-01-03 11:41:37 kernel: [149076.037411] Extended 2012-01-04 11:41:37 kernel: [149076.037683] ACPI: 2012-01-05 11:41:37 kernel: [149076.037723] PM: 2012-01-06 11:41:37 kernel: [149076.038031] Extended 2012-01-07 11:41:37 kernel: [149076.038071] Enabling 2012-01-08 11:41:37 kernel: [149076.038169] Booting 2012-01-09 11:41:37 kernel: [149076.038171] smpboot 2012-01-01 11:41:37 kernel: [149076.048481] Initializing 2012-01-02 11:41:37 kernel: [149076.049185] Calibrating 2012-01-03 11:41:37 kernel: [149076.069509] NMI 2012-01-04 11:41:37 kernel: [149076.070168] CPU1 2012-01-05 11:41:37 kernel: [149076.070245] Booting 2012-01-06 11:41:37 kernel: [149076.070247] smpboot 2012-01-07 11:41:37 kernel: [149076.080542] Initializing 2012-01-08 11:41:37 kernel: [149076.081260] Calibrating 2012-01-09 11:41:37 kernel: [149076.101586] NMI 2012-01-01 11:41:37 kernel: [149076.102306] CPU2 2012-01-02 11:41:37 kernel: [149076.102379] Booting 2012-01-03 11:41:37 kernel: [149076.102381] smpboot 2012-01-04 11:41:37 kernel: [149076.112677] Initializing 2012-01-05 11:41:37 kernel: [149076.113395] Calibrating 2012-01-06 11:41:37 kernel: [149076.133822] NMI 2012-01-07 11:41:37 kernel: [149076.134548] CPU3 2012-01-08 11:41:37 kernel: [149076.134619] Booting 2012-01-09 11:41:37 kernel: [149076.134621] smpboot 2012-01-01 11:41:37 kernel: [149076.144917] Initializing 2012-01-02 11:41:37 kernel: [149076.145634] Calibrating 2012-01-03 11:41:37 kernel: [149076.166190] NMI 2012-01-04 11:41:37 kernel: [149076.166995] CPU4 2012-01-05 11:41:37 kernel: [149076.167157] Booting 2012-01-06 11:41:37 kernel: [149076.167159] smpboot 2012-01-07 11:41:37 kernel: [149076.177441] Initializing 2012-01-08 11:41:37 kernel: [149076.178171] Calibrating 2012-01-09 11:41:37 kernel: [149076.198875] NMI 2012-01-01 11:41:37 kernel: [149076.199832] CPU5 2012-01-02 11:41:37 kernel: [149076.200194] Booting 2012-01-03 11:41:37 kernel: [149076.200196] smpboot 2012-01-04 11:41:37 kernel: [149076.210499] Initializing 2012-01-05 11:41:37 kernel: [149076.211210] Calibrating 2012-01-06 11:41:37 kernel: [149076.232001] NMI 2012-01-07 11:41:37 kernel: [149076.232992] CPU6 2012-01-08 11:41:37 kernel: [149076.233154] Booting 2012-01-09 11:41:37 kernel: [149076.233155] smpboot 2012-01-01 11:41:37 kernel: [149076.243438] Initializing 2012-01-02 11:41:37 kernel: [149076.244168] Calibrating 2012-01-03 11:41:37 kernel: [149076.265066] NMI 2012-01-04 11:41:37 kernel: [149076.266094] CPU7 2012-01-05 11:41:37 kernel: [149076.273980] ACPI: 2012-01-06 11:41:37 kernel: [149077.228656] pcieport 2012-01-07 11:41:37 kernel: [149077.228660] pcieport 2012-01-08 11:41:37 kernel: [149077.228663] pcieport 2012-01-09 11:41:37 kernel: [149077.228665] pcieport 2012-01-01 11:41:37 kernel: [149077.228668] pcieport 2012-01-02 11:41:37 kernel: [149077.228670] pcieport 2012-01-03 11:41:37 kernel: [149077.228687] pcieport 2012-01-04 11:41:37 kernel: [149077.228690] pcieport 2012-01-05 11:41:37 kernel: [149077.228692] pcieport 2012-01-06 11:41:37 kernel: [149077.228695] pcieport 2012-01-07 11:41:37 kernel: [149077.228697] pcieport 2012-01-08 11:41:37 kernel: [149077.228699] pcieport 2012-01-09 11:41:37 kernel: [149077.228702] pcieport 2012-01-01 11:41:37 kernel: [149077.228718] mei 2012-01-02 11:41:37 kernel: [149077.228731] mei 2012-01-03 11:41:37 kernel: [149077.228749] uhci_hcd 2012-01-04 11:41:37 kernel: [149077.228759] uhci_hcd 2012-01-05 11:41:37 kernel: [149077.228768] uhci_hcd 2012-01-06 11:41:37 kernel: [149077.228788] ehci_hcd 2012-01-07 11:41:37 kernel: [149077.228803] ehci_hcd 2012-01-08 11:41:37 kernel: [149077.228809] ehci_hcd 2012-01-09 11:41:37 kernel: [149077.228825] ehci_hcd 2012-01-01 11:41:37 kernel: [149077.228829] ehci_hcd 2012-01-02 11:41:37 kernel: [149077.228842] snd_hda_intel 2012-01-03 11:41:37 kernel: [149077.228854] snd_hda_intel 2012-01-04 11:41:37 kernel: [149077.228857] snd_hda_intel 2012-01-05 11:41:37 kernel: [149077.228862] snd_hda_intel 2012-01-06 11:41:37 kernel: [149077.228886] pcieport 2012-01-07 11:41:37 kernel: [149077.228895] pcieport 2012-01-08 11:41:37 kernel: [149077.228899] pcieport 2012-01-09 11:41:37 kernel: [149077.228903] pcieport 2012-01-01 11:41:37 kernel: [149077.228907] pcieport 2012-01-02 11:41:37 kernel: [149077.228913] pcieport 2012-01-03 11:41:37 kernel: [149077.228918] pcieport 2012-01-04 11:41:37 kernel: [149077.228955] pcieport 2012-01-05 11:41:37 kernel: [149077.228964] pcieport 2012-01-06 11:41:37 kernel: [149077.228968] pcieport 2012-01-07 11:41:37 kernel: [149077.228972] pcieport 2012-01-08 11:41:37 kernel: [149077.228976] pcieport 2012-01-09 11:41:37 kernel: [149077.228982] pcieport 2012-01-01 11:41:37 kernel: [149077.228986] pcieport 2012-01-02 11:41:37 kernel: [149077.229025] pcieport 2012-01-03 11:41:37 kernel: [149077.229034] pcieport 2012-01-04 11:41:37 kernel: [149077.229038] pcieport 2012-01-05 11:41:37 kernel: [149077.229045] pcieport 2012-01-06 11:41:37 kernel: [149077.229050] pcieport 2012-01-07 11:41:37 kernel: [149077.229088] pcieport 2012-01-08 11:41:37 kernel: [149077.229097] pcieport 2012-01-09 11:41:37 kernel: [149077.229101] pcieport 2012-01-01 11:41:37 kernel: [149077.229105] pcieport 2012-01-02 11:41:37 kernel: [149077.229109] pcieport 2012-01-03 11:41:37 kernel: [149077.229115] pcieport 2012-01-04 11:41:37 kernel: [149077.229119] pcieport 2012-01-05 11:41:37 kernel: [149077.229150] uhci_hcd 2012-01-06 11:41:37 kernel: [149077.229160] uhci_hcd 2012-01-07 11:41:37 kernel: [149077.229169] uhci_hcd 2012-01-08 11:41:37 kernel: [149077.229189] ehci_hcd 2012-01-09 11:41:37 kernel: [149077.229203] ehci_hcd 2012-01-01 11:41:37 kernel: [149077.229209] ehci_hcd 2012-01-02 11:41:37 kernel: [149077.229223] ehci_hcd 2012-01-03 11:41:37 kernel: [149077.229227] ehci_hcd 2012-01-04 11:41:37 kernel: [149077.229268] ata_piix 2012-01-05 11:41:37 kernel: [149077.229277] ata_piix 2012-01-06 11:41:37 kernel: [149077.229281] ata_piix 2012-01-07 11:41:37 kernel: [149077.229284] ata_piix 2012-01-08 11:41:37 kernel: [149077.229288] ata_piix 2012-01-09 11:41:37 kernel: [149077.229292] ata_piix 2012-01-01 11:41:37 kernel: [149077.229297] ata_piix 2012-01-02 11:41:37 kernel: [149077.229309] pci 2012-01-03 11:41:37 kernel: [149077.229322] pci 2012-01-04 11:41:37 kernel: [149077.229327] pci 2012-01-05 11:41:37 kernel: [149077.229347] fglrx_pci 2012-01-06 11:41:37 kernel: [149077.229352] fglrx_pci 2012-01-07 11:41:37 kernel: [149077.229358] fglrx_pci 2012-01-08 11:41:37 kernel: [149077.229363] fglrx_pci 2012-01-09 11:41:37 kernel: [149077.229367] fglrx_pci 2012-01-01 11:41:37 kernel: [149077.229370] fglrx_pci 2012-01-02 11:41:37 kernel: [149077.229374] fglrx_pci 2012-01-03 11:41:37 kernel: [149077.229410] snd_hda_intel 2012-01-04 11:41:37 kernel: [149077.229423] snd_hda_intel 2012-01-05 11:41:37 kernel: [149077.229426] snd_hda_intel 2012-01-06 11:41:37 kernel: [149077.229431] snd_hda_intel 2012-01-07 11:41:37 kernel: [149077.229519] tg3 2012-01-08 11:41:37 kernel: [149077.229544] tg3 2012-01-09 11:41:37 kernel: [149077.229552] tg3 2012-01-01 11:41:37 kernel: [149077.229558] tg3 2012-01-02 11:41:37 kernel: [149077.229566] tg3 2012-01-03 11:41:37 kernel: [149077.229659] pci 2012-01-04 11:41:37 kernel: [149077.229698] pci 2012-01-05 11:41:37 kernel: [149077.229707] pci 2012-01-06 11:41:37 kernel: [149077.229719] pci 2012-01-07 11:41:37 kernel: [149077.229788] firewire_ohci 2012-01-08 11:41:37 kernel: [149077.229820] firewire_ohci 2012-01-09 11:41:37 kernel: [149077.229827] firewire_ohci 2012-01-01 11:41:37 kernel: [149077.229916] PM: 2012-01-02 11:41:37 kernel: [149077.229991] uhci_hcd 2012-01-03 11:41:37 kernel: [149077.229999] uhci_hcd 2012-01-04 11:41:37 kernel: [149077.230025] ehci_hcd 2012-01-05 11:41:37 kernel: [149077.230027] usb 2012-01-06 11:41:37 kernel: [149077.230033] mei 2012-01-07 11:41:37 kernel: [149077.230035] ehci_hcd 2012-01-08 11:41:37 kernel: [149077.230043] snd_hda_intel 2012-01-09 11:41:37 kernel: [149077.230049] snd_hda_intel 2012-01-01 11:41:37 kernel: [149077.230072] uhci_hcd 2012-01-02 11:41:37 kernel: [149077.230075] ehci_hcd 2012-01-03 11:41:37 kernel: [149077.230080] pciehp 2012-01-04 11:41:37 kernel: [149077.230087] ata_piix 2012-01-05 11:41:37 kernel: [149077.230090] uhci_hcd 2012-01-06 11:41:37 kernel: [149077.230092] ehci_hcd 2012-01-07 11:41:37 kernel: [149077.230097] ata_piix 2012-01-08 11:41:37 kernel: [149077.230121] snd_hda_intel 2012-01-09 11:41:37 kernel: [149077.230140] usb 2012-01-01 11:41:37 kernel: [149077.230143] snd_hda_intel 2012-01-02 11:41:37 kernel: [149077.230175] snd_hda_intel 2012-01-03 11:41:37 kernel: [149077.230230] fglrx_pci 2012-01-04 11:41:37 kernel: [149077.230268] snd_hda_intel 2012-01-05 11:41:37 kernel: [149077.233469] sd 2012-01-06 11:41:37 kernel: [149077.235355] [fglrx] 2012-01-07 11:41:37 kernel: [149077.235534] [fglrx] 2012-01-08 11:41:37 kernel: [149077.280813] [fglrx] 2012-01-09 11:41:37 kernel: [149077.280889] [fglrx] 2012-01-01 11:41:37 kernel: [149077.284586] firewire_ohci 2012-01-02 11:41:37 kernel: [149077.284829] firewire_core: 2012-01-03 11:41:37 kernel: [149077.348453] PM: 2012-01-04 11:41:37 kernel: [149077.348457] PM: 2012-01-05 11:41:37 kernel: [149077.348460] PM: 2012-01-06 11:41:37 kernel: [149077.348464] PM: 2012-01-07 11:41:37 kernel: [149077.348474] PM: 2012-01-08 11:41:37 kernel: [149077.348477] PM: 2012-01-09 11:41:37 kernel: [149077.353290] PM: 2012-01-01 11:41:37 kernel: [149077.353293] PM: 2012-01-02 11:41:37 kernel: [149077.353307] PM: 2012-01-03 11:41:37 kernel: [149077.353310] PM: 2012-01-04 11:41:37 kernel: [149077.353313] PM: 2012-01-05 11:41:37 kernel: [149077.353316] PM: 2012-01-06 11:41:37 kernel: [149077.353319] PM: 2012-01-07 11:41:37 kernel: [149077.353321] PM: 2012-01-08 11:41:37 kernel: [149077.353324] PM: 2012-01-09 11:41:37 kernel: [149077.353327] PM: 2012-01-01 11:41:37 kernel: [149077.353646] PM: 2012-01-02 11:41:37 kernel: [149077.353650] PM: 2012-01-03 11:41:37 kernel: [149077.353686] PM: 2012-01-04 11:41:37 kernel: [149077.370456] PM: 2012-01-05 11:41:37 kernel: [149077.401047] PM: 2012-01-06 11:41:37 kernel: [149077.401052] PM: 2012-01-07 11:41:37 kernel: [149077.401056] PM: 2012-01-08 11:41:37 kernel: [149077.401059] PM: 2012-01-09 11:41:37 kernel: [149077.401062] PM: 2012-01-01 11:41:37 kernel: [149077.401067] PM: 2012-01-02 11:41:37 kernel: [149077.401069] PM: 2012-01-03 11:41:37 kernel: [149077.401078] PM: 2012-01-04 11:41:37 kernel: [149077.401084] PM: 2012-01-05 11:41:37 kernel: [149077.401087] PM: 2012-01-06 11:41:37 kernel: [149077.401091] PM: 2012-01-07 11:41:37 kernel: [149077.401094] PM: 2012-01-08 11:41:37 kernel: [149077.784066] firewire_core: 2012-01-09 11:41:37 kernel: [149078.575242] ata1.01: 2012-01-01 11:41:37 kernel: [149078.575356] ata2.01: 2012-01-02 11:41:37 kernel: [149078.731176] ata2.00: 2012-01-03 11:41:37 kernel: [149078.731190] ata2.01: 2012-01-04 11:41:37 kernel: [149078.731201] ata2.01: 2012-01-05 11:41:37 kernel: [149078.739345] ata2.00: 2012-01-06 11:41:37 kernel: [149078.755319] ata2.00: 2012-01-07 11:41:37 kernel: [149079.010899] ata1.00: 2012-01-08 11:41:37 kernel: [149079.010911] ata1.01: 2012-01-09 11:41:37 kernel: [149079.019081] ata1.00: 2012-01-01 11:41:37 kernel: [149079.035295] ata1.00: 2012-01-02 11:41:37 kernel: [149079.060709] PM: 2012-01-03 11:41:37 kernel: [149079.060745] PM: 2012-01-04 11:41:37 kernel: [149079.060749] PM: 2012-01-05 11:41:37 kernel: [149079.061816] PM: 2012-01-06 11:41:37 kernel: [149079.061870] PM: 2012-01-07 11:41:37 kernel: [149079.061899] PM: 2012-01-08 11:41:37 kernel: [149079.061900] Restarting 2012-01-09 11:41:37 anacron[17778]: Anacron 2.3 2012-01-01 11:41:37 anacron[17778]: Normal exit 2012-01-02 11:41:37 kernel: [149079.280801] bcma-pci-bridge 2012-01-03 11:41:37 kernel: [149079.280815] bcma-pci-bridge 2012-01-04 11:41:37 kernel: [149079.280867] bcma: 2012-01-05 11:41:37 kernel: [149079.280892] bcma: 2012-01-06 11:41:37 kernel: [149079.280948] bcma: 2012-01-07 11:41:37 kernel: [149079.281076] bcma: 2012-01-08 11:41:37 kernel: [149079.354368] bcma: 2012-01-09 11:41:37 kernel: [149079.357149] cfg80211: 2012-01-01 11:41:37 kernel: [149079.362622] cfg80211: 2012-01-02 11:41:37 kernel: [149079.362625] cfg80211: 2012-01-03 11:41:37 kernel: [149079.362627] cfg80211: 2012-01-04 11:41:37 kernel: [149079.362629] cfg80211: 2012-01-05 11:41:37 kernel: [149079.362630] cfg80211: 2012-01-06 11:41:37 kernel: [149079.362632] cfg80211: 2012-01-07 11:41:37 kernel: [149079.362633] cfg80211: 2012-01-08 11:41:37 kernel: [149079.365442] b43-phy0: 2012-01-09 11:41:37 kernel: [149079.366080] cfg80211: 2012-01-01 11:41:37 kernel: [149079.366083] cfg80211: 2012-01-02 11:41:37 kernel: [149079.366084] cfg80211: 2012-01-03 11:41:37 kernel: [149079.366086] cfg80211: 2012-01-04 11:41:37 kernel: [149079.366087] cfg80211: 2012-01-05 11:41:37 kernel: [149079.366089] cfg80211: 2012-01-06 11:41:37 kernel: [149079.366091] cfg80211: 2012-01-07 11:41:37 kernel: [149079.366092] cfg80211: 2012-01-08 11:41:37 kernel: [149079.366094] cfg80211: 2012-01-09 11:41:37 kernel: [149079.366096] cfg80211: 2012-01-01 11:41:37 kernel: [149079.366097] cfg80211: 2012-01-02 11:41:37 kernel: [149079.366099] cfg80211: 2012-01-03 11:41:37 kernel: [149079.366100] cfg80211: 2012-01-04 11:41:37 kernel: [149079.366102] cfg80211: 2012-01-05 11:41:37 kernel: [149079.366103] cfg80211: 2012-01-06 11:41:37 kernel: [149079.366105] cfg80211: 2012-01-07 11:41:37 kernel: [149079.366107] cfg80211: 2012-01-08 11:41:37 kernel: [149079.366108] cfg80211: 2012-01-09 11:41:37 kernel: [149079.366110] cfg80211: 2012-01-01 11:41:37 kernel: [149079.366111] cfg80211: 2012-01-02 11:41:37 kernel: [149079.366113] cfg80211: 2012-01-03 11:41:37 kernel: [149079.366115] cfg80211: 2012-01-04 11:41:37 kernel: [149079.366116] cfg80211: 2012-01-05 11:41:37 kernel: [149079.366118] cfg80211: 2012-01-06 11:41:37 kernel: [149079.366119] cfg80211: 2012-01-07 11:41:37 kernel: [149079.366121] cfg80211: 2012-01-08 11:41:37 kernel: [149079.366122] cfg80211: 2012-01-09 11:41:37 kernel: [149079.366124] cfg80211: 2012-01-01 11:41:37 kernel: [149079.366216] ieee80211 2012-01-02 11:41:37 kernel: [149079.366616] Broadcom 2012-01-03 11:41:37 NetworkManager[1127]: found 2012-01-04 11:41:37 NetworkManager[1127]: WiFi 2012-01-05 11:41:37 NetworkManager[1127]: SCPlugin-Ifupdown: devices 2012-01-06 11:41:37 NetworkManager[1127]: SCPlugin-Ifupdown: device 2012-01-07 11:41:37 NetworkManager[1127]: (wlan0): 2012-01-08 11:41:37 NetworkManager[1127]: (wlan0): 2012-01-09 11:41:37 NetworkManager[1127]: (wlan0): 2012-01-01 11:41:37 NetworkManager[1127]: (wlan0): 2012-01-02 11:41:37 pulseaudio[2813]: [pulseaudio] module-console-kit.c: 2012-01-03 11:41:38 NetworkManager[1127]: wake 2012-01-04 11:41:38 NetworkManager[1127]: waking 2012-01-05 11:41:38 NetworkManager[1127]: (eth0): 2012-01-06 11:41:38 NetworkManager[1127]: (eth0): 2012-01-07 11:41:38 NetworkManager[1127]: (eth0): 2012-01-08 11:41:38 kernel: [149079.666712] tg3 2012-01-09 11:41:38 kernel: [149079.666718] tg3 2012-01-01 11:41:38 kernel: [149079.666723] tg3 2012-01-02 11:41:38 kernel: [149079.666727] tg3 2012-01-03 11:41:38 kernel: [149079.666731] tg3 2012-01-04 11:41:39 NetworkManager[1127]: (eth0): 2012-01-05 11:41:39 NetworkManager[1127]: (eth0): 2012-01-06 11:41:39 NetworkManager[1127]: Unmanaged 2012-01-07 11:41:39 NetworkManager[1127]: Unmanaged 2012-01-08 11:41:39 NetworkManager[1127]: (wlan0): 2012-01-09 11:41:39 kernel: [149080.696203] ADDRCONF(NETDEV_UP): 2012-01-01 11:41:39 kernel: [149080.696984] ADDRCONF(NETDEV_UP): 2012-01-02 11:41:39 NetworkManager[1127]: (wlan0): 2012-01-03 11:41:39 NetworkManager[1127]: (wlan0): 2012-01-04 11:41:39 NetworkManager[1127]: (wlan0): 2012-01-05 11:41:51 kernel: [149093.289101] usb 2012-01-06 11:41:51 mtp-probe: checking bus 2012-01-07 11:41:51 mtp-probe: bus: 2, 2012-01-08 11:41:51 kernel: [149093.412961] scsi18 2012-01-09 11:41:51 kernel: [149093.413315] scsi19 2012-01-01 11:41:52 kernel: [149094.415839] scsi 2012-01-02 11:41:52 kernel: [149094.418988] scsi 2012-01-03 11:41:52 kernel: [149094.427538] sr1: 2012-01-04 11:41:52 kernel: [149094.427938] sr 2012-01-05 11:41:52 kernel: [149094.428204] sr 2012-01-06 11:41:52 kernel: [149094.429028] sd 2012-01-07 11:41:52 kernel: [149094.439790] sd 2012-01-08 11:41:53 usb_modeswitch: switching device 2012-01-09 11:41:53 kernel: [149094.623497] usb 2012-01-01 11:41:56 gnome-screensaver-dialog: pam_ecryptfs: pam_sm_authenticate: 2012-01-02 11:41:59 kernel: [149100.961756] usb 2012-01-03 11:41:59 mtp-probe: checking bus 2012-01-04 11:41:59 kernel: [149101.085787] option 2012-01-05 11:41:59 kernel: [149101.086042] usb 2012-01-06 11:41:59 kernel: [149101.086506] option 2012-01-07 11:41:59 kernel: [149101.086813] usb 2012-01-08 11:41:59 kernel: [149101.087252] option 2012-01-09 11:41:59 kernel: [149101.087510] usb 2012-01-01 11:41:59 kernel: [149101.088432] scsi23 2012-01-02 11:41:59 kernel: [149101.090303] scsi24 2012-01-03 11:41:59 mtp-probe: bus: 2, 2012-01-04 11:41:59 modem-manager[1113]: (ttyUSB0) 2012-01-05 11:42:00 kernel: [149102.088636] scsi 2012-01-06 11:42:00 kernel: [149102.094152] scsi 2012-01-07 11:42:00 usb_modeswitch: switched to 2012-01-08 11:42:00 kernel: [149102.103624] sr1: 2012-01-09 11:42:00 kernel: [149102.103784] sr 2012-01-01 11:42:00 kernel: [149102.103864] sr 2012-01-02 11:42:00 kernel: [149102.104437] sd 2012-01-03 11:42:00 kernel: [149102.114620] sd 2012-01-04 11:42:01 usb_modeswitch[18278]: usb_modeswitch: switched 2012-01-05 11:42:01 modem-manager[1113]: (ttyUSB0) 2012-01-06 11:42:01 modem-manager[1113]: (ttyUSB0) 2012-01-07 11:42:01 modem-manager[1113]: (ttyUSB0) 2012-01-08 11:42:01 modem-manager[1113]: (Huawei): 2012-01-09 11:42:02 modem-manager[1113]: (ttyUSB1) 2012-01-01 11:42:02 modem-manager[1113]: (ttyUSB2) 2012-01-02 11:42:06 modem-manager[1113]: (ttyUSB2) 2012-01-03 11:42:06 modem-manager[1113]: (ttyUSB2) 2012-01-04 11:42:06 modem-manager[1113]: (Huawei): 2012-01-05 11:42:06 modem-manager[1113]: (ttyUSB0) 2012-01-06 11:42:06 modem-manager[1113]: (ttyUSB0) 2012-01-07 11:42:09 modem-manager[1113]: (ttyUSB1) 2012-01-08 11:42:09 modem-manager[1113]: (ttyUSB1) 2012-01-09 11:42:09 modem-manager[1113]: (Huawei): 2012-01-01 11:42:09 NetworkManager[1127]: (ttyUSB0): 2012-01-02 11:42:09 NetworkManager[1127]: WWAN 2012-01-03 11:42:09 NetworkManager[1127]: (ttyUSB0): 2012-01-04 11:42:09 NetworkManager[1127]: (ttyUSB0): 2012-01-05 11:42:09 NetworkManager[1127]: (ttyUSB0): 2012-01-06 11:42:09 NetworkManager[1127]: (ttyUSB0): 2012-01-07 11:42:09 NetworkManager[1127]: (ttyUSB0): 2012-01-08 11:42:09 NetworkManager[1127]: nm_system_iface_flush_routes: assertion 2012-01-09 11:42:09 NetworkManager[1127]: nm_system_iface_flush_addresses: assertion 2012-01-01 11:42:09 NetworkManager[1127]: (ttyUSB0): 2012-01-02 11:42:13 NetworkManager[1127]: Activation 2012-01-03 11:42:13 NetworkManager[1127]: (ttyUSB0): 2012-01-04 11:42:13 NetworkManager[1127]: Activation 2012-01-05 11:42:13 NetworkManager[1127]: Activation 2012-01-06 11:42:13 NetworkManager[1127]: (ttyUSB0): 2012-01-07 11:42:13 NetworkManager[1127]: Activation 2012-01-08 11:42:13 NetworkManager[1127]: Activation 2012-01-09 11:42:13 NetworkManager[1127]: Activation 2012-01-01 11:42:13 NetworkManager[1127]: (ttyUSB0): 2012-01-02 11:42:13 NetworkManager[1127]: Activation 2012-01-03 11:42:13 modem-manager[1113]: (ttyUSB0) 2012-01-04 11:42:13 modem-manager[1113]: Modem 2012-01-05 11:42:13 modem-manager[1113]: (ttyUSB2) 2012-01-06 11:42:13 modem-manager[1113]: (ttyUSB0): 2012-01-07 11:42:13 modem-manager[1113]: Modem 2012-01-08 11:42:13 NetworkManager[1127]: WWAN 2012-01-09 11:42:13 modem-manager[1113]: Modem 2012-01-01 11:42:13 modem-manager[1113]: Modem 2012-01-02 11:42:13 modem-manager[1113]: Modem 2012-01-03 11:42:13 NetworkManager[1127]: Activation 2012-01-04 11:42:13 NetworkManager[1127]: Activation 2012-01-05 11:42:13 NetworkManager[1127]: (ttyUSB0): 2012-01-06 11:42:13 NetworkManager[1127]: Activation 2012-01-07 11:42:13 NetworkManager[1127]: Activation 2012-01-08 11:42:13 NetworkManager[1127]: Activation 2012-01-09 11:42:13 NetworkManager[1127]: Activation 2012-01-01 11:42:13 NetworkManager[1127]: (ttyUSB0): 2012-01-02 11:42:13 NetworkManager[1127]: starting 2012-01-03 11:42:13 NetworkManager[1127]: pppd 2012-01-04 11:42:13 NetworkManager[1127]: Activation 2012-01-05 11:42:13 NetworkManager[1127]: Activation 2012-01-06 11:42:13 NetworkManager[1127]: Activation 2012-01-07 11:42:13 NetworkManager[1127]: Activation 2012-01-08 11:42:13 pppd[18397]: Plugin /usr/lib/pppd/2.4.5/nm-pppd-plugin.so 2012-01-09 11:42:13 pppd[18397]: pppd 2.4.5 2012-01-01 11:42:13 pppd[18397]: Using interface 2012-01-02 11:42:13 pppd[18397]: Connect: ppp0 2012-01-03 11:42:13 NetworkManager[1127]: SCPlugin-Ifupdown: devices 2012-01-04 11:42:13 NetworkManager[1127]: SCPlugin-Ifupdown: device 2012-01-05 11:42:13 pppd[18397]: PAP authentication 2012-01-06 11:42:16 pppd[18397]: Could not 2012-01-07 11:42:16 pppd[18397]: local IP 2012-01-08 11:42:16 pppd[18397]: remote IP 2012-01-09 11:42:16 pppd[18397]: primary DNS 2012-01-01 11:42:16 pppd[18397]: secondary DNS 2012-01-02 11:42:16 NetworkManager[1127]: PPP 2012-01-03 11:42:16 NetworkManager[1127]: Activation 2012-01-04 11:42:16 NetworkManager[1127]: Activation 2012-01-05 11:42:17 dnsmasq[17021]: exiting on 2012-01-06 11:42:17 NetworkManager[1127]: DNS: 2012-01-07 11:42:17 NetworkManager[1127]: (ppp0): 2012-01-08 11:42:17 dnsmasq[18416]: started, version 2012-01-09 11:42:17 dnsmasq[18416]: compile time 2012-01-01 11:42:17 dnsmasq[18416]: using nameserver 2012-01-02 11:42:17 dnsmasq[18416]: using nameserver 2012-01-03 11:42:17 NetworkManager[1127]: (ttyUSB0): 2012-01-04 11:42:17 NetworkManager[1127]: Policy 2012-01-05 11:42:17 NetworkManager[1127]: Activation 2012-01-06 11:42:17 NetworkManager[1127]: Activation 2012-01-07 11:42:17 dbus[1092]: [system] Activating 2012-01-08 11:42:17 dbus[1092]: [system] Successfully 2012-01-09 11:42:28 ntpdate[18478]: step time ================================================ FILE: tests/stdin.03.txt ================================================ /var/log /var/log/ConsoleKit /var/log/ConsoleKit/history.1 /var/log/ConsoleKit/history /var/log/apt /var/log/apt/term.log /var/log/apt/term.log.1.gz /var/log/apt/history.log /var/log/apt/history.log.1.gz /var/log/cups /var/log/cups/error_log /var/log/cups/page_log /var/log/cups/access_log.7.gz /var/log/cups/access_log.6.gz /var/log/cups/access_log.5.gz /var/log/cups/access_log.4.gz /var/log/cups/access_log.3.gz /var/log/cups/access_log.2.gz /var/log/cups/access_log /var/log/cups/access_log.1.gz /var/log/dist-upgrade /var/log/fsck /var/log/fsck/checkfs /var/log/fsck/checkroot /var/log/hp /var/log/lightdm /var/log/lightdm/lightdm.log /var/log/lightdm/x-0.log /var/log/lightdm/x-0-greeter.log.old /var/log/lightdm/x-1.log /var/log/lightdm/x-1-greeter.log /var/log/lightdm/x-0-greeter.log /var/log/samba /var/log/speech-dispatcher /var/log/unattended-upgrades /var/log/upstart /var/log/upstart/rsyslog.log.1.gz /var/log/upstart/ureadahead-other.log.4.gz /var/log/upstart/network-interface-ppp0.log.6.gz /var/log/upstart/isc-dhcp-server6.log.3.gz /var/log/upstart/modemmanager.log.2.gz /var/log/upstart/procps-virtual-filesystems.log.4.gz /var/log/upstart/procps-virtual-filesystems.log.3.gz /var/log/upstart/resolvconf.log.2.gz /var/log/upstart/mysql.log.5.gz /var/log/upstart/mysql.log.3.gz /var/log/upstart/mysql.log.2.gz /var/log/upstart/cups.log.4.gz /var/log/upstart/ureadahead-other.log.5.gz /var/log/upstart/container-detect.log.6.gz /var/log/upstart/cups.log.1.gz /var/log/upstart/alsa-restore.log.1.gz /var/log/upstart/rsyslog.log.3.gz /var/log/upstart/cryptdisks-enable.log.3.gz /var/log/upstart/hybrid-gfx.log.2.gz /var/log/upstart/mysql.log.1.gz /var/log/upstart/isc-dhcp-server6.log.4.gz /var/log/upstart/procps-static-network-up.log.4.gz /var/log/upstart/console-setup.log.3.gz /var/log/upstart/hybrid-gfx.log.6.gz /var/log/upstart/rsyslog.log.2.gz /var/log/upstart/resolvconf.log.1.gz /var/log/upstart/ureadahead-other.log.3.gz /var/log/upstart/procps-static-network-up.log.6.gz /var/log/upstart/rsyslog.log.4.gz /var/log/upstart/container-detect.log.7.gz /var/log/upstart/network-interface-wlan0.log.7.gz /var/log/upstart/container-detect.log.5.gz /var/log/upstart/container-detect.log.2.gz /var/log/upstart/isc-dhcp-server6.log.2.gz /var/log/upstart/cups.log.5.gz /var/log/upstart/cryptdisks-enable.log.6.gz /var/log/upstart/hybrid-gfx.log.5.gz /var/log/upstart/hybrid-gfx.log.4.gz /var/log/upstart/hybrid-gfx.log.3.gz /var/log/upstart/isc-dhcp-server6.log.5.gz /var/log/upstart/network-interface-ppp0.log.4.gz /var/log/upstart/network-interface-ppp0.log.3.gz /var/log/upstart/ureadahead.log.7.gz /var/log/upstart/network-interface-wlan0.log.6.gz /var/log/upstart/isc-dhcp-server.log.1.gz /var/log/upstart/container-detect.log.4.gz /var/log/upstart/container-detect.log.3.gz /var/log/upstart/network-interface-wlan0.log.5.gz /var/log/upstart/rsyslog.log.7.gz /var/log/upstart/modemmanager.log.7.gz /var/log/upstart/modemmanager.log.6.gz /var/log/upstart/console-setup.log.6.gz /var/log/upstart/failsafe-x.log.1.gz /var/log/upstart/procps-static-network-up.log.3.gz /var/log/upstart/procps-virtual-filesystems.log.7.gz /var/log/upstart/rsyslog.log.6.gz /var/log/upstart/ureadahead-other.log.2.gz /var/log/upstart/mysql.log.6.gz /var/log/upstart/mysql.log.4.gz /var/log/upstart/network-interface-wlan0.log.4.gz /var/log/upstart/procps-static-network-up.log.5.gz /var/log/upstart/procps-virtual-filesystems.log.2.gz /var/log/upstart/ureadahead.log.6.gz /var/log/upstart/ureadahead.log.3.gz /var/log/upstart/ureadahead.log.2.gz /var/log/upstart/ureadahead.log.1.gz /var/log/upstart/modemmanager.log.5.gz /var/log/upstart/ureadahead.log.4.gz /var/log/upstart/modemmanager.log /var/log/upstart/network-interface-wlan0.log.3.gz /var/log/upstart/network-interface-wlan0.log.2.gz /var/log/upstart/modemmanager.log.3.gz /var/log/upstart/console-setup.log.5.gz /var/log/upstart/procps-static-network-up.log.7.gz /var/log/upstart/console-setup.log.2.gz /var/log/upstart/cryptdisks-enable.log.5.gz /var/log/upstart/network-interface-tun0.log.5.gz /var/log/upstart/network-interface-ppp0.log.2.gz /var/log/upstart/network-interface-tun0.log.3.gz /var/log/upstart/modemmanager.log.4.gz /var/log/upstart/cups.log.6.gz /var/log/upstart/procps-static-network-up.log.2.gz /var/log/upstart/ureadahead.log.5.gz /var/log/upstart/mysql.log.7.gz /var/log/upstart/procps-virtual-filesystems.log.6.gz /var/log/upstart/procps-virtual-filesystems.log.5.gz /var/log/upstart/rsyslog.log.5.gz /var/log/upstart/cryptdisks-enable.log.7.gz /var/log/upstart/cups.log.3.gz /var/log/upstart/cups.log.2.gz /var/log/upstart/network-interface-tun0.log.4.gz /var/log/upstart/network-interface-tun0.log.1.gz /var/log/upstart/network-interface-ppp1.log.1.gz /var/log/upstart/network-interface-tun0.log.2.gz /var/log/upstart/console-setup.log.4.gz /var/log/upstart/cryptdisks-enable.log.4.gz /var/log/upstart/cryptdisks-enable.log.2.gz /var/log/upstart/hybrid-gfx.log.7.gz /var/log/upstart/isc-dhcp-server6.log.6.gz /var/log/upstart/isc-dhcp-server6.log.1.gz /var/log/upstart/modemmanager.log.1.gz /var/log/upstart/network-interface-lo.log.2.gz /var/log/upstart/network-interface-lo.log.1.gz /var/log/upstart/network-interface-ppp0.log.7.gz /var/log/upstart/network-interface-ppp0.log.5.gz /var/log/upstart/network-interface-tun0.log.7.gz /var/log/upstart/procps-static-network-up.log.1.gz /var/log/upstart/ureadahead-other.log.6.gz /var/log/upstart/ureadahead-other.log.1.gz /var/log/upstart/network-interface-ppp0.log /var/log/upstart/network-interface-wlan0.log /var/log/upstart/console-setup.log.7.gz /var/log/upstart/console-setup.log.1.gz /var/log/upstart/container-detect.log.1.gz /var/log/upstart/hybrid-gfx.log.1.gz /var/log/upstart/network-interface-ppp0.log.1.gz /var/log/upstart/procps-virtual-filesystems.log.1.gz /var/log/upstart/network-interface-tun1.log.1.gz /var/log/upstart/cryptdisks-enable.log.1.gz /var/log/upstart/isc-dhcp-server6.log.7.gz /var/log/upstart/network-interface-tun0.log.6.gz /var/log/upstart/network-interface-wlan0.log.1.gz /var/log/boot /var/log/bootstrap.log /var/log/dmesg /var/log/faillog /var/log/fontconfig.log /var/log/lastlog /var/log/installer /var/log/installer/syslog /var/log/installer/partman /var/log/installer/version /var/log/installer/casper.log /var/log/installer/debug /var/log/installer/media-info /var/log/installer/initial-status.gz /var/log/ufw.log /var/log/alternatives.log.1 /var/log/mail.log /var/log/mail.err /var/log/news /var/log/news/news.crit /var/log/news/news.err /var/log/news/news.notice /var/log/jockey.log.7.gz /var/log/pm-powersave.log /var/log/jockey.log /var/log/aptitude /var/log/gdm /var/log/mysql /var/log/mysql.err /var/log/apache2 /var/log/apache2/other_vhosts_access.log /var/log/apache2/access.log.1 /var/log/apache2/access.log /var/log/apache2/error.log.2.gz /var/log/apache2/error.log.1 /var/log/apache2/error.log /var/log/corosync /var/log/corosync/.empty /var/log/pycentral.log /var/log/dpkg.log.1 /var/log/alternatives.log /var/log/Xorg.0.log.old /var/log/pm-suspend.log /var/log/pm-powersave.log.1 /var/log/Xorg.1.log /var/log/pm-suspend.log.1 /var/log/auth.log.3.gz /var/log/kern.log.1 /var/log/kern.log /var/log/auth.log.1 /var/log/udev /var/log/apport.log.7.gz /var/log/apport.log /var/log/mysql.log.4.gz /var/log/Xorg.failsafe.log.old /var/log/Xorg.failsafe.log /var/log/apport.log.3.gz /var/log/dmesg.4.gz /var/log/dmesg.3.gz /var/log/dmesg.2.gz /var/log/apport.log.6.gz /var/log/wtmp.1 /var/log/boot.log /var/log/wtmp /var/log/btmp /var/log/aptitude.1.gz /var/log/auth.log /var/log/Xorg.0.log /var/log/kern.log.2.gz /var/log/jockey.log.1 /var/log/btmp.1 /var/log/apport.log.4.gz /var/log/jockey.log.8.gz /var/log/jockey.log.5.gz /var/log/auth.log.4.gz /var/log/apport.log.5.gz /var/log/kern.log.4.gz /var/log/kern.log.3.gz /var/log/jockey.log.9.gz /var/log/l2tpipsecvpn.pipe /var/log/jockey.log.6.gz /var/log/apport.log.2.gz /var/log/apport.log.1 /var/log/jockey.log.10.gz /var/log/dpkg.log /var/log/mysql.log.2.gz /var/log/mysql.log /var/log/mysql.log.1.gz /var/log/syslog.5.gz /var/log/syslog.4.gz /var/log/syslog.7.gz /var/log/syslog.6.gz /var/log/syslog.2.gz /var/log/syslog.1 /var/log/syslog /var/log/auth.log.2.gz /var/log/jockey.log.4.gz /var/log/jockey.log.3.gz /var/log/jockey.log.2.gz /var/log/syslog.3.gz /var/log/mysql.log.7.gz /var/log/mysql.log.5.gz /var/log/apparmor /var/log/dmesg.1.gz /var/log/dmesg.0 /var/log/mysql.log.3.gz /var/log/mysql.log.6.gz ================================================ FILE: tests/stdin.04.txt ================================================ USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2 0.0 0.0 0 0 ? S 15:30 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 15:30 0:01 \_ [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S 15:30 0:00 \_ [kworker/u:0] root 6 0.0 0.0 0 0 ? S 15:30 0:00 \_ [migration/0] root 7 0.0 0.0 0 0 ? S 15:30 0:00 \_ [watchdog/0] root 8 0.0 0.0 0 0 ? S 15:30 0:00 \_ [migration/1] root 9 0.0 0.0 0 0 ? S 15:30 0:00 \_ [kworker/1:0] root 10 0.0 0.0 0 0 ? S 15:30 0:00 \_ [ksoftirqd/1] root 12 0.0 0.0 0 0 ? S 15:31 0:00 \_ [watchdog/1] root 13 0.0 0.0 0 0 ? S 15:31 0:00 \_ [migration/2] root 15 0.0 0.0 0 0 ? S 15:31 0:00 \_ [ksoftirqd/2] root 16 0.0 0.0 0 0 ? S 15:31 0:00 \_ [watchdog/2] root 17 0.0 0.0 0 0 ? S 15:31 0:00 \_ [migration/3] root 19 0.0 0.0 0 0 ? S 15:31 0:00 \_ [ksoftirqd/3] root 20 0.0 0.0 0 0 ? S 15:31 0:00 \_ [watchdog/3] root 21 0.0 0.0 0 0 ? S 15:31 0:00 \_ [migration/4] root 23 0.0 0.0 0 0 ? S 15:31 0:00 \_ [ksoftirqd/4] root 24 0.0 0.0 0 0 ? S 15:31 0:00 \_ [watchdog/4] root 25 0.0 0.0 0 0 ? S 15:31 0:00 \_ [migration/5] root 27 0.0 0.0 0 0 ? S 15:31 0:00 \_ [ksoftirqd/5] root 28 0.0 0.0 0 0 ? S 15:32 0:00 \_ [watchdog/5] root 29 0.0 0.0 0 0 ? S 15:32 0:00 \_ [migration/6] root 31 0.0 0.0 0 0 ? S 15:32 0:00 \_ [ksoftirqd/6] root 32 0.0 0.0 0 0 ? S 15:32 0:00 \_ [watchdog/6] root 33 0.0 0.0 0 0 ? S 15:32 0:00 \_ [migration/7] root 35 0.0 0.0 0 0 ? S 15:32 0:00 \_ [ksoftirqd/7] root 36 0.0 0.0 0 0 ? S 15:32 0:00 \_ [watchdog/7] root 37 0.0 0.0 0 0 ? S< 15:32 0:00 \_ [cpuset] root 38 0.0 0.0 0 0 ? S< 15:32 0:00 \_ [khelper] root 39 0.0 0.0 0 0 ? S 15:32 0:00 \_ [kdevtmpfs] root 40 0.0 0.0 0 0 ? S< 15:32 0:00 \_ [netns] root 42 0.0 0.0 0 0 ? S 15:32 0:00 \_ [sync_supers] root 43 0.0 0.0 0 0 ? S 15:32 0:00 \_ [bdi-default] root 44 0.0 0.0 0 0 ? S< 15:33 0:00 \_ [kintegrityd] root 45 0.0 0.0 0 0 ? S< 15:33 0:00 \_ [kblockd] root 46 0.0 0.0 0 0 ? S< 15:33 0:00 \_ [ata_sff] root 47 0.0 0.0 0 0 ? S 15:33 0:00 \_ [khubd] root 48 0.0 0.0 0 0 ? S< 15:33 0:00 \_ [md] root 51 0.0 0.0 0 0 ? S 15:33 0:00 \_ [khungtaskd] root 52 0.0 0.0 0 0 ? S 15:33 0:00 \_ [kswapd0] root 53 0.0 0.0 0 0 ? SN 15:33 0:00 \_ [ksmd] root 54 0.0 0.0 0 0 ? SN 15:33 0:00 \_ [khugepaged] root 55 0.0 0.0 0 0 ? S 15:33 0:00 \_ [fsnotify_mark] root 56 0.0 0.0 0 0 ? S 15:33 0:00 \_ [ecryptfs-kthrea] root 57 0.0 0.0 0 0 ? S< 15:33 0:00 \_ [crypto] root 65 0.0 0.0 0 0 ? S< 15:33 0:00 \_ [kthrotld] root 67 0.0 0.0 0 0 ? S 15:33 0:00 \_ [scsi_eh_0] root 68 0.0 0.0 0 0 ? S 15:33 0:00 \_ [scsi_eh_1] root 69 0.0 0.0 0 0 ? S 15:34 0:01 \_ [kworker/2:1] root 70 0.0 0.0 0 0 ? S 15:34 0:00 \_ [kworker/u:3] root 89 0.0 0.0 0 0 ? S< 15:34 0:00 \_ [devfreq_wq] root 90 0.0 0.0 0 0 ? S 15:34 0:00 \_ [kworker/7:1] root 91 0.0 0.0 0 0 ? S 15:34 0:00 \_ [kworker/4:1] root 92 0.0 0.0 0 0 ? S 15:34 0:05 \_ [kworker/1:1] root 94 0.0 0.0 0 0 ? S 15:34 0:00 \_ [kworker/6:1] root 97 0.0 0.0 0 0 ? S 15:35 0:00 \_ [kworker/5:1] root 140 0.0 0.0 0 0 ? S 15:35 0:00 \_ [kworker/7:2] root 231 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [firewire] root 300 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [xfs_mru_cache] root 301 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [xfslogd] root 302 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [xfsdatad] root 304 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [xfsconvertd] root 306 0.0 0.0 0 0 ? S 15:35 0:00 \_ [xfsbufd/sda3] root 307 0.0 0.0 0 0 ? S 15:35 0:03 \_ [xfsaild/sda3] root 703 0.0 0.0 0 0 ? S 15:35 0:00 \_ [irq/47-mei] root 718 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [applesmc-led] root 722 0.0 0.0 0 0 ? S 15:35 0:00 \_ [kworker/5:2] root 789 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [cfg80211] root 834 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [hci0] root 858 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [hd-audio0] root 862 0.0 0.0 0 0 ? S< 15:35 0:00 \_ [hd-audio1] root 986 0.0 0.0 0 0 ? S< 15:36 0:00 \_ [kdmflush] root 994 0.0 0.0 0 0 ? S< 15:36 0:00 \_ [kcryptd_io] root 995 0.0 0.0 0 0 ? S< 15:36 0:00 \_ [kcryptd] root 1177 0.0 0.0 0 0 ? S 15:36 0:00 \_ [flush-8:0] root 1279 0.0 0.0 0 0 ? S< 15:36 0:00 \_ [krfcommd] root 1867 0.0 0.0 0 0 ? S 15:36 0:00 \_ [firegl] root 1868 0.0 0.0 0 0 ? S 15:36 0:00 \_ [firegl] root 1869 0.0 0.0 0 0 ? S 15:36 0:00 \_ [firegl] root 1983 0.0 0.0 0 0 ? S< 15:36 0:00 \_ [iprt] root 2677 0.0 0.0 0 0 ? S 15:37 0:03 \_ [kworker/2:2] root 2826 0.0 0.0 0 0 ? S 15:37 0:00 \_ [kworker/6:2] root 2840 0.0 0.0 0 0 ? S 15:37 0:00 \_ [kworker/4:2] root 2914 0.0 0.0 0 0 ? S 15:37 0:00 \_ [scsi_eh_7] root 2915 0.0 0.0 0 0 ? S 15:37 0:01 \_ [usb-storage] root 2916 0.0 0.0 0 0 ? S 15:37 0:00 \_ [scsi_eh_8] root 2917 0.0 0.0 0 0 ? S 15:37 0:01 \_ [usb-storage] root 3046 0.1 0.0 0 0 ? S 15:37 0:08 \_ [flush-ecryptfs-] root 3769 0.0 0.0 0 0 ? S 15:41 0:05 \_ [kworker/3:0] root 4812 0.0 0.0 0 0 ? S 17:31 0:01 \_ [kworker/0:2] root 4915 0.1 0.0 0 0 ? S 17:39 0:01 \_ [kworker/0:3] root 4940 0.0 0.0 0 0 ? S 17:43 0:00 \_ [kworker/3:2] root 4958 0.1 0.0 0 0 ? S 17:47 0:00 \_ [kworker/0:1] root 5108 0.0 0.0 0 0 ? S 17:49 0:00 \_ [kworker/3:1] root 5160 0.0 0.0 0 0 ? S 17:51 0:00 \_ [scsi_eh_9] root 5161 0.0 0.0 0 0 ? S 17:51 0:00 \_ [usb-storage] root 5190 0.0 0.0 0 0 ? S 17:51 0:00 \_ [kworker/7:0] root 5195 0.0 0.0 0 0 ? S 17:51 0:00 \_ [xfsbufd/sdc1] root 5198 0.0 0.0 0 0 ? S 17:51 0:00 \_ [xfsaild/sdc1] root 5221 0.0 0.0 0 0 ? S 17:51 0:00 \_ [flush-8:32] root 1 0.0 0.0 3720 2148 ? Ss 15:35 0:01 /sbin/init root 375 0.0 0.0 2816 612 ? S 15:36 0:00 upstart-udev-bridge --daemon root 377 0.0 0.0 3504 1696 ? Ss 15:36 0:00 /sbin/udevd --daemon root 5176 0.0 0.0 3500 1264 ? S 17:51 0:00 \_ /sbin/udevd --daemon root 5177 0.0 0.0 3500 1220 ? S 17:51 0:00 \_ /sbin/udevd --daemon root 890 0.0 0.0 2828 360 ? S 15:36 0:00 upstart-socket-bridge --daemon root 1048 0.0 0.0 6664 2416 ? Ss 15:36 0:00 /usr/sbin/sshd -D syslog 1109 0.0 0.0 31044 1372 ? Sl 15:36 0:00 rsyslogd -c5 102 1130 0.0 0.0 4372 2008 ? Ss 15:36 0:01 dbus-daemon --system --fork --activation=upstart root 1150 0.0 0.0 4612 856 tty4 Ss+ 15:36 0:00 /sbin/getty -8 38400 tty4 root 1156 0.0 0.0 4612 844 tty5 Ss+ 15:36 0:00 /sbin/getty -8 38400 tty5 root 1173 0.0 0.0 4724 1832 ? Ss 15:36 0:00 /usr/sbin/bluetoothd root 1201 0.0 0.0 4612 856 tty2 Ss+ 15:36 0:00 /sbin/getty -8 38400 tty2 root 1202 0.0 0.0 4612 852 tty3 Ss+ 15:36 0:00 /sbin/getty -8 38400 tty3 root 1205 0.0 0.0 4612 840 tty6 Ss+ 15:36 0:00 /sbin/getty -8 38400 tty6 root 1234 0.0 0.0 7204 3184 ? Ss 15:36 0:03 /usr/sbin/modem-manager root 1239 0.0 0.0 2288 720 ? Ss 15:36 0:00 acpid -c /etc/acpi/events -s /var/run/acpid.socket root 1243 0.0 0.0 34020 3124 ? Ssl 15:36 0:00 lightdm root 1452 5.9 3.6 122592 296884 tty7 Ss+ 15:36 8:08 \_ /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none root 2572 0.0 0.0 18200 3616 ? Sl 15:36 0:00 \_ lightdm --session-child 12 19 reze 2886 0.0 0.1 49672 8440 ? Ssl 15:37 0:00 \_ gnome-session --session=gnome-classic reze 2965 0.0 0.0 4060 208 ? Ss 15:37 0:00 \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session --session=gnome-classic reze 3005 0.0 0.2 245988 17284 ? Sl 15:37 0:05 \_ /usr/lib/gnome-settings-daemon/gnome-settings-daemon reze 3034 0.0 0.0 3692 780 ? S 15:37 0:05 | \_ syndaemon -i 2.0 -K -R -t reze 3047 0.1 0.3 201020 29104 ? Sl 15:37 0:09 \_ gnome-panel reze 3056 0.0 0.0 57992 7748 ? Sl 15:37 0:00 \_ /usr/lib/gnome-settings-daemon/gnome-fallback-mount-helper reze 3064 0.0 0.1 152360 14100 ? Sl 15:37 0:04 \_ /usr/lib/notification-daemon/notification-daemon reze 3065 0.1 0.3 234464 26660 ? Sl 15:37 0:09 \_ nautilus -n reze 3068 0.0 0.1 254220 14692 ? Sl 15:37 0:01 \_ nm-applet reze 3076 0.0 0.0 39344 7312 ? Sl 15:37 0:00 \_ /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 reze 3098 0.0 0.1 149008 10360 ? Sl 15:37 0:00 \_ bluetooth-applet reze 3194 0.0 0.0 41024 7904 ? Sl 15:37 0:00 \_ /usr/lib/gnome-disk-utility/gdu-notification-daemon reze 3218 0.0 0.1 74232 9272 ? Sl 15:37 0:00 \_ telepathy-indicator reze 3292 0.0 0.0 39768 7640 ? Sl 15:37 0:00 \_ gnome-screensaver reze 3293 0.0 0.0 54716 5472 ? Sl 15:37 0:00 \_ zeitgeist-datahub reze 3396 0.0 0.1 51284 10472 ? Sl 15:38 0:00 \_ /usr/lib/evolution/3.2/evolution-alarm-notify reze 3629 0.0 0.1 52616 11196 ? Sl 15:38 0:00 \_ update-notifier reze 3673 0.0 0.0 35720 3636 ? Sl 15:39 0:00 \_ /usr/lib/deja-dup/deja-dup/deja-dup-monitor root 1247 0.0 0.0 11060 3584 ? Ss 15:36 0:00 /usr/sbin/cupsd -F daemon 1257 0.0 0.0 2452 352 ? Ss 15:36 0:00 atd root 1265 0.0 0.0 2600 872 ? Ss 15:36 0:00 cron mysql 1275 0.0 0.4 319484 33812 ? Ssl 15:36 0:02 /usr/sbin/mysqld root 1284 0.0 0.0 3584 660 ? Ss 15:36 0:02 /usr/sbin/irqbalance avahi 1298 0.0 0.0 3584 1700 ? S 15:36 0:00 avahi-daemon: running [prolix.local] avahi 1299 0.0 0.0 3436 432 ? S 15:36 0:00 \_ avahi-daemon: chroot helper whoopsie 1370 0.0 0.0 25920 4460 ? Ssl 15:36 0:00 whoopsie root 1464 0.0 0.0 31104 5080 ? Ssl 15:36 0:00 NetworkManager root 5016 0.0 0.0 7364 2632 ? S 17:48 0:00 \_ /usr/sbin/pppd nodetach lock nodefaultroute user movistarcr ttyUSB0 noipdefault noauth refuse-eap refuse-chap refuse-mschap refuse-mschap-v2 usepeerdns lcp-echo-failure 5 lcp-echo-interval 30 ipparam /org/freedesktop/NetworkManager/PPP/1 plugin /usr/lib/pppd/2.4.5/nm-pppd-plugin.so nobody 5038 0.0 0.0 5384 1164 ? S 17:48 0:00 \_ /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/sendsigs.omit.d/network-manager.dnsmasq.pid --listen-address=127.0.0.1 --conf-file=/var/run/nm-dns-dnsmasq.conf --cache-size=0 --proxy-dnssec root 1482 0.0 0.0 25352 3764 ? Sl 15:36 0:00 /usr/lib/policykit-1/polkitd --no-debug root 1571 0.0 0.0 2216 256 ? S 15:36 0:00 /bin/sh /usr/lib/ipsec/_plutorun --debug --uniqueids yes --force_busy no --nocrsend no --strictcrlpolicy no --nat_traversal yes --keep_alive --protostack netkey --force_keepalive no --disable_port_floating no --virtual_private --listen --crlcheckinterval 0 --ocspuri --nhelpers --dump --opts --stderrlog --wait no --pre --post --log daemon.error --plutorestartoncrash true --pid /var/run/pluto/pluto.pid root 1573 0.0 0.0 2216 272 ? S 15:36 0:00 \_ /bin/sh /usr/lib/ipsec/_plutorun --debug --uniqueids yes --force_busy no --nocrsend no --strictcrlpolicy no --nat_traversal yes --keep_alive --protostack netkey --force_keepalive no --disable_port_floating no --virtual_private --listen --crlcheckinterval 0 --ocspuri --nhelpers --dump --opts --stderrlog --wait no --pre --post --log daemon.error --plutorestartoncrash true --pid /var/run/pluto/pluto.pid root 1577 0.0 0.0 13304 3160 ? S 15:36 0:00 | \_ /usr/lib/ipsec/pluto --nofork --secretsfile /etc/ipsec.secrets --ipsecdir /etc/ipsec.d --use-netkey --uniqueids --nat_traversal root 1587 0.0 0.0 13200 836 ? SN 15:36 0:00 | \_ pluto helper # 0 root 1588 0.0 0.0 13200 836 ? SN 15:36 0:00 | \_ pluto helper # 1 root 1589 0.0 0.0 13200 836 ? SN 15:36 0:00 | \_ pluto helper # 2 root 1590 0.0 0.0 13200 836 ? SN 15:36 0:00 | \_ pluto helper # 3 root 1591 0.0 0.0 13200 836 ? SN 15:36 0:00 | \_ pluto helper # 4 root 1592 0.0 0.0 13200 836 ? SN 15:36 0:00 | \_ pluto helper # 5 root 1593 0.0 0.0 13200 836 ? SN 15:36 0:00 | \_ pluto helper # 6 root 1743 0.0 0.0 2088 304 ? S 15:36 0:00 | \_ _pluto_adns root 1574 0.0 0.0 2216 544 ? S 15:36 0:00 \_ /bin/sh /usr/lib/ipsec/_plutoload --wait no --post root 1572 0.0 0.0 2132 548 ? S 15:36 0:00 logger -s -p daemon.error -t ipsec__plutorun root 1897 0.0 0.0 39560 1840 ? Ss 15:36 0:00 /usr/lib/l2tp-ipsec-vpn-daemon/L2tpIPsecVpnControlDaemon root 1906 0.0 0.0 0 0 ? Z 15:36 0:00 \_ [echo] root 1911 0.0 0.0 4136 1188 ? Ss 15:36 0:00 ha_logd: read process root 1925 0.0 0.0 4136 684 ? S 15:36 0:00 \_ ha_logd: write process root 2009 0.0 0.0 2232 304 ? Ss 15:36 0:00 /usr/sbin/xl2tpd root 2057 0.0 0.0 15816 3372 ? Sl 15:36 0:00 /usr/lib/accountsservice/accounts-daemon root 2064 0.0 0.0 6196 2720 ? Ss 15:36 0:00 /usr/sbin/apache2 -k start www-data 2067 0.0 0.0 5976 1912 ? S 15:36 0:00 \_ /usr/sbin/apache2 -k start www-data 2069 0.0 0.0 229664 2252 ? Sl 15:36 0:00 \_ /usr/sbin/apache2 -k start www-data 2070 0.0 0.0 229664 2252 ? Sl 15:36 0:00 \_ /usr/sbin/apache2 -k start root 2153 0.0 0.0 42376 3356 ? Sl 15:36 0:00 /usr/sbin/console-kit-daemon --no-daemon root 2378 0.0 0.0 4612 848 tty1 Ss+ 15:36 0:00 /sbin/getty -8 38400 tty1 root 2413 0.0 0.0 28780 4232 ? Sl 15:36 0:01 /usr/lib/upower/upowerd colord 2558 0.0 0.1 53632 10496 ? Sl 15:36 0:00 /usr/lib/i386-linux-gnu/colord/colord rtkit 2599 0.0 0.0 21312 1244 ? SNl 15:36 0:00 /usr/lib/rtkit/rtkit-daemon reze 2875 0.0 0.1 127084 9088 ? Sl 15:37 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login reze 2968 0.0 0.0 3920 484 ? S 15:37 0:00 /usr/bin/dbus-launch --exit-with-session gnome-session --session=gnome-classic reze 2969 0.0 0.0 6872 2900 ? Ss 15:37 0:06 //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session reze 3010 0.0 0.0 8388 2220 ? S 15:37 0:00 /usr/lib/gvfs/gvfsd reze 3012 0.0 0.0 34740 2580 ? Sl 15:37 0:00 /usr/lib/gvfs//gvfs-fuse-daemon -f /home/reze/.gvfs reze 3021 0.0 0.0 49616 3912 ? Sl 15:37 0:00 /usr/lib/gnome-settings-daemon/gsd-printer reze 3030 0.0 0.0 39188 7204 ? Sl 15:37 0:00 /usr/lib/gnome-settings-daemon/gsd-locate-pointer reze 3039 0.0 0.0 109036 5928 ? S reze 3985 0.0 0.0 35472 3116 ? Sl 15:41 0:00 /usr/lib/libreoffice/program/oosplash --draw reze 4006 1.1 1.8 419856 148436 ? Sl 15:41 1:27 \_ /usr/lib/libreoffice/program/soffice.bin --draw --splash-pipe=6 reze 4210 0.0 0.0 31472 3912 ? Sl 16:16 0:00 /usr/lib/gvfs/gvfsd-http --spawner :1.7 /org/gtk/gvfs/exec_spaw/2 reze 4531 0.0 0.0 8252 1976 ? S 17:09 0:00 /usr/lib/gvfs/gvfsd-metadata reze 4606 0.1 0.2 166588 17800 ? Sl 17:26 0:02 mate-terminal reze 4638 0.0 0.0 0 0 ? Z 17:26 0:00 \_ [mate-terminal] reze 4639 0.0 0.0 5628 2048 pts/7 Ss+ 17:26 0:00 \_ [mate-terminal] bash reze 4643 0.0 0.0 5628 2044 pts/9 Ss+ 17:26 0:00 \_ [mate-terminal] bash reze 4654 0.0 0.0 5628 2048 pts/10 Ss+ 17:26 0:00 \_ [mate-terminal] bash reze 4665 0.0 0.0 5628 2044 pts/11 Ss+ 17:26 0:00 \_ [mate-terminal] bash reze 4676 0.0 0.0 5628 2044 pts/12 Ss+ 17:26 0:00 \_ [mate-terminal] bash reze 4699 0.0 0.0 5628 2044 pts/14 Ss+ 17:26 0:00 \_ [mate-terminal] bash reze 4708 0.0 0.0 5628 2048 pts/15 Ss+ 17:26 0:00 \_ [mate-terminal] bash reze 4632 0.0 0.0 9804 3500 ? S 17:26 0:00 /usr/lib/MateConf/mateconfd-2 reze 4637 0.1 0.1 143648 13260 ? Sl 17:26 0:02 keyboardcast ================================================ FILE: tests/stdout.01.expected.txt ================================================ /etc/mateconf|7780758 (44.60%) •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• /etc/brltty|3143272 (18.02%) •••••••••••••••••••••••••••••••• /etc/apparmor.d|1597915 (9.16%) ••••••••••••••••• /etc/bash_completion.d|597836 (3.43%) ••••••• /etc/mono|535352 (3.07%) •••••• /etc/ssl|465414 (2.67%) ••••• /etc/ardour2|362303 (2.08%) •••• /etc/X11|226309 (1.30%) ••• /etc/ImageMagick|202358 (1.16%) ••• /etc/init.d|143281 (0.82%) •• /etc/ssh|138042 (0.79%) •• /etc/fonts|119862 (0.69%) •• /etc/sound|112051 (0.64%) •• /etc/xdg|111971 (0.64%) •• /etc/java-7-openjdk|100414 (0.58%) •• /etc/apache2|95556 (0.55%) • /etc/ld.so.cache|92934 (0.53%) • /etc/sane.d|71429 (0.41%) • /etc/dbus-1|70918 (0.41%) • /etc/init|58780 (0.34%) • /etc/bash_completion|58753 (0.34%) • /etc/console-setup|57645 (0.33%) • /etc/speech-dispatcher|53500 (0.31%) • /etc/gimp|41894 (0.24%) • /etc/ppp|41552 (0.24%) • /etc/apt|40810 (0.23%) • /etc/grub.d|40058 (0.23%) • /etc/xml|35802 (0.21%) • /etc/gnome|33126 (0.19%) • /etc/default|32218 (0.18%) • /etc/wpa_supplicant|31611 (0.18%) • /etc/cron.daily|30047 (0.17%) • /etc/acpi|27944 (0.16%) • /etc/vga|25081 (0.14%) • /etc/pam.d|24963 (0.14%) • ================================================ FILE: tests/stdout.02.expected.txt ================================================ info|229 (20.74%) -----------------------------------------------------------------------------------o PM|110 (9.96%) ---------------------------------------o pcieport|78 (7.07%) ----------------------------o Activation|62 (5.62%) ----------------------o INFO|44 (3.99%) ---------------o pci|21 (1.90%) -------o Initializing|21 (1.90%) -------o system|16 (1.45%) -----o fglrx|16 (1.45%) -----o bcma|16 (1.45%) -----o smpboot|14 (1.27%) -----o NMI|14 (1.27%) -----o Calibrating|14 (1.27%) -----o CPU|14 (1.27%) -----o Booting|14 (1.27%) -----o on|13 (1.18%) ----o usb|11 (1.00%) ---o time|10 (0.91%) ---o sd|10 (0.91%) ---o nameserver|10 (0.91%) ---o ================================================ FILE: tests/stdout.03.expected.txt ================================================ 2012-01-01|3 (10.34%) ||||||||||||||||||||||||||||||||||||||||||||||||||||| 2012-01-02|2 (6.90%) ||||||||||||||||||||||||||||||||||| 2012-01-03|3 (10.34%) ||||||||||||||||||||||||||||||||||||||||||||||||||||| 2012-01-04|3 (10.34%) ||||||||||||||||||||||||||||||||||||||||||||||||||||| 2012-01-05|3 (10.34%) ||||||||||||||||||||||||||||||||||||||||||||||||||||| 2012-01-06|3 (10.34%) ||||||||||||||||||||||||||||||||||||||||||||||||||||| 2012-01-07|4 (13.79%) |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 2012-01-08|3 (10.34%) ||||||||||||||||||||||||||||||||||||||||||||||||||||| 2012-01-09|5 (17.24%) |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ================================================ FILE: tests/stdout.04.expected.txt ================================================ var|265 (27.69%) (((((((((((((((((((((((((((((((((((() log|265 (27.69%) (((((((((((((((((((((((((((((((((((() upstart|123 (12.85%) (((((((((((((((() cups|11 (1.15%) () installer|8 (0.84%) () lightdm|7 (0.73%) ) apache2|7 (0.73%) ) apt|5 (0.52%) ) ================================================ FILE: tests/stdout.05.expected.txt ================================================ 0|6 (3.14%) ppppc 1|46 (24.08%) ppppppppppppppppppppppppppppppppc 2|27 (14.14%) ppppppppppppppppppc 3|24 (12.57%) ppppppppppppppppc 4|24 (12.57%) ppppppppppppppppc 5|21 (10.99%) ppppppppppppppc 6|21 (10.99%) ppppppppppppppc 7|19 (9.95%) pppppppppppppc 8|1 (0.52%) c 9|1 (0.52%) c 10|1 (0.52%) c ================================================ FILE: tests/stdout.06.expected.txt ================================================ 7|51975 (28.12%) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9|46200 (25.00%) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1|17327 (9.38%) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3|14437 (7.81%) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 13|11550 (6.25%) ^^^^^^^^^^^^^^^^^^^^^^^^ 41|5775 (3.12%) ^^^^^^^^^^^^ 5|5774 (3.12%) ^^^^^^^^^^^^ 15|5774 (3.12%) ^^^^^^^^^^^^ 11|3249 (1.76%) ^^^^^^^ 19|2888 (1.56%) ^^^^^^ 97|2887 (1.56%) ^^^^^^ 43|2887 (1.56%) ^^^^^^ 99|1444 (0.78%) ^^^ 47|1444 (0.78%) ^^^ 39|1444 (0.78%) ^^^ 27|1444 (0.78%) ^^^ 009|1444 (0.78%) ^^^ 95|722 (0.39%) ^^ 55|722 (0.39%) ^^ 033|722 (0.39%) ^^ 03|722 (0.39%) ^^ 011|720 (0.39%) ^^ 035|362 (0.20%) ^ 015|362 (0.20%) ^ 081|361 (0.20%) ^ 007|361 (0.20%) ^ 177|184 (0.10%) ^ 083|181 (0.10%) ^ 023|181 (0.10%) ^ ================================================ FILE: tests/stdout.07.expected.txt ================================================ S|113 (41.39%) ΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞ Sl|71 (26.01%) ΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞ S<|25 (9.16%) ΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞ Ss+|21 (7.69%) ΞΞΞΞΞΞΞΞΞΞΞΞΞΞ Ss|20 (7.33%) ΞΞΞΞΞΞΞΞΞΞΞΞΞ SN|9 (3.30%) ΞΞΞΞΞΞ Ssl|6 (2.20%) ΞΞΞΞ Z|3 (1.10%) ΞΞ STAT|1 (0.37%) Ξ SNl|1 (0.37%) Ξ