Linux でよく使うコマンドのチートシート
よく使うコマンドのオプションをまとめておきます。 随時更新します。
Linux 初期化用スクリプト
Ubuntu 24.04
curl -sL https://raw.githubusercontent.com/sig9org/init-linux/master/init-ubuntu24.sh | bash -s
Ubuntu 22.04LTS
curl -sL https://raw.githubusercontent.com/sig9org/init-linux/master/init-ubuntu22.sh | bash -s
direnv
Python venv 環境を有効化する
echo 'source .venv/bin/activate' > .envrc
direnv allow
python3 -m pip install --upgrade pip
direnv のインストール
curl -L https://github.com/direnv/direnv/releases/download/v2.34.0/direnv.linux-amd64 -o /usr/local/bin/direnv && \
chmod 755 /usr/local/bin/direnv
シェルへの Hook 設定
cat << 'EOF' >> ~/.bashrc
export EDITOR=vim
eval "$(direnv hook bash)"
EOF
asdf で頻繁に利用するコマンド
No. |
コマンド |
説明 |
1 |
asdf plugin list all |
インストール可能なプラグイン一覧を表示する |
2 |
asdf plugin add [PLUGIN] |
プラグインをインストールする |
3 |
asdf list all [PLUGIN] |
インストール可能なバージョン一覧を表示する |
4 |
asdf install [PLUGIN] |
プラグインが提供するバイナリのうち、最新バージョンをインストールする |
5 |
asdf install [PLUGIN] [VERSION] |
プラグインが提供するバイナリのうち、指定バージョンをインストールする |
6 |
asdf list [PLUGIN] |
インストール済みのバージョン一覧を表示する |
7 |
asdf global [PLUGIN] [VERSION] |
システム全体で利用する PLUGIN のバージョンを指定する |
8 |
asdf update |
asdf 自身をアップデートする |
9 |
asdf plugin update --all |
インストール済みのプラグインを全てアップデートする |
10 |
asdf uninstall [PLUGIN] [VERSION] |
指定バージョンをアンインストールする |
Python を更新する例
asdf list
asdf list all python | grep ^3.1[0-9]
asdf install python 3.12.4
asdf global python 3.12.4
asdf list
asdf uninstall python 3.12.2
古い Linux カーネルを削除する
RHEL7 / CentOS7
package-cleanup --oldkernels --count=1 -y
RHEL8 / CentOS8 / RockyLinux8
dnf -y remove $(dnf repoquery --installonly --latest-limit=-1 -q)
もしくは下記を実行する。
展開 / 圧縮
ファイル形式 |
展開 |
圧縮 |
tar.gz |
tar zxvf ARCHIVE.tar.gz |
tar zcvf ARCHIVE.tar.gz DIRECTORY |
tar.bz2 |
tar jxvf ARCHIVE.tar.bz2 |
tar jcvf ARCHIVE.tar.bz2 DIRECTORY |
tar.xz |
tar Jxvf ARCHIVE.tar.xz |
tar Jcvf ARCHIVE.tar.xz DIRECTORY |
tar |
tar xvf ARCHIVE.tar |
tar cvf ARCHIVE.tar DIRECTORY |
テキスト / ファイルの操作
コメント行と空業務を除外して、ファイルの内容を表示する
grep -v -e '^\s*#' -e '^\s*$' [FILE]
ファイル中の文字列を置換する
sed -i -e "s/[BEFORE]/[AFTER]/g" [FILE]
ヒアドキュメントでファイルを新規作成する (sudo が不要な場合)
cat << EOF > [FILE]
[BODY]
EOF
ヒアドキュメントでファイルを新規作成する (変数を展開しない)
変数を展開したくない場合、開始キーワードをシングルクォート、またはダブルクォートで囲みます。 下記では開始キーワードである「EOF
」をシングルクォートで囲んでいます。
cat << 'EOF' > [FILE]
[BODY]
EOF
ヒアドキュメントでファイルを新規作成する (sudo が必要な場合)
sudo tee [FILE] <<EOF
[BODY]
EOF
ヒアドキュメントでファイルに追記する
cat << EOF >> [FILE]
[BODY]
EOF
検証環境 初期構築手順
タイムゾーンを Asia/Tokyo
(日本) にする
timedatectl set-timezone Asia/Tokyo
プロンプトを FQDN 表示にする
cat << 'EOF' > /etc/profile.d/prompt.sh
if [ `id -u` = 0 ]; then
PS1="[\[\033[1;31m\]\u@\H\[\033[00m\] \W]\\$ "
else
PS1="[\[\033[1;36m\]\u@\H\[\033[00m\] \W]\\$ "
fi
EOF
docker のインストール
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
docker-compose のインストール
mkdir -p /usr/local/lib/docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
Python3 のインストール
dnf install -y python39
alternatives --set python /usr/bin/python3.9
Python の venv 環境を作成する
mkdir sample
cd sample
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
sshd のタイムアウト時間をチューニングする
sshd は ClientAliveInterval
で指定された秒数間隔と ClientAliveCountMax
で指定された回数で Keepalive を行うそうです。 Amazon Linux2 のデフォルトでは 0 秒 x 3 回になっていた為、これをチューニングしておきます。
cat /etc/ssh/sshd_config | grep ClientAlive
sed -i -e "s/#ClientAliveInterval 0/ClientAliveInterval 60/g" /etc/ssh/sshd_config
sed -i -e "s/#ClientAliveCountMax 3/ClientAliveCountMax 60/g" /etc/ssh/sshd_config
cat /etc/ssh/sshd_config | grep ClientAlive
検証環境 バージョンアップ手順
パッケージアップデート。 新しいカーネルがあれば差し替える為、OS 再起動。
古いカーネルがあれば削除。
dnf -y remove $(dnf repoquery --installonly --latest-limit=-1 -q)
pyenv 自体をアップデートした後、新しい Python の有無を確認。
cd ${PYENV_ROOT}
git pull
pyenv install --list
新しいバージョンがあれば (必要なら) インストール
ライブラリのアップデート。
pip install --upgrade pip setuptools
キャッシュや履歴を削除して電源オフ。 電源オフ後は再度、テンプレート化する。
dnf clean all
history -c
poweroff
apt / dnf / yum 比較表
No. |
説明 |
CentOS7 (yum) |
CentOS8 (dnf) |
Debian (apt) |
Debian (apt-xxx) |
1 |
インストール |
yum install [NAME] |
dnf install [NAME] |
apt install [NAME] |
apt-get install [NAME] |
2 |
アンインストール |
yum remove [NAME] |
dnf remove [NAME] |
apt remove --purge [NAME] |
apt-get purge [NAME] |
3 |
アップデートチェック |
yum check-update |
dnf check-update |
apt update |
apt-get update |
4 |
アップデート |
yum update |
dnf update |
apt upgrade |
apt-get upgrade |
5 |
ディストリビューションの更新 |
- |
- |
apt full-upgrade |
apt-get dist-upgrade |
6 |
検索 |
yum search [NAME] |
dnf search [NAME] |
apt search |
apt-cache search [NAME] |
7 |
インストール済みパッケージの表示 |
yum list installed |
dnf list installed |
apt list installed |
dpkg -l |
8 |
利用可能パッケージの表示 |
yum list available |
dnf list available |
apt list --upgradable |
apt-cache dumpavail |
9 |
パッケージの説明情報表示 |
yum info [NAME] |
dnf info [NAME] |
apt show [NAME] |
apt-cache show [NAME] |
10 |
キャッシュの削除 |
yum clean all |
dnf clean all |
apt clean |
apt-get clean |
11 |
ファイルが含まれるパッケージの表示 |
yum provides [FILE] |
dnf provides [FILE] |
dlocate [FILE] |
apt-file search [FILE] |
12 |
パッケージに含まれるファイルの表示 |
rpm -ql [NAME] |
rpm -ql [NAME] |
dpkg -L [NAME] |
dpkg -L [NAME] |
asdf
コマンド |
説明 |
asdf update |
asdf 自身をアップデートする |
asdf plugin list |
インストール済みのプラグイン一覧を表示する |
asdf plugin list all |
インストール可能なプラグイン一覧を表示する |
asdf list |
インストール済みのプラグイン・バージョンを表示する |
asdf list [PLUGIN] |
インストール済みの NAME プラグイン・バージョンを表示する |
asdf list all [PLUGIN] |
インストール可能な NAME プラグインのバージョン一覧を表示する |
asdf plugin add [PLUGIN] |
NAME プラグインをインストールする |
asdf plugin remove [PLUGIN] |
NAME プラグインをアンインストールする |
asdf plugin update [PLUGIN] |
NAME プラグインをアップデートする |
asdf plugin update --all |
インストール済みのプラグインを全てアップデートする |
asdf install [PACKAGE] |
PACKAGE をインストールする |
asdf install [PACKAGE] [VERSION] |
指定バージョンの PACKAGE をインストールする |
asdf uninstall [PACKAGE] [VERSION] |
指定バージョンの PACKAGE をアンインストールする |
asdf global [PACKAGE] [VERSION] |
システム全体で利用する PACKAGE のバージョンを指定する |
asdf local [PACKAGE] [VERSION] |
特定のディレクトリ配下のみで利用する PACKAGE のバージョンを指定する |
firewall-cmd
No. |
コマンド |
説明 |
1 |
systemctl start firewalld.service |
サービスを開始する |
2 |
systemctl stop firewalld.service |
サービスを停止する |
3 |
firewall-cmd --state |
動作状態 (起動 or 停止) を表示する |
4 |
firewall-cmd --reload |
設定を読み込みなおす |
5 |
firewall-cmd --get-active-zones |
定義されているゾーンの一覧を表示する |
6 |
firewall-cmd --get-default-zone |
デフォルトゾーンを表示する |
7 |
firewall-cmd --set-default-zone=[ZONE] |
デフォルトゾーンを変更する |
8 |
firewall-cmd --new-zone [ZONE] --permanent |
ゾーンを新規作成する |
9 |
firewall-cmd --delete-zone [ZONE] --permanent |
ゾーンを削除する |
10 |
firewall-cmd --list-all |
デフォルトゾーンの設定内容を表示する |
11 |
firewall-cmd --list-all --zone[ZONE] |
指定ゾーンの設定内容を表示する |
12 |
firewall-cmd --list-all-zones |
全ゾーンの設定内容を表示する |
13 |
firewall-cmd --list-all --permanent |
デフォルトゾーンの設定内容を表示する (一時ルールは表示しない) |
14 |
firewall-cmd --list-all --zone[ZONE] --permanent |
指定ゾーンの設定内容を表示する (一時ルールは表示しない) |
15 |
firewall-cmd --list-all-zones --permanent |
全ゾーンの設定内容を表示する (一時ルールは表示しない) |
16 |
firewall-cmd --get-services |
登録可能なサービスを表示する |
17 |
firewall-cmd --zone=[ZONE] --list-services |
指定ゾーンで定義されたサービスを表示する |
18 |
firewall-cmd --zone=[ZONE] --list-services --permanent |
指定ゾーンで定義されたサービスを表示する (恒久的) |
19 |
firewall-cmd --zone=[ZONE] --add-service=[SERVICE] |
指定ゾーンへサービスを追加する |
20 |
firewall-cmd --zone=[ZONE] --add-service=[SERVICE] --permanent |
指定ゾーンへサービスを追加する (恒久的) |
21 |
firewall-cmd --zone=[ZONE] --remove-service=[SERVICE] |
指定ゾーンからサービスを削除する |
22 |
firewall-cmd --zone=[ZONE] --remove-service=[SERVICE] --permanent |
指定ゾーンからサービスを削除する (恒久的) |
23 |
firewall-cmd --zone=[ZONE] --list-ports |
指定ゾーンで定義されているポートを表示する |
24 |
firewall-cmd --zone=[ZONE] --list-ports --permanent |
指定ゾーンで定義されているポートを表示する (恒久的) |
25 |
firewall-cmd --zone=[ZONE] --add-port=[PORT]/udp |
指定ゾーンへ UDP ポートを追加する |
26 |
firewall-cmd --zone=[ZONE] --add-port=[PORT]/udp --permanent |
指定ゾーンへ UDP ポートを追加する (恒久的) |
27 |
firewall-cmd --zone=[ZONE] --add-port=[PORT]/tcp |
指定ゾーンへ TCP ポートを追加する |
28 |
firewall-cmd --zone=[ZONE] --add-port=[PORT]/tcp --permanent |
指定ゾーンへ TCP ポートを追加する (恒久的) |
29 |
firewall-cmd --zone=[ZONE] --remove-port=[PORT]/udp |
指定ゾーンから UDP ポートを削除する |
30 |
firewall-cmd --zone=[ZONE] --remove-port=[PORT]/udp --permanent |
指定ゾーンから UDP ポートを削除する (恒久的) |
31 |
firewall-cmd --zone=[ZONE] --remove-port=[PORT]/tcp |
指定ゾーンから TCP ポートを削除する |
32 |
firewall-cmd --zone=[ZONE] --remove-port=[PORT]/tcp --permanent |
指定ゾーンから TCP ポートを削除する (恒久的) |
33 |
firewall-cmd --zone=[ZONE] --list-sources |
指定ゾーンで定義されている IP アドレスを表示する |
34 |
firewall-cmd --zone=[ZONE] --list-sources --permanent |
指定ゾーンで定義されている IP アドレスを表示する (恒久的) |
35 |
firewall-cmd --zone=[ZONE] --add-source=[NETWORK/MASK] |
指定したゾーンに IP アドレスを追加する |
36 |
firewall-cmd --zone=[ZONE] --add-source=[NETWORK/MASK] --permanent |
指定したゾーンに IP アドレスを追加する (恒久的) |
37 |
firewall-cmd --zone=[ZONE] --change-source=[NETWORK/MASK] |
登録済み IP アドレスの所属ゾーンを変更する |
38 |
firewall-cmd --zone=[ZONE] --change-source=[NETWORK/MASK] --permanent |
登録済み IP アドレスの所属ゾーンを変更する (恒久的) |
39 |
firewall-cmd --zone=[ZONE] --remove-source=[NETWORK/MASK] |
指定したゾーンから IP アドレスを削除する |
40 |
firewall-cmd --zone=[ZONE] --remove-source=[NETWORK/MASK] --permanent |
指定したゾーンから IP アドレスを削除する (恒久的) |
41 |
firewall-cmd --zone=[ZONE] --change-interface=[INTERFACE] |
インターフェイスの所属ゾーンを変更する |
42 |
firewall-cmd --zone=[ZONE] --change-interface=[INTERFACE] --permanent |
インターフェイスの所属ゾーンを変更する (恒久的) |
hostnamectl
No. |
コマンド |
説明 |
1 |
hostnamectl status |
ホスト名を表示する |
2 |
hostnamectl set-hostname [HOSTNAME] |
ホスト名を設定する |
ip
No. |
コマンド |
説明 |
1 |
ip address show |
IP アドレスを表示する |
2 |
ip address add [NETWORK/MASK] dev {DEVICE] |
デバイスに IP アドレスを追加する |
3 |
ip address del [NETWORK/MASK] dev {DEVICE] |
デバイスから IP アドレスを削除する |
4 |
ip neigh show |
ARP テーブルを表示する |
5 |
ip neigh add [IP] lladdr [MAC] dev [DEVICE] |
静的 ARP エントリを追加する |
6 |
ip neigh del [IP] dev [DEVICE] |
静的 ARP エントリを削除する |
7 |
ip -s link show |
インターフェイスの統計情報を表示する |
8 |
ip link set [DEVICE] up |
デバイスをアップさせる |
9 |
ip link set [DEVICE] down |
デバイスをダウンさせる |
10 |
ip link set [DEVICE] promisc on |
デバイスでプロミスキャスモードを有効にする |
11 |
ip link set [DEVICE] promisc off |
デバイスでプロミスキャスモードを無効にする |
12 |
ip link set [DEVICE] mtu [SIZE] |
デバイスの MTU サイズを変更する |
13 |
ip maddress show |
マルチキャストアドレスを表示する |
14 |
ip route show |
ルーティングテーブルを表示する |
15 |
ip route add [NETWORK/MASK] dev [DEVICE] |
静的ルートを追加する |
16 |
ip route add default via [NEXT-HOP] |
デフォルトルートを追加する |
nmcli
No. |
コマンド |
説明 |
1 |
nmcli device status |
デバイスの接続状態を表示する |
2 |
nmcli device connect [DEVICE] |
デバイスを接続する |
3 |
nmcli device disconnect [DEVICE] |
デバイスを切断する |
4 |
nmcli connection modify [DEVICE] ipv4.addresses [NETWORK/MASK] |
デバイスに IPv4 アドレスを設定する |
5 |
nmcli connection modify [DEVICE] ipv4.dns [DNS] |
デバイスに DNS サーバを設定する |
6 |
nmcli connection modify [DEVICE] ipv4.gateway [GATEWAY] |
デバイスにデフォルトゲートウェイを設定する |
7 |
nmcli connection modify [DEVICE] connection.autoconnect yes |
OS 起動時、デバイスが自動的に接続されるように設定する |
8 |
nmcli general hostname [HOSTNAME] |
ホスト名を設定する |
pip
No. |
コマンド |
説明 |
1 |
pip -h |
ヘルプを表示する |
2 |
pip list |
インストールする済みライブラリを表示する |
3 |
pip install [NAME] |
ライブラリをインストールする |
4 |
pip install [NAME]==[VERSION] |
バージョンを指定してライブラリをインストールする |
5 |
pip install git+[URL] |
Git リポジトリから直接、ライブラリをインストールする |
6 |
pip install -U [NAME] |
ライブラリをアップグレードする |
7 |
pip freeze > requirements.txt |
インストールする済みライブラリをファイルにまとめる |
8 |
pip install -r requirements.txt |
ファイルからまとめてライブラリをインストールする |
9 |
pip uninstall [NAME] |
ライブラリをアンインストールする |
10 |
pip search [NAME] |
PyPI で公開されているライブラリを検索する |
11 |
pip -V |
pip 自体のバージョンを表示する |
12 |
pip show [NAME] |
インストール済みライブラリの説明を表示する |
pyenv
No. |
コマンド |
説明 |
1 |
pyenv --help |
ヘルプを表示する |
2 |
pyenv --version |
pyenv 自身のバージョンを表示する |
3 |
pyenv update |
pyenv 自身を更新する |
4 |
pyenv versions |
インストール済みの Python を表示。 現在、利用中の Python も確認可能 |
5 |
pyenv version |
現在のディレクトリで有効な Python を表示する |
6 |
pyenv rehash |
shim を再構築する |
7 |
pyenv install --list |
インストール可能な Python の一覧表示する |
8 |
pyenv install [VERSION] |
指定バージョンの Python をインストールする |
9 |
pyenv uninstall [VERSION] |
指定バージョンの Python をアンインストールする |
10 |
pyenv global [VERSION] |
指定バージョンの Python へ切り替える |
11 |
pyenv local [VERSION] |
特定ディレクトリ内でのみ、指定バージョンの Python へ切り替える |
12 |
pyenv which [VERSION] |
指定バージョンの Python のフルパスを表示する |
No. |
コマンド |
説明 |
1 |
samba-tool user show [USER] |
ユーザの設定を表示する |
2 |
samba-tool user add [USER] |
ユーザを追加する (CN=Users へ追加) |
3 |
samba-tool user add [USER] --userou=[OU] |
OU へユーザを追加する |
4 |
samba-tool user add [USER] --description=[DESCRIPTION] |
説明文を付与し、ユーザを追加する |
5 |
samba-tool user delete [USER] |
ユーザを削除する |
6 |
samba-tool user enable [USER] |
ユーザを有効化する |
7 |
samba-tool user disable [USER] |
ユーザを無効化する |
8 |
samba-tool user move [USER] [CN/OU] |
ユーザを指定したコンテナ/OU へ移動する |
9 |
samba-tool group add [GROUP] |
グループを追加する (CN=Users へ追加) |
10 |
samba-tool group add [GROUP] --groupou=ou=[OU] |
OU へグループを追加する |
11 |
samba-tool group addmembers [GROUP] [USER] |
グループにユーザを追加する |
12 |
samba-tool user setpassword [USER] --newpassword=[PASSWORD] |
ユーザのパスワードを変更する |
13 |
samba-tool user setexpiry [USER] --noexpiry |
ユーザのパスワードを無期限にする |
ss
No. |
コマンド |
説明 |
1 |
ss |
ソケットを表示する |
2 |
ss -4 |
IPv4 ソケットだけを表示する |
3 |
ss -6 |
IPv6 ソケットだけを表示する |
4 |
ss -t |
TCP ソケットだけを表示する |
5 |
ss -u |
UDP ソケットだけを表示する |
6 |
ss -p |
ソケットを使用しているプロセスも表示する |
7 |
ss -s |
ソケットの種類ごとに接続数を表示する |
8 |
ss -n |
名前解決を行わない |
systemctl
No. |
コマンド |
説明 |
1 |
systemctl start [SERVICE] |
サービスを起動する |
2 |
systemctl stop [SERVICE] |
サービスを停止する |
3 |
systemctl restart [SERVICE] |
サービスを再起動する |
4 |
systemctl try-restart [SERVICE] |
サービスが実行中の場合のみ、再起動する |
5 |
systemctl reload [SERVICE] |
設定を再読み込みする |
6 |
systemctl status [SERVICE] |
サービスの状態 (起動中 or 停止中等) を表示する |
7 |
systemctl list-units --type service --all |
すべてのサービスのステータスを表示する |
8 |
systemctl enable [SERVICE] |
サービスを有効にする |
9 |
systemctl disable [SERVICE] |
サービスを無効にする |
10 |
systemctl is-enabled [SERVICE] |
サービスが「有効」または「無効」かを表示する |
11 |
systemctl list-dependencies --after [SERVICE] |
指定されたユニットの前に開始するサービスを表示する |
12 |
systemctl list-dependencies --before [SERVICE] |
指定されたユニットの後に開始するサービスを表示する |
13 |
systemctl daemon-reload |
追加・変更されたユニット設定の内容を読み込む |
timedatectl
No. |
コマンド |
説明 |
1 |
timedatectl |
システムクロック、ハードウェアクロック、NTP サーバの設定を表示する。 |
2 |
systemctl restart systemd-timedated.service |
chrony / ntpd の設定変更を timedatectl へ即座に反映する |
3 |
timedatectl set-time HH:MM:SS |
時刻を設定する (システムクロック&ハードウェアクロックの両方) |
4 |
timedatectl set-time YYYY-MM-DD |
年月日を設定する |
5 |
timedatectl list-timezones |
利用可能なタイムゾーンを表示する (日本なら Asia/Tokyo が一般的) |
6 |
timedatectl set-timezone [TIMEZONE] |
タイムゾーンを変更する |
ufw
No. |
コマンド |
説明 |
1 |
ufw allow [PORT]/udp |
UDP ルールの追加 |
2 |
ufw allow [PORT]/tcp |
TCP ルールの追加 |
3 |
ufw delete [RULE-NUMBER] |
ルールの削除 (行番号指定) |
4 |
ufw default allow |
受信トラフィックのデフォルト許可 |
5 |
ufw default deny |
受信トラフィックのデフォルト拒否 |
6 |
ufw enable |
ファイアウォールの有効化 |
7 |
ufw disable |
ファイアウォールの無効化 |
8 |
ufw status |
ルールの表示 |
9 |
ufw status verbose |
ルールの表示 (詳細) |
10 |
ufw status numbered |
ルールの表示 (行番号付き) |
11 |
ufw status verbose numbered |
ルールの表示 (詳細&行番号付き) |
12 |
ufw reload |
設定ファイルの再読み込み |
13 |
ufw reset |
設定初期化 (ルール全削除&ufw 無効化) |
youtube-dl
No. |
コマンド |
説明 |
1 |
youtube-dl URL |
動画をダウンロードする |
2 |
youtube-dl -x --audio-format mp3 URL |
音声トラックのみ、MP3 形式でダウンロードする |