ソフトウェア/catlog の変更点
更新- 追加された行はこの色です。
- 削除された行はこの色です。
- ソフトウェア/catlog へ行く。
- ソフトウェア/catlog の差分を削除
[[公開メモ]]
* gzip されたログファイルをシームレスに読むコマンド [#l4e282ef]
/var/log にあるログ、最新版はテキストだけれど古いものは gzip されているので、
自動的に gunzip して古いものから新しいものへつなげて表示するコマンドを作った。
~/bin/catlog
LANG:bash
#!/bin/bash
gunzip -c `ls -r -t /var/log/$1* | grep -E "\.gz$"` | cat - `ls -r -t /var/log/$1* | grep -E "\.gz$" -v`
ls に -t を付けると時刻順、-r を付けると古いもの順になる
引数 $1 として例えば dpkg.log が与えられれば普通は名前順で
dpkg.log
dpkg.log.1
dpkg.log.10.gz
dpkg.log.11.gz
dpkg.log.12.gz
dpkg.log.2.gz
dpkg.log.3.gz
dpkg.log.4.gz
dpkg.log.5.gz
dpkg.log.6.gz
dpkg.log.7.gz
dpkg.log.8.gz
dpkg.log.9.gz
の順になるところ、
dpkg.log.12.gz
dpkg.log.11.gz
dpkg.log.10.gz
dpkg.log.9.gz
dpkg.log.8.gz
dpkg.log.7.gz
dpkg.log.6.gz
dpkg.log.5.gz
dpkg.log.4.gz
dpkg.log.3.gz
dpkg.log.2.gz
dpkg.log.1
dpkg.log
となってくれる。
このリストに grep -E "\.gz$" することで末尾が .gz となっているものをより分けて、
gunzip に渡し、-c でコンソールへ出力する
一方、同じリストを grep -v -E "\.gz$" することで、「末尾が .gz となっていないもの」をより分けて
cat に渡す。
その際、前に - を付けて gunzip の結果を先に表示する
* bash-completion [#t9d1a56d]
タブ入力でログファイル名を補完して欲しい
~~/.bashrc
LANG:bash
_catlog()
{
COMPREPLY=( `find /var/log -type f 2>/dev/null | sed -r "s/\.[0-9]+(\.gz)?$//" | sed -r "s/\\/var\\/log\\///" | sort -u | grep -E "^$2"` )
}
complete -F _catlog catlog
とすることで、ログファイル一覧を自動補完する。
find /var/log -type f 2>/dev/null でエラーメッセージを捨てながらファイル名を列挙し、
sed -r "s/\.[0-9]+(\.gz)?$//" で末尾の ".数字.gz" を消去する
sed -r "s/\\/var\\/log\\///" で先頭の "/var/log/" を消去する
sort -u でアルファベット順にソートしつつ重複を除く
grep -E "^$2"` で途中まで入力した文字があればその文字列で始まるもののみとする
これを complete -F に渡せば良い
LANG:console
$ catlog ^T
Display all 140 possibilities? (y or n) y
ConsoleKit/history mail.log samba/log.dorami samba/log.shigekawa-pc
alternatives.log mail.warn samba/log.fmva32mbp samba/log.shigekawaken
apache2/access.log memcached.log samba/log.fujimoto-pc samba/log.shigekawalab221
apache2/error.log messages samba/log.jcifs0_1_e2 samba/log.smbd
apache2/other_vhosts_access.log mongodb/mongod.log samba/log.jeol-sem samba/log.su-ochiai
apache2/ssl_access.log mongodb/mongodb.log samba/log.jun-note samba/log.t-k-pc
apt/history.log mysql.err samba/log.jun-pc samba/log.takeuchi-t430
apt/term.log mysql.log samba/log.jun-z87mx-d3h samba/log.takeuchi-thkpd
aptitude news/news.crit samba/log.jun04-pc samba/log.takeuchi-tpdold
auth.log news/news.err samba/log.k samba/log.test-d223098a93
btmp news/news.notice samba/log.kato-pc samba/log.tomoki
daemon.log postgresql/postgresql-9.1-main.log samba/log.kishi-pc samba/log.tpe-ochiai
dbconfig-common/dbc.log postgresql/postgresql-9.4-main.log samba/log.kobayashi-vaio samba/log.ubuntu_xeon
debug redis/redis-server.log samba/log.kou-pc samba/log.ubuntupc
denyhosts samba/log. samba/log.laptop-9p54nmgj samba/log.virtualpc-xp
dmesg samba/log.10.10.10 samba/log.lenovo-pc samba/log.vt-g114
dpkg.log samba/log.10.225.225 samba/log.macbookpro-ebe7 samba/log.vt-stm
exim4/mainlog samba/log.225-lenovo2 samba/log.mhqmygosmcwzlmr samba/log.wb-BUILTIN
exim4/rejectlog samba/log.______-pc samba/log.mitani-pc samba/log.wb-DORA
faillog samba/log._________-pc samba/log.mogi-think samba/log.win-hm8q3t62vkc
fontconfig.log samba/log._______________-pc samba/log.mrs samba/log.win-inlu09e8kkn
fsck/checkfs samba/log.bamba samba/log.nec-pcuser-pc samba/log.winbindd
fsck/checkroot samba/log.bamba-dell samba/log.nmbd samba/log.winbindd-idmap
installer/cdebconf/questions.dat samba/log.bamba-pc samba/log.nsu-pc samba/log.workstation
installer/cdebconf/templates.dat samba/log.bamba-xps samba/log.ochiai samba/log.yoshida-pc
installer/hardware-summary samba/log.banba-pc samba/log.ochiaidesktoppc samba/log.yoshida-vaio
installer/lsb-release samba/log.desktop-02od8uj samba/log.osamu-a3acde464 samba/log.yuka-pc
installer/partman samba/log.desktop-2fk5bki samba/log.owner-pc squid3/access.log
installer/status samba/log.desktop-51i7357 samba/log.owner7 squid3/cache.log
installer/syslog samba/log.desktop-8uhmfk9 samba/log.pc squid3/netdb.state
kern.log samba/log.desktop-ea9rn79 samba/log.pcuser-pc suphp/suphp.log
lastlog samba/log.desktop-hklb3hd samba/log.rdcifs_225_157_123 sympa.log
lpr.log samba/log.desktop-i198eqf samba/log.sgkw-l syslog
mail.err samba/log.desktop-o8sf0no samba/log.shalashaska-vai user.log
mail.info samba/log.dfs-pc2 samba/log.shigekawa-lab wtmp
Display all 140 possibilities? (y or n) n
$ catlog a^T
alternatives.log apache2/error.log apache2/ssl_access.log apt/term.log auth.log
apache2/access.log apache2/other_vhosts_access.log apt/history.log aptitude
* コメント・質問 [#lf8372ec]
#article_kcaptcha
Counter: 2483 (from 2010/06/03),
today: 5,
yesterday: 2