Linux

【インフラエンジニア必見】覚えておかないとまずいLinuxコマンド10選

さっとんです。

昨日、このような記事を投稿しました。

 

 

こちらの記事で「Linuxのコマンド操作には絶対に慣れておくべき」ということについて話しました。

 

今回の記事では、覚えておくべきLinuxコマンドについて解説していきたいと思います。

 

覚えておくべきLinuxコマンド

 

Twitterにて投稿しておりますが、こちらのコマンドとなります。

https://twitter.com/satton6987/status/1245685286383714304

 

・uname -n
・ip addr
・mkdir
・grep
・cd
・pwd
・cat
・ls
・vi
・tail

こちらのコマンドについて本記事にて解説していきたいと思います。

 

動画も投稿しております。

 

コマンドについて

 

uname -n

[root@k8s-master ~]# uname -n
k8s-master
[root@k8s-master ~]#

ホスト名を表示させるコマンドになります。
Linuxサーバーにログインする際に作業対象に誤りがないか確認するために必要になるコマンドです。

別で「hostname」というコマンドがあり、こちらでもホスト名を確認することができます。

[root@k8s-master ~]# hostname
k8s-master
[root@k8s-master ~]#

しかし、こちらのコマンドにはリスクがあります。
おすすめしません。
なぜおすすめできないのかについてはこちらを参照下さい。

https://satton-infra.com//%e3%83%8a%e3%83%ac%e3%83%83%e3%82%b8/542

 

ip addr

[root@k8s-master ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:84:17:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.34/24 brd 192.168.0.255 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 2404:7a80:91a1:4d00:20c:29ff:fe84:1728/64 scope global mngtmpaddr dynamic
       valid_lft 2591911sec preferred_lft 604711sec
    inet6 fe80::20c:29ff:fe84:1728/64 scope link
       valid_lft forever preferred_lft forever
3: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
    link/none
    inet 172.17.1.0/16 scope global flannel0
       valid_lft forever preferred_lft forever
[root@k8s-master ~]#

見ての通りLinuxサーバーのIPアドレスを確認するコマンドになります。
「uname -n」と同様に作業対象に間違いがないか確認するために使用します。

IPアドレス設定等の作業をする際にも確認のためにこちらのコマンドを使用します。

「ip a」と略すことも可能です。

[root@k8s-master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:84:17:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.34/24 brd 192.168.0.255 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 2404:7a80:91a1:4d00:20c:29ff:fe84:1728/64 scope global mngtmpaddr dynamic
       valid_lft 2591864sec preferred_lft 604664sec
    inet6 fe80::20c:29ff:fe84:1728/64 scope link
       valid_lft forever preferred_lft forever
3: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
    link/none
    inet 172.17.1.0/16 scope global flannel0
       valid_lft forever preferred_lft forever
[root@k8s-master ~]#


基本的に「uname -n」と組み合わせて使用することが多いです。

[root@k8s-master test]# uname -n;ip a
k8s-master
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:84:17:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.34/24 brd 192.168.0.255 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 2404:7a80:91a1:4d00:20c:29ff:fe84:1728/64 scope global mngtmpaddr dynamic
       valid_lft 2591765sec preferred_lft 604565sec
    inet6 fe80::20c:29ff:fe84:1728/64 scope link
       valid_lft forever preferred_lft forever
3: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
    link/none
    inet 172.17.1.0/16 scope global flannel0
       valid_lft forever preferred_lft forever
[root@k8s-master test]#

「;」でつなげることによって、このように2つのコマンドを実行できます。

mkdir

[root@k8s-master test]# ls -l
合計 0
[root@k8s-master test]# mkdir test
[root@k8s-master test]# ls -l
合計 0
drwxr-xr-x 2 root root 6  4月  2 22:05 test
[root@k8s-master test]#

ディレクトリを作成するコマンドになります。

「ディレクトリ」とはWindowsで例えると「フォルダ」になります。

Linux内の「フォルダ」を作成するコマンドと覚えてもらえればと思います。

grep

[root@k8s-master test]# cat aaa.txt
a
a
a
a
a
a
a
bbb
bbbbb
cfc
[root@k8s-master test]# grep bbb aaa.txt
bbb
bbbbb
[root@k8s-master test]#
[root@k8s-master test]#

ファイルの中の文字列を検索するコマンドになります。

ログのエラー行を調べる場合等によく使用されます。

こちらの場合も入力コマンドが違いますが、同じ結果になります。

[root@k8s-master test]# cat aaa.txt | grep bbb
bbb
bbbbb
[root@k8s-master test]#

「|」(パイプ)は内容の受け渡しの役目を担っております。

僕は後者のパターン「cat ファイル | grep 文字列」を使用することが多いです。

どちらが使いやすいかは人それぞれだと思います。

 

cd

[root@k8s-master /]# pwd
/
[root@k8s-master /]# cd /var
[root@k8s-master var]# pwd
/var
[root@k8s-master var]#

ディレクトリ移動をするコマンドになります。

ホームディレクトリに戻る場合は、このように入力します。
※ホームディレクトリは、Windowsで言うデスクトップになります。

[root@k8s-master var]# cd ~
[root@k8s-master ~]# pwd
/root
[root@k8s-master ~]#
[root@k8s-master ~]#

 

pwd

[root@k8s-master ~]# pwd
/root
[root@k8s-master ~]#
[root@k8s-master ~]#
[root@k8s-master ~]# cd /var
[root@k8s-master var]# pwd
/var
[root@k8s-master var]#

今現在見ているディレクトリの現在地を表示するコマンドになります。

Windowsで例えると「ファイルパス」の部分となります。

cat

[root@k8s-master test]# cat aaa.txt
a
a
a
a
a
a
a
bbb
bbbbb
cfc
[root@k8s-master test]#

ファイルの内容を確認するコマンドになります。

Windowsで表すとこのような形になります。

Windowsで言うLinuxの「テキストファイル」を確認するコマンドになります。

ls

[root@k8s-master test]# ls
aaa.txt
[root@k8s-master test]#

ディレクトリの中身を確認するコマンドになります。

ディレクトリの中身のファイルの容量や権限等、詳細情報を確認したい場合はこちらのコマンドを実行します。

[root@k8s-master test]# ls -la
合計 4
drwxr-xr-x 2 root root 21  4月  2 22:14 .
drwxr-xr-x 3 root root 18  4月  2 22:05 ..
-rw-r--r-- 1 root root 28  4月  2 22:14 aaa.txt
[root@k8s-master test]#

こちらのコマンドは、隠しファイルも確認することができます。

 

vi

上記はviコマンド実行後の画面になります。
こちらの画面は「コマンドモード」と言います。

ファイルの内容を編集する際に使用するコマンドになります。

こちらのコマンドの使い方の詳細を説明すると長くなります。
後日に別記事にて使用方法について解説したいと思います。

今回は、viコマンドの抑えておけば現場でなんとかなる内容のみ書きたいと思います。

挿入モードに切り替え

インサートモード画面で「i」を入力します。
挿入モードに切り替わり、文字を入力できます。

インサートモードに戻る

「Esc」キーを押下するとインサート画面に戻ります。

ファイル保存

コマンドモードの画面にて「:wq!」を入力後に「Enter」
編集した内容が保存されます。

保存せずに閉じる

コマンドモードの画面にて「:q!」を入力後に「Enter」
編集した内容が保存されずに閉じられます。

 

こちらの4つの操作を覚えておけば、最悪なんとかなります。
便利な使い方については後日解説します。

tail

[root@k8s-master test]# tail /var/log/messages
Apr  2 21:46:08 k8s-master systemd: Started Session 1 of user root.
Apr  2 21:46:08 k8s-master systemd-logind: New session 1 of user root.
Apr  2 21:46:08 k8s-master systemd: Starting Session 1 of user root.
Apr  2 21:59:21 k8s-master systemd: Starting Cleanup of Temporary Directories...
Apr  2 21:59:21 k8s-master systemd: Started Cleanup of Temporary Directories.
Apr  2 22:01:01 k8s-master systemd: Started Session 2 of user root.
Apr  2 22:01:01 k8s-master systemd: Starting Session 2 of user root.
Apr  2 22:06:01 k8s-master kube-controller-manager: W0402 22:06:01.620246     747 reflector.go:319] pkg/controller/garbagecollector/garbagecollector.go:768: watch of <nil> ended with: 401: The event in requested index is outdated and cleared (the requested history has been cleared [25032/24716]) [26031]
Apr  2 22:25:45 k8s-master kube-controller-manager: W0402 22:25:45.632007     747 reflector.go:319] pkg/controller/garbagecollector/garbagecollector.go:768: watch of <nil> ended with: 401: The event in requested index is outdated and cleared (the requested history has been cleared [26214/26034]) [27213]
Apr  2 22:43:37 k8s-master kube-controller-manager: W0402 22:43:37.639986     747 reflector.go:319] pkg/controller/garbagecollector/garbagecollector.go:768: watch of <nil> ended with: 401: The event in requested index is outdated and cleared (the requested history has been cleared [27282/27214]) [28281]
[root@k8s-master test]#

ファイルの最終行から数行を表示させるコマンドになります。
主にログ調査の際に使われます。

「tail -f」とコマンドを入力するとログ出力を監視することができます。

[root@k8s-master test]# tail -f /var/log/messages
Apr  2 21:46:08 k8s-master systemd: Started Session 1 of user root.
Apr  2 21:46:08 k8s-master systemd-logind: New session 1 of user root.
Apr  2 21:46:08 k8s-master systemd: Starting Session 1 of user root.
Apr  2 21:59:21 k8s-master systemd: Starting Cleanup of Temporary Directories...
Apr  2 21:59:21 k8s-master systemd: Started Cleanup of Temporary Directories.
Apr  2 22:01:01 k8s-master systemd: Started Session 2 of user root.
Apr  2 22:01:01 k8s-master systemd: Starting Session 2 of user root.
Apr  2 22:06:01 k8s-master kube-controller-manager: W0402 22:06:01.620246     747 reflector.go:319] pkg/controller/garbagecollector/garbagecollector.go:768: watch of <nil> ended with: 401: The event in requested index is outdated and cleared (the requested history has been cleared [25032/24716]) [26031]
Apr  2 22:25:45 k8s-master kube-controller-manager: W0402 22:25:45.632007     747 reflector.go:319] pkg/controller/garbagecollector/garbagecollector.go:768: watch of <nil> ended with: 401: The event in requested index is outdated and cleared (the requested history has been cleared [26214/26034]) [27213]
Apr  2 22:43:37 k8s-master kube-controller-manager: W0402 22:43:37.639986     747 reflector.go:319] pkg/controller/garbagecollector/garbagecollector.go:768: watch of <nil> ended with: 401: The event in requested index is outdated and cleared (the requested history has been cleared [27282/27214]) [28281]

tailコマンドのこの2つについては抑えておきましょう。

最後に

いかがでしたでしょうか。
こちらのコマンドを抑えておかない場合、Linuxに関する業務や案件をこなす際に大きな弊害となります。
絶対に抑えておきましょう。

今回とは別に「運用監視業務の場合に抑えるべきコマンド」も存在します。
こちらも後日解説します。

 







-Linux
-, ,