- CentOS 6.x , RHEL 6.x と CentOS 7.x が 入り混じってます。
- あの処理がしたいのだけど、なんてコマンド名だったっけ? ってことありませんか? 私はあります...別の環境から久しぶりに戻った時など特に...。
- コマンド名を思い出せば、使い方は調べられるので、行いたい事 と コマンド名の箇条書きを忘備録としてここに記します。 参考になれば幸いです。
CPU 情報が見たい
cat /proc/cpuinfo
OS のバージョンが知りたい
uname -a
OS起動時のログが見たい
dmesg
cat /var/log/dmesg
cat /var/log/messages
ストレージデバイスの一覧が見たい
fdisk -l
parted -l
マウント状況が見たい
mount
cat /proc/mounts
dvd等のメディアをマウントしたい
# マウントポイント作成(必要に応じて)
mkdir /media/dvd
# マウント (デバイス名は典型例)
mount /dev/sr0 /media/dvd
# マウント解除
umount /dev/sr0
ストレージデバイスの情報を調べたい
smartctl -a /dev/sda
ブロックデバイスの メジャー、マイナー番号が知りたい
lsblk
ストレージデバイスの使用量が知りたい
df
ストレージデバイス内のディレクトリ単位での使用量が知りたい
du
ストレージデバイスのアクセス状況が知りたい
vmstat -p /dev/sda1
プロセス一覧を表示したい
ps -eLf
ゾンビプロセスが存在するか確認したい
ps -ef | grep defunct
CPU使用率が知りたい
vmstat
top
メモリの使用状況が知りたい
free
cat /proc/meminfo
ソケットの使用状況が知りたい
netstat -a
netstat -nlp
# ss で待ち受けポート一覧
sudo ss -nltup
ネットワークデバイスとIPアドレスの状況が知りたい
# CentOS 6
ifconfig
# CentOS 7
nmcli
CentOS7 CUI での network 設定用便利ツール
nmtui
ネットワークデバイスにIPアドレスを設定するファイルはどこにあったっけ?
/etc/sysconfig/network-scripts/
ネットワークデバイスが複数ある場合 eth番号との対応付けは どのファイルで行ってるんだっけ?
/etc/udev/rules.d/70-persistent-net.rules
ネットワークのパケットキャプチャ
tcpdump
各プロセスのメモリ使用状況の一覧表示
ps alx
各プロセスのディスクリプタ使用状況が知りたい
ls -l /proc/[pid]/fd
lsof -p [pid]
セマフォ・共有メモリの一覧表示
ipcs
セマフォ・共有メモリの開放
ipcrm
ユーザ毎のプロセス数
# 確認
ulimit -u
# 一時変更
ulimit -u unlimited
# 設定値の格納
/etc/security/limits.d/20-nproc.conf
↑ ?? 手元の環境だと この値を変更しても 15700 とかな値になる…
プロセス番号の上限値
# 確認
cat /proc/sys/kernel/pid_max
# 一時変更
sysctl -w kernel.pid_max=1000000
# 設定値の格納先
/etc/sysctl.conf
あのコマンドどこにあるんだっけ?
which <コマンド名>
ファイルの種類が知りたい
file <対象ファイル名>
# 実行ファイルなら 64bit/32bit , 圧縮ファイルなら何形式か 等の情報を出力してくれる。
実行ファイルが必要とするライブラリの一覧表示
ldd <対象ファイル名>
ライブラリへのパスを恒久的に全ユーザに反映したい
# /etc/ld.so.conf.d/ のディレクトリ内に 拡張子「.conf」のファイルを作成し、通したいパス名を記述する
echo "/opt/hoge/lib" > /etc/ld.so.conf.d/hoge.conf
# 反映
ldconfig
どのライブラリに目的の関数の実体があるか知りたい
nm -o (ディレクトリ)/*.a | grep (関数名) | grep 'U'
時刻を変更したい
# 月/日 時:分 年
date -s "12/14 23:50 JST 2017"
キーワードを含んでいるファイルの一覧を得たい
find -name "*" -print | xargs grep "hoge"
カレントディレクトリ以下のディレクトリ・ファイルの一覧が得たい
# tree コマンドで
tree
# ls コマンドで
ls -lRa
ファイルへの追記を表示させたい
tail -f (ファイル名)
ファイルの変化を表示させたい
watch -n 1 -d cat (ファイル名)
テキストファイルの文字コードを変換したい
# UTF-8 への変換
nkf -w -overwrite (対象ファイル名)
標準出力 と 標準エラー出力 を まとめてファイル出力したい
(コマンド名) > (出力ファイル名) 2>&1
標準エラー出力 を 表示させたくない
# コマンド名 2>/dev/null
# 例↓
find -name "*" -print | xargs grep "hogehoge" 2>/dev/null
標準出力 と 標準エラー出力 を 表示させたくない
(コマンド名)> /dev/null 2>&1
ファイル内の文字列を置換したい
sed -i -e "s/(置換前 文字列)/(置換後 文字列)/g" ファイル名
リンク切れを一覧表示したい
find -xtype l
yum の 履歴
# インストール履歴一覧 (ID番号取得)
yum history
# ID 番号別の詳細
yum history info (ID番号)
rpm の 履歴
# 新しい順に表示 (画面に収まる範囲で表示)
rpm -qa --last | head
rpm コマンドで相互に依存するパッケージを一括で入れるのってどうやるんだっけ?
# 一括でインストールしたい パッケージ名を羅列するだけ……。
rpm -ivh sample01.rpm sample02.rpm sample03.rpm ・・・
グラフィカルログイン と テキストログイン を切り替えたい
# /etc/inittab 内の 「id:」が示す値を変える
# 3: テキストログイン
# 5: グラフィカルログイン
デバイスの 圧縮イメージを作成したい
# 例 /dev/sdc の内容を /media/sdcard/hoge.zip に書き出す
dd if=/dev/sdc bs=65536 | gzip -c > /media/sdcard/hoge.zip
圧縮イメージを デバイスに書き戻したい
# 例 /media/sdcard/hoge.zip を /dev/sdc に書き戻す
gzip -dc < /media/sdcard/hoge.zip | dd of=/dev/sdc bs=65536
dd の進捗状況が知りたい
pkill -USR1 dd
分や時や日や週や月の単位で、決めた時間に処理を行わせるのはなんだったけ?
#cron
/etc/crontab
タイムゾーンのファイル類ってどこにあったっけ?
/usr/share/zoneinfo/
ローカルタイムのタイムゾーンを変更したい
# UTC に変更したい
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/UTC /etc/localtime
# やっぱ JSTに戻したい
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
プロセスの優先度を変えてみたい
# 現在の優先度の確認
chrt -p [pid]
# 最優先にしてみる
chrt -r 99 [pid]
指定のディレクトリ以下を 圧縮したい
gtar -cvzf backup.tgz /hogehoge
圧縮ファイルを展開したい
gtar -xvzf backup.tgz
ネットワーク経由で ファイルをコピーしたい
# scp (コピー元) (コピー先)
# -p はタイムスタンプを保持する
# 例)ローカルの backup.tgz を 192.168.1.10 の backupDir に ユーザ名 hoge でコピー
scp -p backup.tgz hoge@192.168.1.10:/BackupDir/
ネットワーク経由で 他のPCにディレクトリ下位のファイル群を コピー したい
# rsync (コピー元) (コピー先)
# ↓の例では タイムスタンプが新しいものへの上書きは行わない
rsync -auvz ./works hoge@192.168.1.10:/works
ファイル一覧をタイムスタンプでソートして表示したい
# 新しい順
ls -lt
# 古い順
ls -ltr
指定の時刻より新しいファイルの一覧を取得したい
# 下記2手順で実現する。
## 1.検索したい日付をダミーファイルにセット
touch -t 201701220900.00 /dev/shm/_file
## 2.上記のファイルより新しいものを表示させる
find ./ -type f -newer /dev/shm/_file -print
ログファイルを一定期間毎やサイズで世代交代させたいときはどうやるんだっけ?
# logrotate
# 記述例↓
# /etc/logrotate.conf
# /etc/logrotate.d/
# 動作確認 (自前の hoge のみ動かす 例)
logrotate /etc/logrotate.d/hoge
# 動作確認 強制的にログローテートを実施させる (自前の hoge のみ動かす 例)
logrotate -f /etc/logrotate.d/hoge
snmpwalk :機器の状態情報取得
# snmpwalk -v 2c -c (コミュニティ名) (アドレス) (ベースOID)
# 例) 自機の OID 全て
snmpwalk -v 2c -c public localhost .
# 例) 特定装置(192.168.0.10) の 指定(.1.3.6.1.4.1)以下取得
snmpwalk -v 2c -c public 192.168.0.10 .1.3.6.1.4.0
ファイルのダンプ表示
# アドレス16進数 1バイト単位
od -tx1z -Ax hoge.txt
# アドレスなし 1バイト単位 省略なし
od -tx1z -An -v hogehoge.o
ファイルの差分表示
diff file1.txt file2.txt
nc コマンド
tcp udp unixドメインソケット の万能コマンド
参考: ncコマンドの使い方
# TCP ファイル転送 受信側
nc -kl (待ち受けポート番号) > (保存ファイル名)
# TCP 送信側
nc (相手側IPアドレス) (相手側ポート番号) < (送信ファイル名)
# unix ドメインソケットへのファイル流し込み
nc -U (ドメインソケットファイル名) < (流し込みファイル名)
コンソール画面のサイズ(文字数)を取得
# 横幅
tput cols
# 縦幅
tput lines
環境変数
# 設定
export AUDIODEVISE=alsa
# 削除
unset AUDIODEVICE
JSON のパーサ表示
- /dev/shm/hoge.json をパーサする例。↓ 第一引数に "." を忘れないこと。
jq . /dev/shm/hoge.json
簡易HTTPサーバ : nc コマンド
# 1回受けると終了
( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | nc -l 4000
# CTRL-C 受けるまでループ
while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | nc -l 4000; [ $? != 0 ] && break; done
シェルスクリプト内で 秒未満のwait を入れたい
# マイクロ秒の待ち 例)↓ 1ms の待ち
usleep 1000
vim で tab を置換
:%s/(Ctrl + v, tab)と押す/(置換するもの)/g
カレントディレクトリから下位の wav ファイルの総バイト数 と ファイル数を出力
find -name "*.wav" -type f -printf '%s\n' | awk 'BEGIN{sum=0;cnt=0}{sum+=$1;cnt++;}END{print sum,cnt}'
下位ディレクトリ内の .txt の文字コードを UTF-8 , 改行コード LF に変換
find -name "*.txt" | xargs -n 10 nkf -w -Lu --overwrite
文字コード確認
nkf --guess *
カレントディレクトリ下位のtxt ファイルで 全角空白と全角括弧を検索
find -name "*.txt" -print | xargs grep --color=auto -n [ ()]
漢字範囲を対象とした grep
find -name *.txt -print | xargs grep --color "[亜-熙]さん"
複数ファイルの拡張子をまとめて変更したい
rename .text .txt *.text