かっこいいエンジニア == フルスタックエンジニア

ブログのサブタイトルに「かっこいいエンジニアになりたい」と書いてました。
これって自分の中では「ベンチャー企業で活躍する豊富なスキルを持つエンジニア」ってイメージだったのですが、これを表現するいい言葉が出て来ました。

フルスタックエンジニアです。

なのでここは思い切ってタイトルを「ヘッポコからフルスタックを目指す記録」に代えることにしました。

さて、ここ数日怠けていたのでまた明日から気合を入れなおそう。

東日本復興マッチ観戦

オールスターマッチ特有の終始和やかな雰囲気で選手を一度に見れて気持ちいい観戦ができました。
早朝にブラジルに圧倒された日本代表を見たあとのどんよりとした気分を復活させてくれました。

天気がよめなかったので一眼レフを持っていくかだいぶ悩んだのですが、持って行って正解。夏の強い日差しが戻り、期待の若手からベテランプレーヤーまでたくさん撮れました。

「数百枚撮って一枚いいのがあれば良い。」みたいなことを先日お会いした熟練カメラマンの方が言っていたので一枚だけ気に入ったのをここに貼る。
Daisuke Matsui 松井大輔。もう最盛期は過ぎているかもしれないけど南アフリカでの熱いプレーが忘れられません。Jリーグでプレーする姿を見れたらと思います。

東日本復興マッチです。
やっぱり東北に行って見たい。
そう思っています。
まぁそれは近いうちに。

LPIC ファイル操作まわり その2

mount, umountコマンド

言うまでもなし。

mount [オプション]

mount [オプション] デバイス名 mountポイント

オプション無しだと現在のマウント状況が表示される。

# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
オプション 説明
-a fstabに記述されているファイルシステムをすべてマウントする
-t ファイルシステム ファイルシステムを指定する
-o マウントオプションを指定する。
umount [オプション]

umount [オプション] デバイス名/マウントポイント
オプション 説明
-a /etc/mtabに記述されているファイルシステムをすべてアンマウントする。
-t ファイルシステム 指定した種類のファイルシステムだけをアンマウントする。

クオータの制限

  • ハードリミット

    • 利用できる最大ディスク容量。ハードリミットに達すると、それ以上ファイルを書き込む ことができなくなる。
  • ソフトリミット

    • 容量制限の警告を発するタイミングがソフトリミット。ソフトリミットに達してもファイ ルの書き込みはできるが、ソフトリミット超過状態一定期間経過後書き込み不能になる。

クオータの適応

まず/etc/fstabのマウントオプションにusrquotaを追記する。グループの場合はgrpquota を追記。

その上で一度umount,mountを行う。

次にマウントしたファイルシステムの最上位ディレクトリにaquota.userを作成し、root のみのアクセス権を与える。 quotacheck コマンドでデータベースを初期化する。 # quotacheck /home

quotaonコマンドでクォータを有効にする。

edquotaコマンドでユーザごとのクォータを設定する。設定できたらrepquotaコマンドで確 認。

クォータ管理

quotaコマンドでディスクの使用量とクォータの状況を表示する。 ユーザ名を指定しない場合は自身のクォータ状況を表示する。

quota [-u/-g] [オプション] [ユーザ名/グループ名]

quotacheck コマンドでファイルシステムを調べてディスクの使用量をチェックし、デー タベースファイルaquota.user,aquota,groupに記録する。

quotacheck [オプション] ファイルシステム名
quotacheck [オプション] -a (/etc/fstabに従い、ファイルシステムのチェックを行う)

ファイル配置

Linuxにおけるファイルシステムないのレイアウトは、FHS(Filesystem Hierarchy Standard)として標準化が進められている。 ルートファイルシステムに含まなければならないディレクトリは /bin./sbin,/etc,/dev,/lib

以下主なサブディレクトリと忘れがちなディレクトリ

/opt

パッケージ管理の仕組みを利用してプログラムがインストールされるディレクトリ。

/var/cache

manコマンドで表示するために整形したデータなど、一時的なキャッシュファイルが配置 される。

/var/lock

アプリケーションが排他制御に使うためのロックファイルが配置される

/var/log

ログファイルが書き出される。

/var/run

システムの状態を示すファイルが配置されている。このファイルをしていしてkillとかで きる。

/usr/bin

ユーザが一般的に使い、システム保守に必要のないコマンドが格納されている。

/usr/sbin

上記の管理者用

/usr/lib

プログラムに必要な共有ライブラリ

/usr/local/

ローカルシステムで必要とされるコマンドやライブラリなどが配置される

/usr/share

システム・アーキテクチャに依存しないファイルが配置される。

/usr/src

Linuxのカーネルソースなどソースコードが配置される。

find, locate コマンド

よく使うので割愛

updatedb コマンド

locate用にdbを更新する。

which,whereis,tyoeコマンド

割愛

LPIC ファイルシステム周り

du コマンド

ファイルとかフォルダの容量を表示。

$ du (フォルダの容量を表示)
48      ./.git/hooks
8       ./.git/objects/91
8       ./.git/objects/59
(省略)
412     ./.git
540     .

$ du -s .git/ (指定フォルダの容量を表示)
412     .git/

$ du -S .git (サブディレクトリを含めない)
48      .git/hooks
8       .git/objects/91
8       .git/objects/59
(省略)
4       .git/refs/remotes
4       .git/refs
4       .git/branches
28      .git

$ du -c (容量の合計を表示)
(省略)

412     ./.git
540     .
540     合計

$ du -a (ファイルも含める)
(省略)
412     ./.git
4       ./problem014.pl
12      ./.problem019.pl.swp
4       ./problem008.txt
4       ./problem016.pl
4       ./problem017.pl
4       ./problem009.pl
16      ./a.out
4       ./problem011.pl
4       ./README.md
4       ./problem_0007.cpp
540     .

fsck,e2fsck,tune2fsコマンド

fsck:種々のファイルシステムのチェックシステムのフロントエンド

fsck [オプション] デバイス

ext2,ext3およびext4ファイルシステムのチェックと修復にe2fsckコマンドが利用できる 。

e2fsck [オプション] デバイス

tune2fsコマンドはex{2,3,4}の様々なパラメータを設定する。

上記3つのコマンドはアンマウントした状態で行う必要があることに注意。

dumpe2fsコマンド。

ファイルシステムの各種情報を表示することができる。

[root@localhost ~]# dumpe2fs /dev/sda1 | more
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          ef6320be-67a8-47f9-851e-0f89719c6615
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              128016
Block count:              512000
Reserved block count:     25600
Free blocks:              442039
Free inodes:              127972
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         2032
Inode blocks per group:   254
Flex block group size:    16

XFS, ReiserFS

最近流行りのファイルシステム

/etc/fstabファイル

ファイルシステムの情報がすべてここに。

# /etc/fstab
# Created by anaconda on Thu Apr  4 16:57:33 2013
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
    /dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
    UUID=ef6320be-67a8-47f9-851e-0f89719c6615 /boot                   ext4    defaults        1 2
    /dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0

ファイルの形式は

デバイスファイル名 マウントポイント ファイルシステム マウントオプション dumpオプション fsck優先順位

となっている。

マウントオプション 説明
asnyc ファイルシステムの非同期入出力を設定する
auto -aオプションでmountコマンドを実行した時にマウントする
noauto -aオプションでmountコマンドを実行してもマウントされない
defaults デフォルトオプション(async,auto,dev,exec,nouser,rw,suid)
exec バイナリの実行の許可
noexec バイナリ実行非許可
ro 読み出し専用でマウントする
rw 読み書きを許可してマウントする
unhide 隠しファイルも表示する
suid SUIDとSGIDを有効にする
user 一般ユーザでもmount可能にする
users マウントしたユーザ以外でもアンマウントできる
nouser 一般ユーザのmountを許可しないようにする

LPIC プロセス管理周り

psコマンド

言うまでもなし。-を付けないオプションの利用が推奨されている。

  • a : 他のユーザーのプロセスも表示
  • u: 実行ユーザー名も表示
  • x : デーモンも表示

自分が起動しているプロセスを表示

$ ps
 PID TTY          TIME CMD
21902 pts/4    00:00:00 bash
24919 pts/4    00:00:00 ps 

システム上のすべてのプロセスを表示

$ ps ax | head
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 /sbin/init
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00 [migration/0]
    4 ?        S      0:03 [ksoftirqd/0]
    5 ?        S      0:00 [migration/0]
    6 ?        S      0:02 [watchdog/0]
    7 ?        S      2:35 [events/0]
    8 ?        S      0:00 [cgroup]
    9 ?        S      0:00 [khelper]

topコマンド

継続的にプロセスの監視が行える。

$ top
top - 04:05:56 up 3 days, 14:41,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    502412k total,   218252k used,   284160k free,    40980k buffers
Swap:  1015800k total,     2032k used,  1013768k free,    70612k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1160 kisho     20   0 28436 4064 1080 S  0.3  0.8   4:09.49 tmux
24923 kisho     20   0 15020 1272  988 R  0.3  0.3   0:00.03 top
    1 root      20   0 19228  988  808 S  0.0  0.2   0:01.13 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    4 root      20   0     0    0    0 S  0.0  0.0   0:03.90 ksoftirqd/0
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    6 root      RT   0     0    0    0 S  0.0  0.0   0:02.30 watchdog/0
    7 root      20   0     0    0    0 S  0.0  0.0   2:35.93 events/0
    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns
   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr
   12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm
   13 root      20   0     0    0    0 S  0.0  0.0   0:03.98 sync_supers

pstreeコマンド

プロセスの親子構造を木構造で表示

$ pstree
init─┬─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─fastcgi-wrapper
     ├─master─┬─pickup
     │        └─qmgr
     ├─6*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───sshd───bash───tmux
     ├─tmux─┬─2*[bash───su───bash]
     │      ├─bash───vim
     │      └─bash───pstree
     └─udevd───2*[udevd]

killコマンド

プロセスを停止するときに利用。kill -lでシグナル名とシグナルIDが確認できる以下は主なシグナルIDとシグナル名

シグナル名 シグナルID 動作
HUP 1 ハングアップ
INT 2 Ctr + C
KILL 9 強制終了
TERM 15 終了(デフォルト)
CONT 18 停止しているプロセスの再開
STOP 19 一時停止

killallコマンドではプロセスIDではなく、プロセス名でkillができる。

jobコマンド

コマンド&として実行したコマンドはバックグラウンドで動く。

$ yum check-update
$ jobs 
[1]+  Running                 yum check-update &

nohup コマンド

nohungup sshをログアウトしてもコマンドを実行し続けてくれる。これは便利。

$ nohup コマンド&

bg,fgコマンド

そのまんま。

niceコマンド

コマンド実行時の優先度指定nice値が低いほど優先度が高いことに注意(-20~19)

実行優先度を10低くする。

#nice -n -10 コマンド

負数を指定できるのはrootのみ

reniceコマンドで実行中のプロセスの優先度を変更できる。