たまによく使うコマンド及びオプションのまとめ。
環境はUbuntu18.04LTS
diff
コマンド | 説明 |
---|---|
diff fileA fileB | fileAとfileBの差分を表示 |
diff <(ls dir1) <(ls dir2) | 名前付きパイプによりコマンドの出力結果を直接diffコマンドに食わせる |
名前付きパイプを使う場合の注意点として、<の前後のスペースは必ず記載のものでなくてはならない.つまり、<の左にはスペースを入れ、右にはスペースを入れてはならない.
試しにスペースを入れないでコマンドを実行すると次のようになった(dir1とdir2がカレントディレクトリにあるという前提)
diff<(ls dir1)<(ls dir2) bash: diff/dev/fd/63/dev/fd/62: そのようなファイルやディレクトリはありません
dmesg
コマンド | 説明 |
---|---|
dmegs | カーネルが起動して以降リングバッファに出力された内容を表示 |
dmegs -f kern | カーネルから出力された内容を表示 |
dmegs -f daemon | デーモンから出力された内容を表示 |
dmegs -f syslog | システムログから出力された内容を表示 |
起動中でもカーネルモジュールをロードするとメッセージが追加される.
echo
コマンド | 説明 |
---|---|
echo "hello">/dev/pts/2 | 端末にメッセージを表示(おふざけ) |
find
コマンド | 説明 |
---|---|
find / -name "*.txt" | ルートディレクトリ以下のファイルを再帰的に検索 |
find / -name "*.txt" 2>/dev/null | アクセス権限がないとの旨を表示せず検索 |
find -maxdepth 2 -name "*.txt" | カレントディレクトリと直下のディレクトリ内で検索 |
find -type f -name ".txt" | タイプを指定して検索. type:b,c,d,p,f,l,s |
find / -name "*.c" | xargs grep hoge | *.cというファイル内のhogeという文字列を含む行を表示 |
|grepを使うのは文字列を直接入力する場合.
|xargx grepを使うのは検索したいファイルのファイル名を入力する場合.
grep
コマンド | 説明 |
---|---|
grep int main.c | main.c内でintを含む行を表示 |
grep -i int main.c | 大文字小文字を区別せずに表示 |
grep -v int main.c | intという文字列を含まない行を表示 |
top|grep int | topの結果をリダイレクト |
kill
コマンド | 説明 |
---|---|
kill 10000 | PID=10000のプロセスにTERM(15)シグナルを送る |
kill -15 10000 | 上に同じ |
kill -TERM 10000 | 上に同じ |
kill -l | 使用可能なシグナル一覧を表示 |
主なシグナルには次のようなものがある.なお、シグナル番号はシステムによって違うらしいのであくまで自分の環境ではこんな感じだった.
シグナル名 | シグナル番号 | 意味 |
---|---|---|
HUP | 1 | 端末がハングアップした |
INT | 2 | キーボードからの割り込み命令(Ctrl+C) |
KILL | 9 | プロセスの強制終了命令 |
TERM | 15 | プロセスの終了命令 |
CONT | 18 | プロセスの再開命令 |
STOP | 19 | プロセスの停止命令(Ctrl+Z) |
SIGWINCH | 28 | ウインドウサイズが変更された |
killall
コマンド | 説明 |
---|---|
killall a.out | プロセス名を指定してプロセスをkillする. |
killコマンドはPIDを指定するが、killallコマンドはプロセス名を指定する.指定したプロセス名と同じプロセスがすべてkillされるらしい.
ls
コマンド | 説明 |
---|---|
ls -a | .で始まるファイルも表示 |
ls -i | iノード番号も表示 |
ls -l | ファイル名に加えファイル属性など詳細を表示 |
ls -t | ファイル名ではなく修正時刻 (inode の `mtime')でソートして表示 |
ls |grep-v *.c | 拡張子が.cのファイルを除外して表示 |
ls -F | ディレクトリには先頭に/を追加して表示 |
ls -lF|grep -v / | ディレクトリを除外して詳細表示 |
ls -R | ディレクトリ内も再帰的に表示 |
lscpu
コマンド | 説明 |
---|---|
lscpu | cpuの情報を表示 |
cat /proc/cpuinfo | lscpuに同じ |
ll (ls -l)
コマンド | 説明 |
---|---|
ll /proc/10000/fd | PID=10000のプロセスのファイルディスクリプタを表示 |
パイプやソケットの確認もできる
ps
コマンド | 説明 |
---|---|
ps | 実行したユーザーの現端末が制御するプロセスを表示 |
ps u | 実行したユーザーが持つ全端末が制御するプロセスをユーザー名付きで表示 |
ps a | 全一般ユーザーがもつ全端末が制御するプロセスを表示 |
ps x | 実行したユーザーが起動した全プロセスを端末の有無を問わず表示 |
ps aux | 全ユーザーの全プロセスを端末の有無を問わず表示 |
ps f | 階層構造も表示する |
-や--をつけず直接オプションを指定するBSDオプションを使用することもできる.
BSDオプションというのはあまり慣れないが、psコマンドに限って言えばBSDオプションの方が便利な気がする.
www-dataやrootなどが実行しているプロセスを表示するにはps axかps auxをする必要がある.
pstree
コマンド | 説明 |
---|---|
pstree | プロセスの親子関係をツリー状に表示 |
pstree -p | PIC付きでプロセスツリーを表示 |
strace
コマンド | 説明 |
---|---|
strace "echo" | echoコマンドが使用するシステムコールとシグナルを監視 |
strace -p 10000 | PID=10000のプロセスが使用するシステムコールとシグナルを監視 |
strace -p 10000 -f | 子プロセスも監視 |
他にも呼び出し回数や占有時間ごとにソートするオプションなどが豊富に存在する.
tty
コマンド | 説明 |
---|---|
tty | 現在の端末のttyを表示 |
デスクトップ環境を持つシステムの場合、/dev/ttynはデスクトップ環境自体を表していて、/dev/pts/nは仮想端末(ターミナル)を表している.例えば、Linuxで仮想端末を複数開くと/dev/pts/nファイルがオープンするが、/dev/ttynはオープンしない.
nの最大値は(すべてのユーザーが開いている仮想端末の合計)-1になる.他のユーザーでログインすると/dev/ttynファイルがオープンする.