Linux

[Linux] MD5の値を大量にチェックする

小ネタです。
例えばsplitコマンドなどで分割したファイルをダウンロードした際に、一つ一つMD5の値を確認するのはダルいですよね。md5sumコマンドでは、予め検証したいファイルのパスとそのMD5の値をペアで記述されたファイルを用意しておくと、一発で確認することでができます。

定義ファイルは以下のようにMD5値と、ファイルのパスを半角スペースなどで区切って書きます。

$ cat MD5SUM
f64062373f79e3fdabed57f6aec6d54d data/foo.zip.1
89063c79371e866afe627ddc221d3a9e data/foo.zip.2
993e1252af0e1fbd2435dcadd2a9fead data/foo.zip.3

あとは-cオプションでこの定義ファイルを渡せば自動的にチェックしてくれます。

$ md5sum -c MD5SUM
data/foo.zip.1: OK
data/foo.zip.2: OK
data/foo.zip.3: OK

続きを読む

[Linux] Bashでwgetの戻り値をチェックする

小ネタです。
シェルスクリプトを書いている際にwgetで正常にファイルをダウンロードできた場合のみ処理を継続したい場合には次のようなコードを書きます。

#!/bin/bash

wget 'https://example.com/foo.zip'

if [ $? -ne 0 ]; then
  echo "[ERROR] 正常にダウンロードできませんでした"
  exit 1
fi
  • $?は直前のコマンドの実行結果が自動的に入ります。
  • 比較演算子の-nenot equalの略で、値が等しくない場合に使用します。

続きを読む

[Linux] メモリ上に高速なディスクを作成する – tmpfs

Linuxでいわゆる「RAMディスク」を作成してみます。
HDDは情報の読み込みでも書き込みでも物理的な速度でメモリにはかないません。で、あるならばメインメモリの一部をHDDに見せかけることができれ5ば超高速なストレージとして使えるのでは!という発想ですね。Linuxではtmpfsと呼ばれる仕組みを利用することで手軽に利用できます。

もちろん、メモリ上にデータを置きますので電源を落とした瞬間にすべてが失われます。主にキャッシュなど一時的な利用が中心になると思われます。

続きを読む

[Linux] コマンドラインでHTTP通信を行う – Telnet編

HTTP/1.1まではサーバクライアント間の通信内容がテキストでのやり取りのため、人間が手作業でサーバと直接やるとりすることが可能です。HTTPの勉強はもちろんですが、開発時にGoogleChromeなどWebブラウザや便利ライブラリによってブラックボックス化されないため純粋な通信状況を確認する際に役に立ちます。

今回は古来から伝わるtelnetコマンドで行う方法を試してみます。
続きを読む

[Linux] ログイン中ユーザーの一覧を表示 – who, w

who

whoコマンドを利用します。

$ who
katsube  pts/0        2019-03-29 18:27 (210.160.37.89)
katsube  pts/1        2019-03-29 18:29 (210.160.37.89)
katsube  pts/2        2019-03-29 18:30 (210.160.37.90)

w

wコマンドではユーザー一覧に加えて、ユーザーが実行しているプロセス名なども表示してくれます。

$ w
 18:30:03 up  9:14,  3 users,  load average: 0.22, 0.16, 0.10
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
katsube  pts/0    210.160.37.89    18:27    2:18   0.00s  0.00s -bash
katsube  pts/1    210.160.37.89    18:29   14.00s  0.01s  0.01s top
katsube  pts/2    210.160.37.90    18:30    2.00s  0.00s  0.00s w

続きを読む

[Linux] ポートスキャンを行う – nmap

不必要にポートを開放していると、そこからアタックを仕掛けられることがあります。
またSSHを22番などデフォルトのポートで開放している場合もターゲットにされやすいため、別のポート番号にしておくのも定石だったりもします(諸説ありますが個人的にはピンポンダッシュを防げるのでいつも変更しています)。

不特定多数がアクセスできる状態にあるサーバや端末は、少なともリリース前にはポートスキャンをかけておくのがおすすめです。

nmapのインストール

macOSの場合はbrewで一発です。

$ brew install nmap

続きを読む

[Linux] 改行コードを変換する

改行コードの種類

まず大前提としてOSや利用している環境によって、最近では大きく2つの改行を表す文字コードが存在します。

OS改行コード
LFLinux, macOSなど
CR+LFWindowsなど

以前のMacOSではCRが採用されていましたが、MacOSX以降はUnix系OSと同じLFとなっています。

変換の必要が出てくるシチュエーションとしては、Windows環境からLinuxなどへファイルを移した時などですね(もちろんWindowsでも環境を整えればLFで作成はできますが)
続きを読む

[Linux] 文字コードを変換する

Linux上で文字コードを変換するコマンドといえば、nkficonvの2つ。よく忘れるので備忘録がてらオプションと使い方をメモしておきます。

nkf

実行例1 – 出力する文字コードを指定

入力側の文字コードは自動で判定してくれますので、出力側の文字コードをオプションで指定します。

$ nkf -s foo.txt > foo_sjis.txt
$ cat foo.txt | nkf -s > foo_sjis.txt

続きを読む

[Linux] 文字コードを調べる

指定したテキストファイルの文字コードをLinuxではnkfコマンド、またはfileコマンドで確認することができます。

$ nkf --guess foo.txt
UTF-8 (LF)
$ file foo.txt 
foo.txt: UTF-8 Unicode text

よく忘れるのでメモ。
iconvは変換だけで表示はしてくれないみたいですね。

続きを読む

[Linux] スワップ領域を作成する

AWS EC2でインスタンスを新規に作成すると、もれなくスワップ領域が存在しません。
まぁ…スワップ使い始めると劇的にパフォーマンスが落ちるので、足りなくなったらメモリ増やすなり、AutoScalingなりでインスタンス数を増やせってことなんだと思いますが、例えばmakeコマンドなどでビルド中に微妙にメモリが足りなくなった場合は普通にスワップ使ってもらった方が面倒事が少なくて助かる場合もあります。

というわけで今回はLinuxにスワップ領域を作成しマウントするところまでをメモしておきます。
続きを読む

[Linux] ntpからchronyに移行する

サーバやLinux端末、ネットワーク機器などの時刻合わせとしてこれまでNTPが広く利用されてきましたが、最近ではより高速で正確なChronyが普及しつつあります。CentOSなどディストリビューションによっては最初からインストールされているようです。NTPから移植されていない機能もあるようですが、サーバ自身の時刻を合わせるだけであればChronyで必要十分です。

今回はAmazonLinuxの1系を利用しているサーバをNTPからChronyへ移管したいと思います。
続きを読む

[Linux] OSのタイムゾーンを日本時間に変更する

現在のタイムゾーンを確認

UTC(太平洋標準時)になっているようです。

$ date
2019年  3月 27日 水曜日 07:07:46 UTC

日本標準時へ変更

タイムゾーンの設定ファイルの雛形が/usr/share/zoneinfoにずらっとありますので、これを所定の場所にコピーします。シンボリックリンクでも良いようです。

$ sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime

次に/etc/sysconfig/clockを編集します。

$ cat /etc/sysconfig/clock
ZONE="UTC"
UTC=true

$ sudo vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false

変わった!

特にOSの再起動は必要なく、Terminal上ですぐに確認することができます。

$ date
2019年  3月 27日 水曜日 16:12:12 JST

注意点

サーバ(インスタンス)をセットアップする際に行っていれば良いのですが、運用途中で行う場合、例えばcronなどの設定を変更する必要がありますのでご注意を。

続きを読む

[Linux] どのプロセスが暴走しているか突き止める – pidstat編

時折りサーバ内で暴力的なI/Oが発生してまして、その度にMackerelからのアラートで人力再起動させられる生活に疲れたので原因を究明することにしました。

もうこうなってしまうとTerminalからログインすることも出来ず、AWSのWebコンソールから再起動をしています。調査方法は色々あると思うのですが今回は数分で設定できるpidstatを仕掛けることにしました。

取り戻せ平穏な日常。

続きを読む