よく使用するコマンド集
ファイル操作系コマンド
カレントディレクトリのパスを表示
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がかかっている。以下、対応方法
- 実行中のpidをキルする : kill [pid]
- 排他制御しているファイルを削除: rm -f /run/yum.pid
- 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”という文字列を検索。半角スペースを含む行は除外
コメント