Linuxコマンド集

よく使用するコマンド集

  1. ファイル操作系コマンド
    1. カレントディレクトリのパスを表示
    2. アクセス権限付与
    3. ファイル一覧を表示
    4. ソートして表示
    5. ファイル編集
    6. ファイル閲覧
    7. ファイル検索
    8. ディレクトリ作成
    9. ファイル・ディレクトリ削除
    10. ファイルコピー
    11. ファイル移動・リネーム
    12. おまけ:文字列検索
  2. 汎用系コマンド
    1. 画面クリア
    2. rootユーザーに昇格
    3. 操作の履歴を確認する
    4. 空き要領確認
  3. ログ系コマンド
    1. リアルタイムでログを表示する
  4. ユーザー・パスワード系コマンド
    1. ユーザー一覧を確認する
    2. ユーザーのロック状態を確認する
    3. ロックを解除する
    4. パスワードリセット
    5. パスワードの期限を確認する
  5. パッケージ・リポジトリ関連コマンド
    1. パッケージのアップデート
      1. アップデート時エラー
    2. パッケージの有無を確認
    3. コマンドがあるか確認
    4. リポジトリ情報を確認
    5. DNS情報を確認
  6. サーバー系コマンド
    1. サービスの一覧を確認
    2. OSの確認
    3. DNSキャッシュクリア
    4. サーバー全体のストレージ容量を調べる
      1. 使用容量の大きいディレクトリを探す
  7. ネットワーク系コマンド
    1. ネットワーク状態の確認
    2. 実行中プロセスの確認
    3. IP関連情報
    4. ネットワークの疎通確認
    5. ネームサーバー(DNS)の確認
    6. リポジトリの疎通確認
      1. リポジトリとパッケージの違い
    7. OSのファイアウォール設定を確認
  8. よく使用するオプション
  9. Appendix
    1. パイプ構文

ファイル操作系コマンド

カレントディレクトリのパスを表示

pwd

アクセス権限付与

chmod 644 filePath
chown -R sampleuser:samplegroup filePath

詳細は『【Linux】ファイルのパーミッションと所有者の変更方法』を参照。

ファイル一覧を表示

ll [-a]

llはls -lの略。

-a:隠しファイルも表示

-l:詳細表示。ショートカットがあれば参照先も表示してくれる

ソートして表示

更新日順(作成日が無い場合もあるので)

ll -lt | head -n 10  //新しい10件を表示

作成日順

ll --time=birth -t | head -n 10

ファイル編集

vi filePath

詳細は『viコマンド備忘録』を参照。

ファイル閲覧

less filePath  //上下移動して閲覧できる。プロンプトに履歴が残らない。
cat filePath  //プロンプトに履歴が残る。

以下のように、grepでつなぐと、file内の特定の文字列を検索できる

cat access.log -n | grep Apple

access.log というファイルからAppleという文字列を 検索(検索ワードにスペースが含まれる場合はダブルクォーテーションで囲う)。

n:行番号を表示

検索語を見つけた位置から表示する
※-pオプションはfilePathより前で指定しないと機能しないので注意すること

less -p [word] [filePath]

ファイル検索

gerp [word]

詳細は『grepコマンド備忘録』を参照。

ディレクトリ作成

mkdir [ディレクトリパス]/ディレクトリ名

-pオプションを使用すると、記載したパスに不足する一連のディレクトリをまとめて作成してくれる。

ファイル・ディレクトリ削除

rm -rf filePath

-r:再帰的に削除 ※配下のファイルも削除。ディレクトリ削除の際には必須

ファイルコピー

cp -r (コピー元) (コピー先)

コピー先のパスにディレクトリが存在しない場合はエラーとなる。

ディレクトリが無い場合は新規作成させるオプションなどあればよいのだが、無いためディレクトリは作成するしかない。

ファイル移動・リネーム

mv -r (移動ファイルパス) (移動先パス)

リネームの場合は、パスのファイル名部分のみを変更して指定する

おまけ:文字列検索

lessやviなど、モードに入る系のコマンドは、そこからさらに『?』を打ち込むことで、文字列検索ができる。

『?』の後に入力した文字列はハイライトされる。

汎用系コマンド

画面クリア

Ctrl+l

rootユーザーに昇格

sudo su-
  • sudo:スーパーユーザ(root)として実行
  • su:ユーザ切り替え。 引数としてユーザ名を指定しない場合はroot (管理者)ユー ザになる
  • – : 切り替え後のユーザのホームディレクトリに移動

操作の履歴を確認する

history

時刻も表示する場合は先に以下を実行してからhistoryを実行する。

HISTTIMEFORMAT='%F %T'

空き要領確認

df -h dirPath

-h : 単位をつける

ログ系コマンド

リアルタイムでログを表示する

tail -200f sample.log
  • -200:最新の200行を表示
  • -f:リアルタイムで表示

ユーザー・パスワード系コマンド

ユーザー一覧を確認する

cat /etc/passwd

ユーザーのロック状態を確認する

passwd -S [ユーザ名]

ロックを解除する

faillock --user [ユーザ名] --reset

パスワードリセット

passwd [ユーザ名]

パスワードの期限を確認する

chage--list [ユーザ名]

パッケージ・リポジトリ関連コマンド

パッケージのアップデート

yum list installed | grep packageName  //パッケージがインストールされているか、バージョンがいくつか確認
yum list updates | grep packageName  //パッケージに適用できるアップデートがあるか確認
yum update packageName  //パッケージをアップデート

アップデート時エラー

Existing lock/var/run/yum.pid: another copy is running as pid 20502.
Another app is currently holding the yum lock; waiting for it to exit....

kernel アップデート中にネットが落ちた。 再接続するとyum lockがかかっている。以下、対応方法

  1. 実行中のpidをキルする : kill [pid]
  2. 排他制御しているファイルを削除: rm -f /run/yum.pid
  3. yum キャッシュクリア:yum cleán all

パッケージの有無を確認

rpm -qa | grep packageName

または

rpm -V packageName

パッケージが無ければ “package is not installed” 。 何も出 なければOK

コマンドがあるか確認

which commandName

リポジトリ情報を確認

yum repolist-C
yum repolist -v

DNS情報を確認

cat /etc/resolv.conf
nmcli

サーバー系コマンド

サーバー系コマンドは主に systemctl コマンドで実行する。

サービスの一覧を確認

systemctl list-units --type=service | grep oracle

上記はoracle サービス有無の確認例。tomcatなどでも同じように確認ができる。

サービスがあれば、systemctlを使用しなくても、 service tomcat stop でtomcatの停止、といった具合に、serviceコマンドを使用して楽に操作が行える。

OSの確認

cat /etc/os-release

DNSキャッシュクリア

sudo systemctl restart rhnsd

サーバー全体のストレージ容量を調べる

df -h

Mounted on カラムが『/』となっているレコードのSizeがサーバーストレージ。そのうちどのくらい使用されているかも表示される。

使用容量の大きいディレクトリを探す

du ./ -hd 1 | sort -hr
  • -d 1:1階層しか再帰検索しない
  • -h:KBなど読みやすい単位に変換
  • sort -h:使用容量順にソートする。rで逆順

ネットワーク系コマンド

ネットワーク状態の確認

nmcli

Network Manager コマンドラインインターフェイスの略。これで大まかな情報はだいたい手に入る。

ただし、このコマンドでネットワーク設定の変更もできてしまうので(続けて特定の予約語を入力しないとそうはならないが)、扱いには注意すること。

接続状態・イーサネット/Wifi・MACアドレス、IPアドレス・DNS設定情報などを見ることができる。

実行中プロセスの確認

  • top:サーバが実行中プロセスをCPU使用率が高い順に表示する。
  • free -m:簡潔に見たい場合
  • ps -axf:プロセスツリーを確認

a:端末操作のプロセスを表示
x:端末操作以外のプロセスを表示
f:プロセスを階層表示
e:デーモン(常駐)プロセスも表示

IP関連情報

ip a

旧ifconfig、ip addressと同義。接続中のIPアドレス情報を取得する。

netstat -tuln

サーバーがLISTENしているIPとポートのステータスを確認。ここに想定した通信経路が表示されていなければ、サービスが起動していない。

nmcli

NetworkManager に含まれるツールの一つ。 イーサネット、 LOOPBACK、DNS情報を確認できる。

ネットワークの疎通確認

IPまたはドメインに対して、通信状態を確認する。

ドメインを指定する場合、https//は不要。 URLにはサブディレクトリやパラメータ情報など付与されている場合が多いが、基本的にはドメインのみ指定すれば良い。例:yahoo.co.jp のみ

  • ping [IPまたはドメイン]:パケットを送信して、返ってくるかを確認。よくping8.8.8.8 でインターネットに出ていけるかを確認する。8.8.8.8はGoogleのDNS。
  • nslookup [ドメイン]:DNSサーバーへの問い合わせで名前解決を確認
  • host [ドメイン]:IPとドメインの関連を調べる
  • dig [IPまたはドメイン]:さらに詳しい情報を調べる。[IPまたはドメイン]を半角スペースを空けて複数指定することで、複数の経路についての疎通確認も一度に行える。

ネームサーバー(DNS)の確認

cat /etc/resolv.conf

EC2では、172.20.0.2と表示されることが多いかと思う。このIPに見覚えが無く混乱する人がいる(僕)が、AWSが予約しているDNS用のサーバーIPアドレス。

リポジトリの疎通確認

まずはリポジトリの一覧を確認。

repolist -v  // シンプルにリポジトリ名の一覧だけ知りたい場合は -C とする

表示されたリポジトリの一覧から、調べたいリポジトリ、たとえば今回はrhel-8-baseos-rhui-rpmsの疎通確認を実施する。

リポジトリの、baseurlの、ドメイン部分のみを切り出して、digコマンドにかける。

dig rhui.ap-northeast-1.aws.ce.redhat.com

つながっていなければ、コマンド自体が成功しない。成功すると、ステータス等の通信結果が表示される。

経由しているサーバーを指定したい場合は、@でIPを指定する。以下は、ネームサーバー(172.20.0.2)を経由して通信できているかを確認する例。

dig @172.20.0.2 rhui.ap-northeast-1.aws.ce.redhat.com

リポジトリとパッケージの違い

リポジトリは、複数のパッケージをまとめたもの。

パッケージは、ソフトウェアや関連ファイルをまとめたもので、リポジトリに格納される。

以下のコマンドで、サーバーにインストールされているパッケージの一覧が確認できるが、一番右のカラムがパッケージが格納されているリポジトリの名称。

yum list

たとえばpythonなども、RHELのリポジトリの一部として格納されていることがわかる。

OSのファイアウォール設定を確認

オンプレミスや、ホスト単位で通信許可設定をカスタマイズしたい場合などは、OSのファイアウォールを設定する。

設定は以下のコマンドで確認できる。カラム名のみで何もレコードが無ければ設定されていない。

iptables -L

AWSで設定するケースが多いので、あまり見ないかも。

よく使用するオプション

  • -r:再帰的に実行 ※ディレクトリに対してコマンド実行する際、配下のディレクトリも対象とする
  • -f:『削除しますか?』の確認メッセージを表示しない

Appendix

パイプ構文

処理を記載したあとに『|』で連結することで、処理に対してさらに処理を追加することができる。

使用例

ll | grep tomcat

llで表示されたフォルダ、ファイルからtomcatという文字列を含む行を検索

cat access.log | grep "Apple" | grep -v " "

access.logというファイルから “Apple”という文字列を検索。半角スペースを含む行は除外

コメント

タイトルとURLをコピーしました