Edited at

linuxコマンド備忘録


ファイルの文字コード変換

iconvコマンドを使うやり方。オプションは、-fが元の文字コード、-tが変換する文字コード、-oが出力するファイル名。

ex.) example.txtをsjisからutf-8にする。

$ iconv -f sjis -t utf-8 example.txt -o example.txt


xargsの引数の場所を指定する

通常はコマンドの最後の引数になるが、-iオプションを使うと、{}に引数を割り当てられる。

ex.)パスにoriginalを含むファイルを../bkにコピー。

$ find . -type d | grep original | xargs -i mkdir -p ../bk/{}

$ find . -type f | grep original | xargs -i cp -p {} ../bk/{}


空白を含むファイルのfind

findの結果に対してxargsで処理をさせるときに、ファイル名に空白を含む場合、エラーが発生する。

(空白を複数ファイルの区切り文字として扱うため)

オプションでfind -print0xargs -0とすると、区切り文字を空白でなく、\0で扱うため、問題を回避できる。

$ find . -type f -print0 | xargs -0 md5sum | sort


コマンド繰り返し

コマンドをsleep秒ごとに繰り返す。

ctl + cで終了。

$ while true; do [コマンド]; sleep 1; done;


cronでsudoを許可

デフォルトは、cronの処理中でのsudoは許可されていない。

Defaults requirettyをコメントにすると、許可される。

$ sudo visudo

#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
#Defaults requiretty


psからプロセスをkill

ex.) tomcatをkill

pgrep:プロセスidをかえす

--no-run-if-empty:引数がない場合、実行しない

$ pgrep -f tomcat | xargs --no-run-if-empty kill -9


psの結果からgrepを除く

ex.) tomcatプロセスだけを表示

$ ps -ef | grep tomcat | grep -v grep


秘密鍵作成

ex.) rsa方式暗号方式で鍵を作成

$ ssh-keygen -t rsa

公開鍵は認証側サーバのauthorized_keysに追加。

.sshは権限700、authorized_keysは権限600とする。

バッチ処理等でssh接続を使う場合、パスフレーズの入力を求められて動かなくなるので、特別な理由がない限り、設定しないほうがいいと思う。

$ mkdir ~/.ssh

$ chmod 700 ~/.ssh
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys


ホストキーの削除

sshログインするとき、接続先サーバのホストキー(公開鍵のフィンガープリント)を保存し、照合するので、接続先サーバのIPアドレスが変わったりすると、不一致になり、sshログインできなくなる。

そんなときは、ホストキーを削除すると、再度ログイン可能になる。

$ ssh-keygen -R [ホスト名]


ディレクトリを再帰的にgrep

ex.) カレントディレクトリ以下のディレクトリのファイル「*.html」から文字列「height」を含むファイルを探す

$ find . -name "*.html" | xargs grep height