Tech Blog

Information Technology / Machine Learning / Data Analysis / Big Data / System Integration

Linuxシステム管理コマンド 備忘録

Linuxのシステム管理に関する基本的なコマンドを網羅的にまとめておく。

ユーザ管理

ユーザの作成

# ログインシェルを指定してユーザ作成
useradd -s /bin/bash tkdmah

# ホームディレクトリと合わせてユーザ作成
useradd -m tkdmah

# 所属グループを指定してユーザ作成(-g:プライマリグループ、-G:一般グループ)
useradd -g staff -G dev,admin tkdmah

ユーザの削除

# ホームディレクトリも含めてユーザ削除
userdel -r tkdmah

システム管理

基本情報の取得

# システムの種類を取得
uname -a

# 稼働状況(ロードアベレージ)を取得
uptime

# 時刻を取得
date

ランレベル

# 現在のランレベル値を確認
runlevel

# ランレベルを(1に)変更
init 1

システムの起動/停止

# ただちにシステムを再起動
shutdown -r now

# 時刻を指定して(10分後に)システムを再起動
shutdown -r +10

# システムを停止
shutdown -h now

# システム停止・再起動の予約をキャンセル
shutdown -c

プロセス管理

プロセスの確認

# システム上のすべてのプロセス情報を表示
ps ax

# プロセスの実行ユーザ権限を含めてプロセス情報を表示
ps aux

# psコマンドで右端が切れている続きを表示してプロセス情報を表示
ps auxw

プロセス親子関係の確認

# プロセスの親子関係を確認
pstree

# プロセスIDを含めてプロセスの親子関係を確認
pstree -p

プロセス負荷の監視

# 負荷を確認
# Ctrl+c:終了、P:CPU利用順、M:メモリ利用順
top

プロセスの終了

# PIDを指定してプロセスを終了
kill <PID>

# PIDを指定してプロセスを再起動
kill -HUP <PID>

プロセスの優先度付け

# 優先度(6)を指定してプロセスを実行
nice -n 6 <プロセス名>

# 実行中のプロセスの優先度を(10に)変更
renice 10 -p <PID>

メモリ管理

# 仮想メモリの統計を(1秒ごとに3回)確認
vmstat 1 3

# 空きメモリ量と使用メモリ量を確認
free

ジョブ管理

定期的なジョブ実行

# cronに設定を追加
crontab -e

## crontabの設定例
# 0 6,12 * 9 1 command
# 分 時 日 月 曜日 コマンド

# cronの設定を確認
crontab -l

# cronの設定を初期化
crontab -r

一度のみジョブ実行

# ある時間(11/22 0:45)にジョブを実行
at 0:45 Nov 22

# at>プロンプトで予約コマンドを指定
# at> shutdown -h now
# 指定完了後、Ctrl+dで終了

# 予約されているジョブを確認
atq

ネットワーク管理

IPやネットマスクの設定

# ネットワークインタフェースの設定を確認
ifconfig
ip addr

# IPアドレスやネットマスクを変更
ifconfig eth0 172.16.0.1 netmask 255.255.0.0

ポートの確認

# ポートの状況を確認
netstat -a

# ポートを利用しているプロセスを確認
lsof -i

通信状況の確認

# 指定したホストと通信可能か確認(Ctrl+cで終了)
ping 172.20.0.100

# 指定したホストとの通信経路を確認
traceroute 172.20.0.100

# ルーティングテーブルを確認
route
ip route

# ルーティングキャッシュを確認
route -C

# arp情報を確認
arp
ip neigh

ストレージ管理

ファイルシステムの管理

# パーティション構成を確認
fdisk -l

# ディスクの利用状況を確認(-h:単位表示)
df -h

# ファイル容量を確認
du /project/sd/sample_file

# カレントディレクトリ以下のすべてのファイルの容量を確認
du

# I/Oの統計情報を確認
iostat -d

# 詳細なI/Oの統計情報を確認
iostat -d -x

バックアップ

# テープドライブ(/dev/nst0)に(/homeの)バックアップを取得(-z9:zlibによる高圧縮、-b:1回のI/Oでやりとりするブロック数)
dump -0u -z9 -b 20 -f /dev/nst0 /home

# バックアップをリストア
restore -r -f /dev/nst0

参考:Linuxエンジニア養成読本