cpuの情報を見やすくするlscpu
CPUの情報を知りたい時、/proc/cpuinfo
の中身をいつも見ていたが、コマンド一発でしかも見やすくしてくれるコマンドがlscpu
。便利
- lscpu を実行した場合
# lscpu アーキテクチャ: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 コアあたりのスレッド数:1 ソケットあたりのコア数:1 Socket(s): 1 NUMAノード: 1 ベンダーID: GenuineIntel CPUファミリー: 6 モデル: 62 Model name: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz ステッピング: 4 CPU MHz: 2599.998 BogoMIPS: 5199.99 仮想化: VT-x ハイパーバイザーベンダー:KVM 仮想化タイプ: 完全仮想化 L1d キャッシュ: 32K L1i キャッシュ: 32K L2 キャッシュ: 256K L3 キャッシュ: 20480K NUMAノード 0 CPU: 0
/proc/cpuinfo
を見た場合
# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 62 model name : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz stepping : 4 microcode : 0x1 cpu MHz : 2599.998 cache size : 20480 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm vnmi ept fsgsbase tsc_adjust smep erms xsaveopt bogomips : 5199.99 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:
インストール済みパッケージに変更が無いかチェック
インストール済みのパッケージファイルとRPMファイルの情報を比較し、変更がないかをrpmコマンドでチェックすることができる。
私の環境で、td-agentをチェックしてみる。
# rpm -V td-agent .M....G.. /opt
/opt で以下が変わっていた。 M は、ファイルの権限が変わっている。 G は、グループが変わっている。
その他のコードは以下。
コード | 説明 |
---|---|
5 | MD5チェックサムが異なる。 |
S | ファイルの大きさが異なる。 |
L | シンボリックリンク属性が異なる。 |
T | ファイルの修正時刻(mtime)が異なる。 |
D | デバイスファイルが変更されている。 |
U | ファイルの所有者が変更されている。 |
G | ファイルのグループが変更されている。 |
M | ファイルのモードが変更されている。 |
? | 未知または理由不明。 |
pmilterの導入
概要
PmilterはProgrammable Mail Filterの略で、SMTPサーバ(送信や受信)とmilterプロトコルで通信し、SMTPサーバの送受信の振る舞いをRubyでコントロールできるサーバソフトウェアです。
ref: Pmilter: Programmable Mail Filter Serverを作った
rubyで自分の思い通りに制御できるところが素晴らしいなと思い、試してみる。
環境構築にあたっては、 pmilter + postfixでプログラマブルなSMTPサーバを作る(入門編) を参照するとして、私は補足を。
環境
OS, centos7
MTA, postfix3.1
補足
postfix3.1が最新のステーブルだがBaseのリポジトリにはないので、gfさんのリポジトリを利用させていただいた。 また、postfix2系がすでに入っていると、競合してインストール出来ないので、postfix2をアンインストールしたのちにpostfix3を入れる。
rpm -ivh http://mirror.symnds.com/distributions/gf/el/7/gf/x86_64/gf-release-7-10.gf.el7.noarch.rpm yum remove postfix yum --enablerepo=gf-plus install postfix3
pmilter導入
pmilter を socket を利用して起動するもプロンプトがすぐに返ってきた。
sudo -u postfix ./pmilter -c pmilter.conf
/var/log/messages
に以下エラー。
Jan 5 19:11:58 localhost pmilter: pmilter: Unable to bind to port /var/spool/postfix/pmilter/pmilter.sock: Permission denied Jan 5 19:11:58 localhost pmilter: pmilter: Unable to create listening socket on conn /var/spool/postfix/pmilter/pmilter.sock
/var/spool/postfix/pmilter/
がroot権限で作成されていたため、権限がないというエラーになっていた
chown postfix: /var/spool/postfix/pmilter
再度実行し、うまく起動した。
動作確認
動作確認にはpostfixに付属でついているsmtp-source
を利用。
smtp-source -s1 -m1 -l 1024 -f test@example.com -t src@example.com -S "test mail" 127.0.0.1
pmilterでログが正常に出力された
[root@localhost pmilter]# sudo -u postfix ./pmilter -c pmilter.conf [Thu, 05 Jan 2017 12:54:55 GMT][notice]: pmilter/0.0.1 starting hello pmilter handler called from pmilter client ipaddr 127.0.0.1 client hostname localhost client daemon localhost.localdomain handler phase name: mruby_connect_handler helo hostname: localhost.localdomain tls client issuer: tls client subject: tls session key size: tls encrypt method: tls version: env from from args: <test@example.com> env from from symval: test@example.com SASL login name: SASL login sender: SASL login type: env to from arg: src@example.com env to from symval: src@example.com header: {"From"=>"<test@example.com>"} header: {"To"=>"<src@example.com>"} header: {"Date"=>"Thu, 5 Jan 2017 21:55:05 +0900 (JST)"} header: {"Message-Id"=>"<3244.0003.0000@localhost.localdomain>"} header: {"Subject"=>"test mail"} body chunk; 1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 3XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 8XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myhostname: localhost.localdomain message_id: DD58741B34FC reveive_time: Thu Jan 05 21:55:05 2017 add_header(X-Pmilter:True): Enable
macでパスワードを生成する
macでパスワードを作りたい場合、pwgenを使う。
導入方法
インストールは Homebrewを導入していればbrew installするだけ。
brew install pwgen
# brew install pwgen ==> Downloading https://downloads.sourceforge.net/project/pwgen/pwgen/2.07/pwgen-2.07.tar.gz ==> Downloading from http://jaist.dl.sourceforge.net/project/pwgen/pwgen/2.07/pwgen-2.07.tar.gz ######################################################################## 100.0% ==> ./configure --prefix=/usr/local/Cellar/pwgen/2.07 --mandir=/usr/local/Cellar/pwgen/2.07/share/man ==> make install
使い方
pwgen を実行するだけで、8桁のパスワードをたくさん出してくれるが、オプションを渡すことでさらに複雑なパスワードや逆に簡単なパスワードを生成することができる。
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
OPTIONS
OPTION | Content |
---|---|
-c –capitalize | パスワードに最低1文字は大文字を含める(デフォルト) |
-A –no-capitalize | パスワードに大文字を含めない |
-n –numerals | パスワードに最低1文字は数字を含める(デフォルト) |
-0 –no-numerals | パスワードに数字を含めない |
-y –symbols | パスワードに最低1文字は特殊文字を含める |
-s –secure | 完全にランダムなパスワードを生成する。 |
-B –ambiguous | パスワードに曖昧な文字は含めない(0とO等) |
-h –help | 使い方を表示する |
-H –sha1=path/to/file[#seed] | ランダムなパスワードをファイルのsha1ハッシュを使用する |
-C | 列にパスワードを表示する(デフォルト) |
-1 | 列にパスワードを表示しない(1行1パスワード) |
-v –no-vowels | 偶然の不快な言葉を避けるために母音を使用しない |
pw_length
パスワードの文字数を指定する。
num_pw
パスワードの生成数を指定する。
例
試しに使ってみよう。
以下の条件で、実行する。 - 数字を含めない - パスワードは10文字 - パスワードを5つ生成する。
# pwgen -0 10 5 waijahgahM aeRahkemoo keeCeithoh Haeshaecam OhmieGeefa
散らかった写真を整理したい方へ
数年前に家族が撮影した未整理の写真データが出てきた。 変更した日は出ているが、写真名からはいつのものか判断できない。さらにはよく見ると同じ写真がファイル名が違うものであったりと、かなり状態としては悲惨だった。 それをサクッと整理したお話です。
以下、finderで表示した場合、こんな感じだった。
整理するためにやるべきこと
用件としては二つ
- 重複したデータは取り除く
- それぞれの写真の日付が一目でわかるようにする
やったこと
重複データを取り除く。
お金を出せば有料のアプリで一気にできるのだが、どちらもコマンドを使って解決した。
まず、重複データを取り除く。
fdupes
というコマンドを利用した。mac標準では入っていないので、brew
を使ってインストールする。
brew install fdupes
※ なお、brew
が何ものかについては MacにHomebrewをインストールする あたりを参照のこと。
これでfdupes
が使える状態になった。
# fdupes -r フォルダ名
これで、重複しているファイルリストが出てくる。
# fdupes -r backup/ | head backup/SH3E0154.jpg backup/SH3E0154_0001.jpg backup/SH3E0090.jpg backup/SH3E0090_0001.jpg backup/PAP_0222.JPG backup/PAP_0223.JPG backup/PAP_0224.JPG backup/PAP_0225.JPG
fdupesに重複ファイルを消すオプションがついているけれど、消してしまったら元に戻せないので、一度対象のファイル名をテキストに出力する。
fdupes -rf backup/ | sort | uniq | grep -v '^$' > duplicate.list
中身を確認し、問題なければ削除する。
while read file; do rm "$file"; done < duplicate.list
この時、rmだとこれまた問答無用で消えてしまうので、それでも怖い方はrmtrashなどを利用する。 そうすると、重複ファイルは、ゴミ箱に入る。確認が終わったらゴミ箱を空にすればOK!
ファイルがいつに撮影されたものか一目でわかるように。
ファイル名が日付になれば、一目でわかる。
jhead
コマンドを利用する。
brewで一発で入る。
brew install jhead
ファイル名を変換するには以下のとおり。
jhead -nf%Y-%m-%d-%H%M%S [ファイル名]
正規表現が使えるので、
jhead -nf%Y-%m-%d-%H%M%S *.jpg
あとは、年月日のディレクトリごとに整理するなりしたらスッキリ。
smtpの負荷試験
postfixサーバでの負荷試験をするために、smtp-source(postfixに内包されている) を用いた。 メールを配送したくないのであれば、smtp-sinkを使うと良い(ここでは割愛)
例:
smtp-source -s100 -m10000 -l 4194304 -f info@example.com -t info@hogehoge.com -M "example.com" -S "test mail" smtp.example.com
オプション
オプション 説明 -s SMTPセッションの並列数 -m 送信数 -l 送信サイズ -f 送信元メールアドレス -t 送信先メールアドレス -M HELOコマンドのホスト名 -S 件名
送信元サーバが非力だと思った性能が出せないので、気をつける。
変数宣言されているが使われていない。
変数宣言しているが使われていないってエラーが出る。 golang厳しい。
# go run main.go # command-line-arguments ./main.go:14: a declared and not used