Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Linux コマンド 忘備録

  • 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

ネットワークデバイスと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

随時追加予定

t-tkd3a
機械学習 について実装できる位の理解を目指します。学ぶ過程の資料・成果を公開していきます。 また Linux での 開発環境・ツール類についても忘備録かねて記載していきます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away