いろいろあるLinuxコマンドを区別するためのメモ。
w系
w | ログイン中のユーザについて、実行中のコマンド名も含め表示する |
who | ログイン中のユーザについて、ログイン時刻を表示する |
users | ログイン中のユーザのみを表示する |
id | 自分の実ユーザ名、実効ユーザ名、所属グループを表示する |
whoami | 自分の実効ユーザ名のみを表示する |
last | 成功したログイン履歴を表示する |
lastb | 失敗したログイン履歴を表示する(要root権限) |
lastlog | 各ユーザの最終ログイン時刻を表示する |
$ w
22:44:42 up 12:19, 3 users, load average: 0.03, 0.02, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user pts/2 192.168.56.1 21:16 2.00s 0.77s 0.00s w
$ who
user pts/2 2014-11-11 21:16 (192.168.56.1)
$ users
user
これらのコマンドが標準で読み込むログデータは、/var/run/utmp、/var/log/{wtmp,btmp}にある。
which系
which | コマンド名から絶対パスを得る |
readlink | シンボリックリンクを解決する(-eオプションで絶対パスを得る) |
whereis | コマンド名などから設定ファイルやマニュアルなどのパス一式を得る |
whatis | コマンド名などから概要をリスト表示する(完全一致) |
apropos | コマンド名などから概要をリスト表示する(部分一致) |
man | コマンド名などからマニュアルを表示する |
mandb | マニュアルのインデックス情報を更新する |
manpath | マニュアルが置かれているパスを表示する |
locate | ファイルデータベースから検索する(部分一致) |
updatedb | ファイルデータベースを更新する(要root権限) |
$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/bin/X11/passwd /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz
$ whatis passwd
passwd (1ssl) - compute password hashes
passwd (1) - change user password
passwd (5) - the password file
$ apropos passwd
chgpasswd (8) - update group passwords in batch mode
chpasswd (8) - update passwords in batch mode
fgetpwent_r (3) - get passwd file entry reentrantly
...
ps系
ps | プロセス一覧を表示(fで親子関係を表示) |
pstree | プロセスツリーを表示(-aオプションでコマンドライン表示) |
pidof | プロセス名からプロセスIDを得る(完全一致) |
pgrep | プロセス名からプロセスIDを得る(部分一致、-aオプションでコマンドライン表示) |
kill | プロセスIDに対しシグナルを送る |
killall | 一致するプロセス名すべてにシグナルを送る(完全一致) |
pkill | 一致するプロセス名すべてにシグナルを送る(部分一致) |
top | プロセス一覧のリアルタイム表示(-cオプションでコマンドライン表示) |
$ ps auxf
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
root 930 0.0 0.6 61364 3060 ? Ss 02:30 0:00 /usr/sbin/sshd -D
root 1313 0.6 0.8 103556 4148 ? Ss 02:31 0:00 \_ sshd: user [priv]
user 1362 0.0 0.3 103556 1932 ? S 02:31 0:00 \_ sshd: user@pts/0
user 1363 2.6 0.9 23036 4592 pts/0 Ss 02:31 0:00 \_ -bash
user 1376 0.0 0.2 18280 1360 pts/0 R+ 02:31 0:00 \_ ps auxf
...
$ pstree
init─┬─acpid
├─apache2───2*[apache2───26*[{apache2}]]
├─atd
├─cron
├─dbus-daemon
├─dhclient
├─docker.io───6*[{docker.io}]
├─6*[getty]
├─rsyslogd───3*[{rsyslogd}]
├─sshd───sshd───sshd───bash───pstree
├─systemd-logind
├─systemd-udevd
├─upstart-file-br
├─upstart-socket-
└─upstart-udev-br
$ pstree -a
init
├─acpid -c /etc/acpi/events -s /var/run/acpid.socket
├─apache2 -k start
│ ├─apache2 -k start
│ │ └─26*[{apache2}]
│ └─apache2 -k start
│ └─26*[{apache2}]
├─atd
├─cron
├─dbus-daemon --system --fork
├─dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
├─docker.io -d
│ └─6*[{docker.io}]
├─getty -8 38400 tty4
├─getty -8 38400 tty5
├─getty -8 38400 tty2
├─getty -8 38400 tty3
├─getty -8 38400 tty6
├─getty -8 38400 tty1
├─rsyslogd
│ └─3*[{rsyslogd}]
├─sshd -D
│ └─sshd
│ └─sshd
│ └─bash
│ └─pstree -a
├─systemd-logind
├─systemd-udevd --daemon
├─upstart-file-br --daemon
├─upstart-socket- --daemon
└─upstart-udev-br --daemon
$ pidof sh
$ pgrep -a sh
127 kdmflush
130 kdmflush
930 /usr/sbin/sshd -D
1313 sshd: user [priv]
1362 sshd: user@pts/0
1363 -bash
topコマンドでは、x
でソートカラムのハイライト、<
、>
でソートカラムの移動、c
でコマンドラインの表示切り替えができる。
hexdump系
od | 8進ダンプ(`-Ax -tx1z`で16進ascii view付きダンプ) |
hexdump | 16進ダンプ、printfライクなフォーマット指定が可能 |
hd | 16進ascii view付きダンプ(`hd -C`と同じ) |
xxd | 16進ダンプ、バイナリへの逆変換が可能 |
od -Ax -tx1z
とhd
はほぼ同じ出力となる。
$ echo hoge | od -Ax -tx1z
000000 68 6f 67 65 0a >hoge.<
000005
$ echo hoge | hd
00000000 68 6f 67 65 0a |hoge.|
00000005
hexdumpはフォーマット文字列を指定することで、エスケープ文字列の生成などに使える。
$ echo hoge | hexdump -ve '/1 "_%02x"' | sed 's/_/\\x/g'
\x68\x6f\x67\x65\x0a
xxdは出力結果をバイナリに戻すことができるため、バイナリ編集に使える。
$ echo hoge | xxd | tee dump.txt
0000000: 686f 6765 0a hoge.
$ sed 's/6[0-9a-f]/61/g' dump.txt | tee dump2.txt
0000000: 6161 6161 0a hoge.
$ xxd -r dump2.txt
aaaa
*stat系
netstat | TCP、UDP、Unixドメインソケットの利用状況(`-an`)、ルーティングテーブル(`-rn`)などを表示 |
vmstat | メモリ、CPUなどの利用状況を表示 |
free | メモリ、swapの利用状況を表示 |
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 192248 35296 214808 0 0 45 30 42 617 0 1 98 1 0
$ free
total used free shared buffers cached
Mem: 501788 309540 192248 684 35296 214808
-/+ buffers/cache: 59436 442352
Swap: 524284 0 524284
sysstatパッケージをインストールすると、以下のコマンドも使える。
引数を与えることで、定期的に表示させることもできる。
iostat | CPU、ディスクのIO状況を表示(-pオプションでパーティションごとの詳細も表示) |
mpstat | CPUプロセッサごとの利用状況を表示(`-P ALL`ですべて表示) |
pidstat | プロセスごとのCPU、メモリ使用量などを表示 |
$ iostat -p
Linux 3.13.0-32-generic (vm-ubuntu64) 11/12/2014 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.36 0.00 0.87 0.66 0.00 98.11
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.95 42.92 30.14 239600 168258
sda1 0.06 0.21 0.00 1149 6
sda2 0.00 0.00 0.00 2 0
sda5 1.75 42.58 30.14 237709 168252
dm-0 3.17 42.36 30.14 236493 168252
dm-1 0.04 0.16 0.00 896 0
$ mpstat -P ALL
Linux 3.13.0-32-generic (vm-ubuntu64) 11/12/2014 _x86_64_ (1 CPU)
04:03:58 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
04:03:58 AM all 0.36 0.00 0.68 0.66 0.19 0.00 0.00 0.00 0.00 98.11
04:03:58 AM 0 0.36 0.00 0.68 0.66 0.19 0.00 0.00 0.00 0.00 98.11
$ pidstat
Linux 3.13.0-32-generic (vm-ubuntu64) 11/12/2014 _x86_64_ (1 CPU)
04:04:02 AM UID PID %usr %system %guest %CPU CPU Command
04:04:02 AM 0 1 0.01 0.01 0.00 0.02 0 init
04:04:02 AM 0 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0
04:04:02 AM 0 7 0.00 0.01 0.00 0.01 0 rcu_sched
04:04:02 AM 0 8 0.00 0.02 0.00 0.02 0 rcuos/0
...
ls*系
lsof | 各プロセスが開いているファイルの一覧を表示(`lsof -in`でソケット利用状況のみを表示) |
lsmod | 読み込まれているカーネルモジュールの一覧を表示 |
lsblk | ブロックデバイスの一覧を表示 |
lspci | PCIデバイスの一覧を表示 |
lsusb | USBデバイスの一覧を表示 |
lscpu | CPUの詳細を表示 |
lshw | ハードウェアの詳細を表示 |
$ sudo lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 252,0 4096 2 /
init 1 root rtd DIR 252,0 4096 2 /
init 1 root txt REG 252,0 265848 1962283 /sbin/init
init 1 root mem REG 252,0 47712 1051256 /lib/x86_64-linux-gnu/libnss_files-2.19.so
...
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 39.8G 0 part
├─vm--ubuntu64--vg-root (dm-0) 252:0 0 38.8G 0 lvm /
└─vm--ubuntu64--vg-swap_1 (dm-1) 252:1 0 1G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
$ sudo lshw
vm-ubuntu64
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
...
host系
host | DNS問い合わせを行う(-aオプションで詳細表示) |
hostname | 自分のホスト名を表示する(-Iオプションで持っているIPアドレスをすべて表示する) |
nslookup | DNS問い合わせを行う(非推奨) |
dig | 詳細なDNS問い合わせを行う(+norecオプションで再帰問い合わせをオフ、+shortで簡易表示) |
$ hostname
vm-ubuntu64
$ hostname -I
10.0.2.15 192.168.56.2 172.17.42.1
$ host www.example.com
www.example.com has address 93.184.216.119
$ host -a www.example.com
Trying "www.example.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65301
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.example.com. IN ANY
;; ANSWER SECTION:
www.example.com. 49262 IN AAAA 2606:2800:220:6d:26bf:1447:1097:aa7
www.example.com. 41920 IN A 93.184.216.119
Received 77 bytes from 192.168.0.1#53 in 15 ms
$ dig +norec www.example.com
; <<>> DiG 9.9.5-3-Ubuntu <<>> +norec www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58718
;; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 51107 IN A 93.184.216.119
;; Query time: 17 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Nov 09 07:31:28 JST 2014
;; MSG SIZE rcvd: 60
$ dig +short www.example.com
93.184.216.119
ldnsutilsパッケージをインストールすると、drillコマンドも使える。
drill | 詳細なDNS問い合わせを行う(DNSSEC用オプションあり) |
$ drill -S good-A.test.dnssec-tools.org @8.8.8.8
;; Chasing: good-a.test.dnssec-tools.org. A
Warning: No trusted keys specified
DNSSEC Trust tree:
good-A.test.dnssec-tools.org. (A)
|---test.dnssec-tools.org. (DNSKEY keytag: 19442 alg: 5 flags: 256)
|---test.dnssec-tools.org. (DNSKEY keytag: 28827 alg: 5 flags: 257)
|---test.dnssec-tools.org. (DNSKEY keytag: 55926 alg: 5 flags: 257)
|---test.dnssec-tools.org. (DS keytag: 28827 digest type: 2)
| |---dnssec-tools.org. (DNSKEY keytag: 3147 alg: 5 flags: 256)
| |---dnssec-tools.org. (DNSKEY keytag: 34816 alg: 5 flags: 257)
| |---dnssec-tools.org. (DS keytag: 34816 digest type: 2)
| |---DNSSEC signature not incepted yet:
dnssec-tools.org. 21514 IN RRSIG DS 7 2 86400 20141130154950 20141109144950 60764 org. Y81ZkDb5VATulj+EykyOG9lir+mn9t9mMslqxTYc2PabXLXrl+i7H3Qo2i7zazI3uLwqb2Ash0GQVBaaQ5yPyhw+v7mmPw=
For RRset:
dnssec-tools.org. 21514 IN DS 34816 5 2 bf59736eab4d7080065a8c96a714b86c23383478f69d9f7d887cbe9930b7a7a0
With key:
org. 448 IN DNSKEY 256 3 7 AwEAAXQRcjCcYDIZTLZZq46iF8oUX+c15GVdbszCa2RrrPz7yWEWAhu1A2ca8fWm9RR5uBS/cO0zC/NQYWrmjp0Ci/h5ENrkFZlTLxOUC39zcKtYkymNXZ1Jv5GQ0D40AO2FYUdkMCR+EDJoGxCjv+W9j96I}
| |---org. (DNSKEY keytag: 60764 alg: 7 flags: 256)
(snip)
You have not provided any trusted keys.
;; Chase successful
関連リンク