コマンドの備忘録

コマンドの使い方やオプションを忘れっぽいので、メモっておきます。

リスト

  • awk
  • cut
  • du
  • find
  • killall
  • less
  • ps
  • screen
  • sort
  • ssh
  • tee
  • tr
  • xargs
  • バッククォート実行

cut

文字列を切り出すコマンド。"-f"オプションでフィールド単位指定での切り出しが可能です。この機能は非常に使い勝手が良さそうです。コマンドの出力結果は区切り文字を入れてフィールド化されていることが多いので。
参考:http://www.k4.dion.ne.jp/~mms/unix/linux_com/cut.html

du

1つのディレクトリのサイズをK/M/Gで表示します。

du -hs ディレクトリ

参考:コマンド:du: UNIX/Linuxの部屋

find

下記のコマンドでは、あるディレクトリのファイルを別のディレクトリにコピー(バックアップ)します。バックアップ対象とするファイルを指定するのに、名前でのディレクトリ除外と現在いるディレクトリの除外をおこなっています。また、1階層しかみないようにして処理の重複を避けるようにしています。コピー部分は、-execを使用して実行しています。
もっとうまいやり方ありそうですが。。。

find . -maxdepth 1 ! -name "<除外するディレクトリ>" ! -name "\." -type d -exec cp -rv {} <コピー先ディレクトリ> \;

下記コマンドでは、あるファイルの日時を使用してファイルの削除を実行しています。削除対象とするファイルを見つけるロジックに、notを付けて自分より新しいものは削除しないという形にしています。この場合、比較対象としたファイルは削除されてしまうので、比較対象に指定するファイルを選ぶ際に少々注意が必要です。削除されてもよりファイルを選ぶ必要があります。

find . ! -newer <比較対象とするファイル> -exec rm -v {} \;

killall

たまにpgpoolなど複数立ち上がっているプロセスを一気にkillしたい時などに使用します。

killall -9 pgpool

less

ログの内容を探している際に、複数のパターンマッチング(否定と肯定)を実施したかったのですが、うまくできませんでした。この時は、探したい範囲の先頭に移動して否定のマッチングを実行して対応しました。

less <filepath>
/<先頭への移動条件>
/!<否定のパターン>

lessコマンドにてファイル内での行数を表示するためには、-Nオプションを使用します。このオプションは、コマンド実行時でも、コマンド内でもどちらでも使用できるようです。

less -N <file>

ps

プロセスが使用しているメモリ使用量とメモリ使用量でのソートがおこないたかったためオプションを調べました。
詳細な出力をおこなうオプションには、uかlが使用できるようです。uオプションはユーザを基準として情報を出力し、lオプションはプロセスを基準として情報を出力するといった感じに受け取りました。ソートについては、--sortオプションが存在しており、こちらはマイナスを付けることで降順でのソートもおこなえるようになっていました。

ps aux
ps alx
ps alx --sort -rss
ps alx --sort vsz

screen

ターミナル経由でサーバでの操作をおこなっていた際に、急遽ネットワークが切断されても大丈夫な状況にしてくれるコマンド。サーバ上でターミナルを動かす感じのようです。そのため、不慮の事故で接続が切れても、再度アクセスするとターミナルはそのままの状態で残っているようです。中断が難しい作業を実施している場合は、このコマンドを使用しておくと良さそうです。
下記ページを参考にさせてもらいました。
@IT:ターミナルを切り替えて使えるscreenコマンドとは
screenコマンド一覧
screenコマンド覚え書き@Linux | Mazn.net

sort

複数ファイルのマージソートをしたかったのですが、このコマンドでそれが実現できるとは知りませんでした。sortコマンドは複数のファイルを受け取ることができ、-mオプションでマージが可能なようです。

sort -m <file 1> <file 2>

ssh

sshを使用してローカルのポートをサーバへフォワードさせていますが、仕組みが理解できていませんでした。そのため、下記ページで勉強させて頂いた内容をメモります。
参考:http://www.astro.phys.s.chiba-u.ac.jp/~oda/html/linux_memo/linux_05_memo/linux_mar/qu-port.html
まずコマンドです。

$ ssh -L <local port>:<forward host>:<forward host port> [user@]<connect host>

コマンドの内容としては、は、これからフォワードさせるローカルのポートを指定する項目、は、からフォワードさせるホストを指定する項目、は、からフォワードさせるポートを指定する項目、は、sshで接続するホストを指定する項目です。
考え方的には、sshへ接続して、そこからどこかのホストへフォワードさせるという事だと理解しました。
そのため、常に3つのマシン間でのフォワードというわけではなく、localhostを指定すると、sshで接続したホストのポートへフォワードさせるという使い方もできるでしょう。

tee

"標準入力から読んだ内容を標準出力とファイルとに書き出す"
こんなコマンドあるんですね。リモート環境のデバックをおこなおうとした際に使いました。

tr

文字列から特定の文字列を置換、削除ができるコマンド。ファイルの指定は出来ないので、ファイル内のテキストを対象としたい場合、リダイレクト入力で取り込むことで処理できる。
参考:http://www.nurs.or.jp/~sugi/tr.htm:titile

xargs

基本的な知識は、下記ページで勉強させて頂きました。
コマンド:xargs: UNIX/Linuxの部屋
複数ファイルを対象にgrepしてヒットした件数を表示するのにxargsを使ってみました。Apacheのログから404のリクエストを探す際に使用したコードです。

find . -name "access_log<pattern>" | xargs grep -c "<pattern> 404 "

バッククォート実行

下記コマンドは、.svnディレクトリを全て削除します。svnでチェックアウトしたが、svn管理から外したいなどと思ったときに使います。

rm -rfv `find . -name '.svn'`