LinuxのTip集

公開:2020/11/03
更新:2020/11/17
3 min読了の目安(約3000字TECH技術記事

この記事について

この記事はLinuxについての小ネタ・小技的なものを書き連ねる。
著者はUbuntuを使っているのでUbuntuよりであると思うが基本的にはどのディストリビューションでも使えるようなものをまとめるつもりである。
なお新たなTipが見つかったりしたら更新する予定です。

rc系ファイル

rcRun Commandの略でありそれぞれの起動時に実行されるコマンドである。

OS起動時コマンド群

/etc/rc$n.d/以下のディレクトリにあるファイル群で$nはランレベルを表している。
それぞれのランレベルに応じた起動プロセス=初期化などが記述されている。

ラン(起動)レベルとは

  • 0: 停止、全ての機能が停止した状態
  • 1: シングルユーザーモード、管理者(root)のみアクセスできるモードでネットワークもオフ、ログイン時にパスワードがいらない、基本的に緊急用
  • 2: CLIのマルチユーザーモードのネットワークオフ、何らかの理由でネットワークに繋ぎたくない用
  • 3: CLIのマルチユーザーモード、CLI=黒い文字列の操作画面のみでサーバー用途用
  • 4: 未定義、いろいろカスタマイズできるのでカスタマイズ用としても使える(?)
  • 5: GUIのマルチユーザーモード、いわゆる普通のPCが立ち上がったモード
  • 6: 再起動、全てのデーモンプロセスに停止シグナルを送って停止させているモード

.XXXrc

先頭の.は隠しファイルを意味して通常は表示されない。(ls -aを付けると表示される)
XXXはプロセスの名前でプロセスを起動させたときに実行される初期化処理などが書かれている。

.bashrc

いわゆるbashが起動するときの起動スクリプト、現在のLinux(少なくともUbuntu)ではシステム設定が書かれているので基本的にユーザーは書き換えずにユーザー用の.bash_profileにユーザー用設定を書くべきである。
この.bash_profile.bashrcの中の以下の部分で読み込まれている。

.bashrc
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

リソース確認系コマンド

プロセス系

ps

今実行しているプロセスを表示する。よくps axのような形で実行される。ps uxなどの形で一覧表示することが多い。(と思う)

$ ps ux
USER        PID  %CPU %MEM    VSZ    RSS   TTY      STAT START   TIME COMMAND
$name       $num 0.0  0.0     127568 3916  pts/52   Ss   21:03   0:00 -bash

このような形で一覧が表示されるaオプションを付けると全てのプロセスになる

top

現在実行しているプロセスをリアルタイムで表示する。

オプション

-b バッチモードオプションを使うことで普通のコマンドっぽく解析していろいろが出来る
次のようなオプションで表示をフィルターすることも可能である。

  • -n $num 回数
  • -d $sec 間隔
  • -u/U $user
  • -p $pid プロセスIDを指定

メモリ系

free

メモリの空きと使用している容量をみる。Linux系では空き容量の確認はf(ree)と名付けられているようである。

ストレージ系

df(Disk free)

ファイルシステムの空き容量を見る。各パーティションのマウントポイント等しかでない。各ディレクトリの情報などは下のduを使う。

du(Disk used)

そのファイル(ディレクトリ)が使っている容量を見る。

よく使う、オプションなど

  • -h: --human-readableの略で人に分かりやすい表示形式
  • -maxdepth(mindepth): 再帰するディレクトリの最大(最小の)深さ。

コマンドイディオム

コマンドの結果を検索

ps -aux | grep "$str"

コマンドで検索=grepなので単にパイプでつなぐだけ

  • grepコマンドのmanではgrep [OPTION...] PATTERNS [FILE...]となっているのでこっちのほうが特殊用途と思われる。

自動バックアップファイルの削除

$ find ${dirname} \( -name "*~" -o -name "#*#" -o -name "*.swp" \) -delete

*~: Linuxの自動バックアップファイル、#*#: emacsの編集中のファイル、*.swp: vi系の編集中のファイルを削除する。
条件は()でまとめるがコマンドでは\でエスケープする-oはor(アンドは-a

k(キロ),G(ギガ),T(テラ)表示でのソート

$ du -lh -d ${max_depth} | sort -h

-d ${max_depth}--max-depth=nの略、掘りたいディレクトリの深さ(--min-depthと合わせることで特定の深さだけ表示させることも可能)。
-hはk/G/Tでの表示でsortコマンドでも使えるのでこれでソート表示可能

  • ただし、検索が終わるまで表示をためるので容量が大きい場合は表示まで時間がかかる(パイプで繋がなければ終わったものから順次表示される)

ログ用ファイルの書き出しとdateとtee

du_log.sh
$ du -lh -d ${max_depth} | sort -h | tee "du_$(date "+%Y%m%d).log"

上は前の書き出しをdateコマンドで日付をつけたものをteeコマンドで標準出力とファイルに書き出している。
teeTで書き出し先を2方向に分岐することから来ている。(因みにT字路は本来丁字路で別である。)

dateのオプション

dateコマンドは日付を書き出すコマンドである。何もオプションをつけないと環境に従った形式で出力される。例えば日本語(日本時)環境だと2020年 11月 10日 火曜日 12:50:14 JSTとなる。
"+{...format}"を使うことで形式を変更することが可能である。"%Y"は4桁の西暦、%yは西暦の0埋め有の下2桁、%-yで0埋め無、%_yでスペース埋め(これらの埋めは他のオプションでも使える)。
細かいオプションなどはこの記事で確認できる。

あとがき

終わってないのでnull