less +F

知らなかったので表題をメモしておく。

■ 環境

  • Amazon Linux

■ tail -f / tailf / less +F

似たようなことをこれらのコマンドで実現できる。前に`tailf`の方が性能(?)メモリ使用量(?)的に良いとかって話を聞いた記憶があって`tailf`を使うようにしていたのだが、`less`でも同じようにできるということで、こっちを使うようになった。

$ less test.log

通常通りに`less`で、随時追記されるファイルを開いても良い。この後`Shift + F`で追記された分を追うこともできる。また`Ctrl + C`で通常のモードにも戻れるので便利である。

ちなみに`tail -F`というオプションもあるが、”logrotate“等でファイル名が変わっても、指定したファイル名を追随してくれるオプションである。日付が変わるタイミング等で変更することが多いので、あまり役立ったことはない。

以上。

tac

表題のコマンドについて。単なるメモ。

■ 環境

  • Amazon Linux

■ tac

下記のようなテキストファイルがあるとする。

$ cat test.txt
1 apple
2 grape
3 peach
4 kiwi
5 cherry
$

このテキストファイルに対して`tac`コマンドは下記のような結果を得られる。

$ tac test.txt
5 cherry
4 kiwi
3 peach
2 grape
1 apple
$

`tac`コマンドの名の通り、逆順に内容を`cat`してくれる。

さてこのコマンドはどのパッケージに入っているのか。

$ which tac
/usr/bin/tac
$
$ rpm -qf /usr/bin/tac
coreutils-8.22-15.52.amzn1.x86_64
$

そんなに使用頻度の高いものなのだろうか…。自身ではほぼ使ったことがない。

以上。

タブをgrep

表題の通り。タブ(\t)を含む文字列を`grep`したいのだが少し嵌ってしまったのでメモ。

■ 環境

  • Linux

■ 対象

対象のファイルはLTSV形式で出力されているログである。タブ区切りなのであるが、検索したい文字列が複数箇所で使用されている。例として下記のような感じである。内容は適当である。

xxx:aaaaa    status:200    change_status:101    update_status:200
xxx:aaaaa    status:201    change_status:101    update_status:200

この中で”status:200“だけを含む行を`grep`したいのだが、単純に”status:200”で`grep`を実行すると”update_status:200“の場合も該当してしまう。よって前の”\tstatus:200“で実行できないかと思ったのだが、単純に実行すると取得できない。

下記の様にすると取得できた。

$ grep $'\t'"status:200" test.log

少々面倒ではあるが、欲しい情報が取得できたのでこれでOKとする。

以上。

lsblk

表題のコマンドについて。知らなかったのでメモ。

■ 環境

  • Ubuntu 14.04
  • Amazon Linux

■ lsblk

ディスクがどう付いている(?)のかが分かる。`df`の”Filesystem“のところから読み取っていたりしていたのだが、こちらの方が分かりやすいので乗り換えた。

$ lsblk
NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
$

上記はEC2でデフォルトままで起動したインスタンスでの結果である。8Gのディスクがマウントされているのが分かる。

■ 読み方

どうでも良いことであるのだが…”エルエスバルク“と読んでしまっているが、”list block devices“であるから”エルエスブロック“と読むのが正しいのであろうかとふと思った。

以上。

パッケージの依存一覧

表題の通り。RedHat系Linuxで、とあるパッケージがどのパッケージに依存しているのかを知りたい。

■ 環境

  • Amazon Linux

■ yum deplist

下記のように依存しているパッケージ一覧を取得することができる。下記は例として”zlib-devel“パッケージが依存しているパッケージの一覧である。

$ sudo yum deplist zlib-devel
読み込んだプラグイン:priorities, update-motd, upgrade-helper
パッケージ    : zlib-devel.x86_64 1.2.8-7.18.amzn1
  依存性      : /usr/bin/pkg-config
   provider: pkgconfig.x86_64 1:0.27.1-2.7.amzn1
  依存性      : libz.so.1()(64bit)
   provider: zlib.x86_64 1.2.8-7.18.amzn1
  依存性      : zlib = 1.2.8-7.18.amzn1
   provider: zlib.x86_64 1.2.8-7.18.amzn1
   provider: zlib.i686 1.2.8-7.18.amzn1
$

下記のパッケージが必要であることがわかる。

  • pkgconfig
  • zlib

先日の”インストール済みパッケージ一覧“から確認すると上記の2つのパッケージはインストール済みであるので、”zlib-devel“パッケージをインストールする際には依存するパッケージとして特に表示されることはないであろう。実際にやってみると下記のようになる。

$ sudo yum install zlib-devel
読み込んだプラグイン:priorities, update-motd, upgrade-helper
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ zlib-devel.x86_64 0:1.2.8-7.18.amzn1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================
Package                        アーキテクチャー           バージョン                              リポジトリー                   容量
==================================================================================
インストール中:
zlib-devel                     x86_64                     1.2.8-7.18.amzn1                        amzn-main                      53 k

トランザクションの要約
==================================================================================
インストール  1 パッケージ
  :
$

以上。

■ 関連