はじめに †
ディストリ依存(Debian,Ubuntu,RHEL,CentOS,...)や、アーキテクチャ依存(x86_64,i386,armel,mips,...)、ログインユーザー依存(root,一般,...)などの場合でも、基本的に注釈はいれません(察してください)
パッケージ(deb) †
パッケージ検索 †
1
2
3
4
|
-
!
| apt-cache search "<パッケージ名>"
apt-cache search "clang" | grep "^clang"
|
パッケージ情報 †
1
2
3
4
| -
!
-
!
| apt-cache policy <パッケージ名>
apt-cache show <パッケージ名>
|
インストール済みのパッケージ一覧 †
中途半端に入っているパッケージ一覧 †
パッケージの再インストール †
1
|
| apt-get install --reinstall <パッケージ名>
|
パッケージの完全削除 †
1
|
| apt-get --purge autoremove <パッケージ名>
|
アップグレード可能パッケージ一覧 †
パッケージ数の確認 †
1
|
| apt-cache pkgnames | wc -l
|
開発ツール一式のインストール †
1
|
| apt-get install build-essential
|
debファイル †
1
2
3
4
5
| -
!
-
!
| dpkg -i <debファイル>
dpkg -r <debパッケージ名>
|
ユーザー †
ログイン無効ユーザ作成 †
1
2
| -
!
| adduser --disabled-login --gecos '<フルネーム>' <ユーザー名>
|
グループ一覧 †
1
2
3
4
|
-
!
| cat /etc/group
グループ名:パスワード:GID:グループメンバ名(カンマ区切り)
|
グループを追加 †
補助グループを追加 †
1
|
| usermod -aG <補助グループ(,区切り)> <対象ユーザー>
|
別ユーザーでbashを操作 †
1
2
| -
!
| sudo -u <ユーザー名> bash;
|
ユーザーを削除 †
1
2
3
4
5
|
-
!
| userdel -r <ユーザー名>
ps aux | grep <プロセス名>
kill -9 <プロセスID>
|
グループを削除 †
sudo設定 †
1
2
3
4
5
6
7
8
9
|
-
!
-
!
| visudo
<ユーザー名/グループ名(先頭に%が必要)> <ホスト(,区切り)>=(<ユーザー(,区切り)>) <実行可能コマンド(,区切り)>
pi ALL=(ALL) NOPASSWD: ALL
%sudo ALL=(ALL) ALL
|
検索 †
対象を絞ってgrep検索 †
ホワイトスペースを含むパスを考慮して、基本的にfindは-print0を付けたほうが良い
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| -
!
-
!
-
!
-
!
-
!
-
|
|
!
-
!
| grep "<grepワード>" `find <検索ルート(半角スペース区切りで複数指定可能)> -type f -name "<絞り込みワード>"`
find <検索ルート(半角スペース区切りで複数指定可能)> -type f -name "<絞り込みワード>" | xargs grep "<grepワード>"
grep -l "<grepワード>"
grep -w "<grepワード>" ...
grep -i "<grepワード>" ...
grep -e "<正規表現>"
grep -E "<正規表現>"
grep -P "<正規表現>"
zgrep "<grepワード>" `find <検索ルート(半角スペース区切りで複数指定可能)> -type f -name "<絞り込みワード>"`
|
対象を絞って置換 †
1
|
| find <オプション> -type f -print0 | xargs -0 sed -i "s/<置換元文字列>/<置換後文字列>/g"
|
findオプション †
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| -
!
-
|
|
|
!
-
!
-
!
-
!
-
!
| find . -user <ユーザー名>
find . -type <タイプ>
find . ! -name "<絞り込みワード>"
find . -type f ! -name "*.php"
find . <条件> -and <条件>
find . <条件> -or <条件>
find . -maxdepth 1 <オプション>
|
検索結果を使用してコマンドを実行 †
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| -
!
-
!
-
|
!
-
|
|
|
|
|
|
!
| find <オプション> -exec <コマンド> \;
find . -type f -name "*.css" -exec echo {} \;
find <オプション> | xargs echo
find . -type f -name "*.css" -print0 | while read -r -d '' file; do uglifycss "$file" > "${file%%.css}".min.css; rm "$file" done
|
「許可がありません」を無視 †
1
|
| find <パラメータ> 2> /dev/null
|
ディレクトリ †
場所を記憶して移動、記憶した場所に戻る †
1
2
3
4
| -
!
-
!
| pushd <パス>
popd
|
メール †
アドレスの別名やルーティング †
1
2
3
4
5
6
|
-
!
-
!
| vi /etc/aliases
<適当な名前(別名)>: <存在するユーザー名(宛先)>
<存在するユーザー名>: <存在するユーザー名(宛先)>
|
システム †
シャットダウン/再起動 †
1
2
3
4
5
6
7
8
| -
!
-
!
| poweroff
halt -p
shutdown -h now
reboot
shutdown -r now
|
ユニット状態確認 †
1
2
3
4
5
6
7
8
9
10
11
| -
!
-
!
-
!
-
!
| systemctl status
systemctl status <ユニット名>
systemctl
systemctl --failed
|
デーモンの自動起動をやめる †
1
2
3
4
5
6
|
-
!
-
!
| systemctl disable <ユニット名>
update-rc.d -f <デーモン名> remove
chkconfig <デーモン名> off
|
プロセス †
プロセスの中断、再開 †
1
2
3
4
5
6
7
| -
!
-
|
!
| [ctrl]+z
jobs -s
fg %<ジョブの番号>
|
メモリ使用量の多いプロセスを表示 †
1
|
| ps aux --sort -rss | head
|
バックグラウンドジョブの実行 †
プロセスが使用しているファイルを特定 †
1
2
3
4
|
-
!
| lsof | grep "<プロセス名,ユーザー名,PIDなど>"
lsof -p `pgrep -n <プロセス名>`
|
特定のファイルを使用しているプロセスを特定 †
通信しているプロセス一覧 †
プロセスの強制終了 †
1
2
3
4
5
|
-
!
| ps aux | grep <プロセス名>
kill -9 <プロセスID>
kill -9 `pgrep -n <プロセス名>`
|
プロセスのメモリマップを表示 †
1
|
| cat /proc/<プロセスID>/maps
|
圧縮解凍 †
Linuxでよく使う圧縮解凍コマンド †
1
2
3
4
5
6
7
8
9
10
11
12
13
| -
!
-
!
-
!
-
!
| tar zcf <圧縮出力先> <対象パス(半角スペース区切りで複数可)>
tar zxf <解凍対象>
tar -jxf <解凍対象>
tar cf <圧縮出力先> <対象パス(半角スペース区切りで複数可)>
tar xf <解凍対象>
unzip <解凍対象>
|
パイプで圧縮対象を受け取る †
1
2
| -
!
| <何かしらのコマンド> | gzip > <圧縮出力先>
|
ダウンロード †
ファイルとして保存 †
認証ありのサイトからのダウンロード †
1
2
3
4
5
6
7
| -
!
-
!
| wget --user <ユーザー名> --ask-password <URL>
curl -u <ユーザー名> <URL>
wget --user <ユーザー名> --password <パスワード> <URI>
curl -u <ユーザー名>:<パスワード> <URI>
|
証明書の整合性を確認せずに実行 †
1
2
3
| -
!
| wget --no-check-certificate <URI>
curl -k <URI>
|
リファラ、UA付きで実行 †
1
|
| curl -e <リファラ> -A <ユーザーエージェント> <URI>
|
単純な規則のURLを自動取得 †
1
2
| -
!
| curl -e http://hoge.com -A "Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1" -O http://hoge.com/[0-100].jpg
|
手軽にクロール †
1
2
3
4
5
6
7
8
9
| -
|
|
|
|
|
|
|
!
| wget -r -np -A jpg,png http://hoge.com
|
手軽にミラーリング †
1
2
3
4
| -
|
|
!
| wget -m -p http://hoge.com
|
ファイル †
改行コードを変更 †
1
2
| -
!
| find . -type f -name "*.sh" | xargs sed -i 's/\r\n/\n/'
|
変更不可にする †
1
2
3
4
5
6
7
| -
!
-
!
-
| chattr +i <ファイル>
chattr -i <ファイル>
|
調査 †
更新されるファイルを読み続ける †
ファイルタイプを確認 †
バイナリダンプ †
1
2
3
4
5
6
7
|
-
!
-
!
| od <ファイルパス>
od <ファイルパス> | head -5
od -t x1z -A x <ファイルパス> | head -5
|
表示可能な文字列を表示 †
ELF(Executable and Linking Format)を確認 †
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| -
!
-
!
-
!
-
!
-
!
-
!
-
!
| readelf -h <ファイルパス>
readelf -l <ファイルパス>
readelf -S <ファイルパス>
readelf -s <ファイルパス>
readelf -r <ファイルパス>
readelf -d <ファイルパス>
readelf -V <ファイルパス>
|
共有ライブラリの依存関係を確認 †
アセンブラ表示 †
1
2
3
4
5
|
-
|
!
| objdump -d <ELFバイナリ>
objdump -S -d <ELFバイナリ>
|
C++シンボルをデマングル †
1
2
|
| nm --demangle <.oファイルパス>
nm <.oファイルパス> | c++filt
|
ファイルシステム †
ディレクトリのサイズを調べる †
1
2
3
4
5
| -
!
-
!
| du -s <ディレクトリパス>
du -d1 <ディレクトリパス>
|
swap領域を確認 †
1
2
3
4
| -
!
-
!
| free -h
fdisk -l
|
ディスク使用状況を確認 †
ファイルシステムを確認 †
inode状況を確認 †
パーティションテーブルを確認 †
パーティションを作成 †
1
2
3
4
5
6
7
8
9
10
|
-
!
-
|
|
|
|
|
| fdisk <デバイスパス>
fdisk /dev/sdb
|
フォーマット †
1
2
3
4
5
6
7
8
9
| -
!
-
!
-
!
-
!
| mkfs.ext3 <デバイスパス>
mkfs.ext3 /dev/sdb1
mkfs.ext4 <デバイスパス>
mkfs.ext4 /dev/sdb1
|
マウント/アンマウント †
1
2
3
4
5
6
7
8
| -
!
-
!
| fdisk -l
mkdir /mnt/foo
mount -t ext3 /dev/sdb1 /mnt/foo
umount /mnt/foo
|
起動時に自動でマウントするデバイスを追加 †
1
2
3
4
5
6
7
8
|
-
|
|
|
|
!
| vi /etc/fstab
/dev/sda1 /mnt/usb ext4 defaults,relatime 0 2
|
ネットワーク †
NICを指定して起動,停止 †
1
2
3
4
5
6
7
8
| -
!
-
!
-
!
| ifup <デバイス名>
ifdown <デバイス名>
service networking start
service networking stop
|
リンク状態や対応規格を確認 †
1
2
3
4
5
6
7
|
-
!
-
!
| ethtool <デバイス名>
mii-tool -v <デバイス名>
ethtool eth0
mii-tool -v eth0
|
ドライバを確認 †
1
2
3
4
|
-
!
| ethtool -i <デバイス名>
ethtool wlan0
|
無線接続状態の確認 †
1
2
3
|
-
!
| iw <デバイス名> info
iwcnofig <デバイス名>
|
SSIDをスキャン †
MTU確認/変更 †
1
2
3
4
5
6
| -
!
-
!
| ip addr
ifconfig
ip link set dev <デバイス名> mtu <MTU値>
ifconfig <デバイス名> mtu <MTU値>
|
統計情報の表示 †
パケットキャプチャ †
1
2
3
4
5
| -
!
-
!
| tcpdump host <IP>
tcpdump host <IP> and port <ポート1> or port <ポート2>
|
名前解決 †
1
2
3
4
5
|
-
!
| host <名前|IP> <DNSサーバー(省略可能)>
dig <名前|IP> @<DNSサーバー(省略可能)>
dig <名前|IP> | grep "Query time"
|
経路の表示 †
1
2
3
4
5
6
7
8
9
10
11
| -
!
-
!
-
!
-
!
| traceroute <名前|IP>
traceroute -T -p <ポート> <名前|IP>
traceroute -U -p <ポート> <名前|IP>
traceroute -I <名前|IP>
|
静的経路の設定 †
1
2
3
4
| -
!
-
!
| route add -net <IP|ネットワークアドレス> netmask <サブネットマスク> gw <ゲートウェイアドレス> <デバイス名>
route del -net <IP|ネットワークアドレス> netmask <サブネットマスク>
|
ARPテーブルの表示 †
ARPテーブルの値を削除 †
1
|
| arp -d <アドレス(arpで確認できる)>
|
グローバルIPの確認 †
ブート時のオンライン待ちスキップ †
1
2
3
| -
!
| systemctl disable systemd-networkd-wait-online
systemctl mask systemd-networkd-wait-online
|
グローバルIPの確認 †
再生/録音のカード/デバイスを確認 †
1
2
3
4
5
6
7
8
| -
|
!
-
!
-
!
| aplay -l
arecord -l
cat /proc/asound/pcm
|
デバイス一覧 †
1
2
| -
!
| amixer -c <カード番号>
|
音量変更 †
1
2
3
4
|
-
!
| amixer -c <カード番号> set <デバイス名> <音量(%)>
amixer -c 0 set PCM 90%
|
ロケール †
現在の設定 †
設定の変更 †
1
2
3
4
5
6
7
| -
!
-
|
!
| export LANG=ja_JP.UTF8
export LC_ALL=ja_JP.UTF8
apt-get install language-pack-ja
|
環境変数 †
表示 †
1
2
3
|
| printenv
echo $<環境変数名>
|
一時追加 †
永続追加 †
1
2
3
4
5
6
| -
!
-
!
| /etc/environment
~/.profile
~/.bashrc
|
その他 †
コマンドの場所を調べる †
カーネルソースのダウンロード †
1
2
3
4
5
|
-
!
-
| git clone --recursive git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git <clone先パス>
git clone --recursive https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable <clone先パス>
|
ターミナルのクリア †
設定の再読み込み †
1
2
3
4
|
-
!
| source <実行したいスクリプトパス>
source .bashrc
|
デスクトップ環境のある状態でテキストモードをデフォルトにする †
1
2
3
4
5
|
| sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="text"
sudo update-grub
sudo update-grub2
|
ddの進捗状況を確認 †
1
|
| while true; do killall -USR1 dd; sleep 2; done
|
定期実行(監視にも使える) †
1
2
3
4
5
6
7
8
9
| -
!
-
!
-
|
!
| watch '<コマンド>'
watch -n <秒> '<コマンド>'
watch -d '<コマンド>'
|
コマンドの実行時間を調べる †
ホスト名を変更したい †
/etc/hostname, /etc/hostsを変更する
1
2
| -
!
| hostnamectl set-hostname <ホスト名>
|
USBデバイスの一覧 †
1
2
3
4
|
-
!
| lsusb
lsusb -v -s <バス番号>:<デバイス番号> | less
|
ハードウェア情報の一覧 †
1
2
3
4
|
-
!
| lshw
lshw -class processor
|
PCI接続の一覧 †
ディストリビューションのバージョンを調べる †
1
2
3
4
|
| cat /etc/debian_version
cat /etc/redhat-release
lsb_release -a
|
カーネルのバージョン/CPUアーキテクチャを調べる †
1
2
|
| uname -a
cat /proc/version
|
UUIDを生成 †
1
2
3
4
5
6
7
8
|
-
|
|
|
| apt-get install uuid
uuid -v<1|3|4|5>
|
行数を取得 †
1
2
3
4
5
| -
!
-
!
| <調査対象> | wc -l
yum list | wc -l
|
/bootの空き確保 †
1
2
3
4
5
6
7
8
9
10
11
| -
!
-
!
-
!
| uname -a
df -h
ls -lhA /boot
dpkg -l | grep linux-image
apt remove <カーネル名>
|