Linuxコマンド集

よく使用するコマンド集

ファイル操作系コマンド

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

pwd

アクセス権限付与

chmod 644 filePath
chown -R sampleuser:samplegroup filePath

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

ファイル一覧を表示

ll [-a]

llはls -lの略。

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

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

ファイル編集

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コマンド備忘録』を参照。

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

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をコピーしました