【Webサイト・サーバー】運用時に使うLinuxコマンド集


投稿日 2022年3月12日 >> 更新日 2022年6月16日

概要

Webサイト・サーバー運用時に使うであろうLinuxコマンド集です。
フロントエンドユーザーやバックエンドユーザーではソフトウェアやアプリを開発する際はIDE(統合開発環境)などを使用したりするので余りコマンドラインでの操作は明るくないかと思われます。
恐らくLinuxコマンドを使用するタイミングといえば本番環境下のOSがLinux系のリモートサーバーだと思いますので、そんな時の早見表として使っていただけたら幸いです。

コマンドは殆どの場合下記のように実行します。

$ コマンド -オプション 引数
目次

実行環境

実行環境
Linux系

コマンドを使用する上で便利なコマンド

【clearコマンド】でコマンドラインを画面トップに移動させる

「clear:クリア」コマンドで作業画面(ターミナル)内のコマンドラインを画面上部に移動させることができます。

※「echo:エコー」コマンドはメッセージを表示させるコマンドです。

$ echo コマンドを
コマンドを
$ echo 実行していくと
実行していくと
$ echo コマンドラインが
コマンドラインが
$ echo 画面下部に移動していきます
画面下部に移動していきます
$ echo そのコマンドラインを画面上部に移動させるには
そのコマンドラインを画面上部に移動させるには
$ clear

上記をターミナルとして見た場合、作業ラインが段々と画面下部に流れていってしまいます。それだと視界に様々な情報が入ってしまい作業に支障が出るのでそれを一旦クリア(clear)にします。すると下記のようにターミナル上部に作業ラインが移動されて画面上はまっさらな状態へとなり作業がしやすくなります。

$










【pwdコマンド」でカレントディレクトリの絶対パス(フルパス)を表示する

「pwd(print working directory):ピーダビュリューディー」コマンドでは、現在位置つまり作業ディレクトリのフルパスを表示します。

$ pwd
/home/username/
$

【manコマンド】で特定のコマンドについての詳細やオプション情報を表示させる

「man(manuals):マン」コマンドで特定のインストールされているソフトウェアのコマンド詳細を表示させることができます。

manコマンドでmanコマンドを調べます。

$ man man

デフォルトの動作では一覧画面へと切り替わります。「Ctrl+C」もしくわ「q」で一覧画面を抜けられます。

MAN(1)                                            Manual pager utils                                           MAN(1)

NAME
       man - an interface to the on-line reference manuals

SYNOPSIS
...

【--help】でコマンドのオプションを表示

「--help」オプションでコマンドのオプションを表示させることができます。

$ man --help
Usage: man [OPTION...] [SECTION] PAGE...

  -C, --config-file=FILE     use this user configuration file
  -d, --debug                emit debugging messages
  -D, --default              reset all options to their default values
      --warnings[=WARNINGS]  enable warnings from groff
...
$

ネットワーク・リモートの接続・通信関連

【hostnameコマンド・ipコマンド】で登録されているサーバーのドメイン名・IPアドレスを確認する

【hostname】コマンドではサーバーのIPアドレス及び名前解決されているドメイン名を取得できます。

$ hostname
zerofromlight.com

「hostname -i」でIPアドレスを取得できます。

hostname -i
111.222.33.444

他にも「ip addr」コマンドによってIPアドレスの取得が行えます。こちらの実行結果ではデバイスごとのアドレスを取得できます。

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ...
    inet 111.222.33.444/44 brd 111.222.33.444 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
...

「inet」の行がアドレスとなので、アドレスだけ取得したいといった場合は「grep」コマンドで検索します。

$ ip addr | grep inet
    inet 127.0.0.1/8 scope host lo
    inet 111.222.33.444/44 brd 111.222.33.444 scope global noprefixroute eth0

【pingコマンド】でサーバー間の疎通確認をする

【ping:ピング】コマンドでは、指定したIPアドレスまたはドメイン名を与えることで、ローカルサーバーから相手サーバーまでの疎通確認ができます。

※ 以下はドメイン名を指定しています。このコマンドの実行から抜けるには「Ctrl+C」を打ちます。

$ ping zerofromlight.com
PING zerofromlight.com (133.167.65.223) 56(84) bytes of data.
64 bytes from zerofromlight.com (133.167.65.223): icmp_seq=1 ttl=54 time=14.4 ms
64 bytes from zerofromlight.com (133.167.65.223): icmp_seq=2 ttl=54 time=15.6 ms
64 bytes from zerofromlight.com (133.167.65.223): icmp_seq=3 ttl=54 time=14.9 ms
64 bytes from zerofromlight.com (133.167.65.223): icmp_seq=4 ttl=54 time=15.1 ms
64 bytes from zerofromlight.com (133.167.65.223): icmp_seq=5 ttl=54 time=15.6 ms
^C
--- zerofromlight.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 14.490/15.174/15.670/0.465 ms
$

【sshコマンド】でリモートサーバーへログインする

「ssh(secure shell):エスエスエイチ」コマンドでは、セキュリティ上安全な通信によるリモートサーバーへのログインを行えます。

※以下の指定はユーザー名に続きIPアドレスを指定しています。IPアドレスではなくドメイン名でも実行できます。

$ ssh username@111.222.33.444
'username@111.222.33.444's password:

ポート番号を変更している場合は、オプション「-p」で番号を指定します。

$ ssh -p 1111 username@111.222.33.444
'username@111.222.33.444's password:

【hostコマンド・digコマンド】でDNSサーバーへの検索

「host:ホスト」コマンドでは、DNS(Domain Name System)サーバーに登録されているホスト名(IPアドレス及びドメイン)を検索します。IPアドレスは何らかのドメインに対応づけられているので、IPア
ドレスもしくわドメインに検索をかけるとその要素に名前解決された要素が表示されます。

※以下はドメイン名を指定して検索しています。

$ host zerofromlight.com
zerofromlight.com has address 133.167.65.223
zerofromlight.com mail is handled by 10 zerofromlight.com.

「dig:ディーアイジー」コマンドでは、特定のドメイン名の詳細情報をDNS(Domain Name System)サーバーに問い合わせます。名前解決がされているかの問い合わせにも使います。

$ dig zerofromlight.com

; <<>> DiG OSname <<>> zerofromlight.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17463
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
...
...以下省略
$

【ssコマンド】でパケット通信(ネットワーク接続)の状態を確認

「ss(socket statistics):エスエス】コマンドでは、パケット通信(ネットワーク接続)の状態を表示します。オプションを使用することにより柔軟な詳細表示を行えます。

※以下のコマンドオプションは現在進行形で利用している各パケットの表示です。ポート番号などが記載されているため、他人には見せるべきではない内容です。

$ ss -natu
Netid  State      Recv-Q Send-Q     Local Address:Port      Peer Address:Port
udp    UNCONN     0      0              127.0.0.1:323               *:*
udp    UNCONN     0      0              [::1]:323                   [::]:*
tcp    LISTEN     0      128            *:80                        *:*
tcp    LISTEN     0      128            *:22                        *:*
tcp    LISTEN     0      128            127.0.0.1:8000              *:*
...
...省略
$

ちなみに、「netstat」コマンドでも同じ表示内容を実行することができます。

$ netstat -natu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN
udp        0      0 127.0.0.1:323           0.0.0.0:*
udp6       0      0 ::1:323                 :::*
...
...省略
$

ディレクトリの作成・詳細・移動・削除

【mkdirコマンド】でディレクトリの作成

「mkdir(make directories):エムケーディア、メイクディア」コマンドでディレクトリを作成します。

$ mkdir new_dir
$
$ mkdir new_dir_1 new_dir_2

カレントディレクトリ(現在作業中のディレクトリ)内に「new_dir、new_dir_1、new_dir_2」というディレクトリ(フォルダ)が作成されています。

【lsコマンド】でディレクトリの中身や詳細を表示

「ls(list directory contents):エルエス」コマンドで特定のディレクトリの中身を一覧表示することができる。

$ ls
$
$ mkdir new_dir
$ mkdir new_dir_1 new_dir_2
$
$ ls
new_dir new_dir_1  new_dir_2
$

【cdコマンド】でディレクトリの移動

「cd(change directory):シーディー」コマンドはディレクトリ(階層)を移動することができます。

$ ls
new_dir new_dir_1  new_dir_2
$
$ cd new_dir_1
new_dir_1$
new_dir_1$ cd ..
$

移動したいディレクトリを指定し移動します。手前のディレクトリに戻りたい場合はドット2つ「..」を指定して戻ります。

【rmdir】でディレクトリの削除

「rmdir(remove empty directories):リムディア」コマンドで指定したディレクトリを削除できます。

$ ls
new_dir new_dir_1 new_dir_2
$
$ rmdir new_dir
$
$ ls
new_dir_1 new_dir_2
$
$ rmdir new_dir_1 new_dir_2
$
$ ls
$

ファイルに関する操作

【touchコマンド】でファイルの作成

「touch(change file timestamps):タッチ」コマンドでファイルを新規作成できます。

$ ls
$
$ touch new_file
$
$ touch new_file_1 new_file_2
$
$ ls
new_file new_file_1 new_file_2
$

【catコマンド・lessコマンド】でファイルの中身を表示

「cat:キャット」コマンドでファイルの中身を表示することができます。

※echoコマンドでのメッセージを演算子の大なり記号(>)でファイルにメッセージを書き込んでいます。

$ echo 'Hello World!' > new_file
$
$ ls
new_file
$
$ cat new_file
Hello World!
$

「less:レス」コマンドではファイルの中身を一覧画面で表示させることができます。

$ less new_file

一覧画面としてファイルの中身が表示される。

「Ctrl+C」もしくわ「q」で一覧画面を抜けれます。

Hello World!
new_file (END)




【headコマンド・tailコマンド】でファイルの先頭・後方を表示

「head:ヘッダ、ヘッド」コマンドではファイルの中身の上部を表示できます。

※デフォルトでは上部10行目までを表示します。

$ cat new_file
1
2
3
4
5
6
7
8
9
10
11
$
$ head new_file
1
2
3
4
5
6
7
8
9
10
$

「tail:テイル」コマンドはファイルの中身の下部を表示できます。

※デフォルトでは下部から10行目を表示します。

$ tail new_file
2
3
4
5
6
7
8
9
10
11
$

【sortコマンド・uniqコマンド】でファイル内の各行を並び替え・前後の重複削除

「sort:ソート」コマンドではファイル内の各行を規格順に並べ替えることができます。

$ cat new_file
9
8
7
6
5
4
3
2
1
$
$ sort new_file
1
2
3
4
5
6
7
8
9
$

「uniq:ユニーク」コマンドでは行単位で前後に重複している要素を片方だけ削除し単一に表示することができます。

※sortコマンドとセットで使用することにより、前後での重複を確認することができます。

$ cat new_file
9
9
8
8
7
7
6
6
5
5
4
4
3
3
2
2
1
1
$
$ uniq new_file
9
8
7
6
5
4
3
2
1
$

【wcコマンド】でファイルの行数や文字数を表示

「wc(word count):ダビュルーシー」コマンドではファイル内の行数、文字数、ファイルサイズを表示します。

$ cat new_file
1 1
2 2
3 3
4 4
5 5
$
$ wc new_file
 5 10 20 new_file
$

wcコマンドの表示結果では、左から「行数」「文字数」「ファイルサイズ(バイト単位)」となります。

ディレクトリ・ファイルの詳細情報

【fileコマンド】でファイルのタイプや文字コードを表示

「file:ファイル」コマンドで指定したファイルのタイプや文字コードを表示

$ ls
new_dir new_file
$
$ file new_dir
new_dir:  directory
$
$ file new_dir new_file
new_dir:  directory
new_file: ASCII text
$

【statコマンド】でディレクトリ・ファイルの詳細情報(権限や作成日など)

「stat(status):ステート」コマンドでは、ファイル自体の詳細情報を表示できます。「ls -l ファイル」としても各ファイルの詳細情報を表示できます。

$ ls
new_dir new_file
$
$ stat new_dir
  File: new_dir
  Size: 4096            Blocks: 0          IO Block: 4096   directory
Device: 2h/2d   Inode: 12384898976201929  Links: 1
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   username)   Gid: ( 1000/   groupname)
Access: 2022-03-13 11:15:53.225818000 +0900
Modify: 2022-03-13 11:15:53.225818000 +0900
Change: 2022-03-13 11:15:53.225818000 +0900
 Birth: -
$
$ stat new_dir new_file
  File: new_dir
  Size: 4096            Blocks: 0          IO Block: 4096   directory
Device: 2h/2d   Inode: 12384898976201929  Links: 1
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   username)   Gid: ( 1000/   groupname)
Access: 2022-03-13 11:15:53.225818000 +0900
Modify: 2022-03-13 11:15:53.225818000 +0900
Change: 2022-03-13 11:15:53.225818000 +0900
 Birth: -
  File: new_file
  Size: 20              Blocks: 0          IO Block: 4096   regular file
Device: 2h/2d   Inode: 12666373952913746  Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   username)   Gid: ( 1000/   groupname)
Access: 2022-03-13 12:17:35.754678800 +0900
Modify: 2022-03-13 12:17:35.754678800 +0900
Change: 2022-03-13 12:17:35.817166500 +0900
 Birth: -
$

ちなみに限られた詳細情報の表示は「ls -l」で表示できます。

$ ls -l
total 0
drwxr-xr-x 1 user group 4096 Mar 13 11:15 new_dir
-rw-r--r-- 1 user group   20 Mar 13 12:17 new_file
$

補足

ファイル名「new_dir」の例
「drwxr-xr-x 1 user group 4096 Mar 13 11:15 new_dir」
d:ファイルのタイプで「d」はディレクトリの意
rwx...:権限(パーミッション)、「rwx」で表され、読み書きや表示、実行などの権限を付けられる
1:ハードリンクされている数。リンク元のファイルが削除されてもアクセスできるように
user:ユーザー名
group:所属するグループ名
4096:ファイルサイズ
Mar 13 11:15:タイムスタンプ(作成日)
new_dir:ファイル名

ファイルのコピー・他サーバーへの転送

【cpコマンド】でファイルのコピー

「cp(copy):コピー、シーピー」コマンドでディレクトリやファイルをコピーできます。

$ ls
new_dir new_file
$
$ cp new_file copy_file
$
$ ls
copy_file new_dir new_file
$

【scpコマンド・rsyncコマンド】でローカル・リモートサーバーへファイルの転送

「scp(secure copy):エスシーピー」コマンドでは、sshでの暗号化された通信によってファイルをコピーしてくれます。ローカルサーバーからリモートサーバーへ、その逆のリモートからローカルへのファイルの転送(コピー)を行えます。

※作業環境はローカルマシン(自身のCUI)からの例です。

ローカルマシンのコマンドラインから、ローカル→リモートへとファイルを転送(コピー)します。

$ ls
local_file
$
$ scp -P 1234 local_file username@111.222.33.444:/home/username/remote_file
'username@111.222.33.444's password:
local_file                             100%   20     1.3KB/s   00:00
$

補足

「scp」コマンドの実行内容の詳細です。
-P 1234:ポート番号です。デフォルトでは「22」番で通信されるので、変更していたら必要なオプションです。
local_file:ローカルからリモートへ転送したいファイル名です。
username:ユーザー名です。
111.222.33.444:リモートサーバーのIPアドレスです。ドメイン名(example.com)に置き換えることもできます。
/home/username/:リモート先のディレクトリです。
remote_file:リモートへ転送(コピー)された任意のファイル名です。

リモートサーバー内の「/home/username/」ディレクトリに「remote_file」としてローカルからファイルが転送されました。

次はリモートサーバー内に存在するファイルをローカルへと転送(コピー)します。

※作業環境はローカルマシン(自身のCUI)からの例です。

$ scp -P 1234 username@111.222.33.444:/home/username/remote_file local_file
'username@111.222.33.444's password:
remote_file                            100%   20     1.3KB/s   00:00
$
$ ls
local_file
$

「rsync:アールエスワイエヌシー」コマンドは高速で用途の広いファイル転送ツールです。「scp」コマンドと同様にSSHプロトコルで通信します。

※作業環境はローカルマシン(自身のCUI)からの例です。

ローカルマシンのコマンドラインから、ローカル→リモートへとファイルを転送(コピー)します。

$ rsync -e 'ssh -p 1234' local_file username@111.222.33.444:/home/username/remote_file
'username@111.222.33.444's password:
$

「-e」オプションでSSHプロトコルのポート番号を指定することができます。

次はリモートサーバー内に存在するファイルをローカルへと転送(コピー)します。

※作業環境はローカルマシン(自身のCUI)からの例です。

$ rsync -e 'ssh -p 1234' username@111.222.33.444:/home/username/remote_file local_file
'username@111.222.33.444's password:
$

【sftpコマンド】でコマンドライン操作による安全なファイルの転送

sftp(SSH File Transfer Protocol)とはSSHによって暗号化されたファイル専用の通信規格です。こちらの通信では「sftp >」コマンドラインでの作業となり、ある程度のLinuxコマンドを使用してリモートやローカルの環境を操作できるので便利です。

$ sftp username@example.com
username@example.com's password:
sftp>

SSH通信のポート番号を変えている場合は「-o」オプションを付けてポート番号を入力します。

$ sftp -o port=1234 username@exsample.com
username@example.com's password:
sftp>

リモートサーバーのディレクトリにあるファイル一覧を確認するには「ls」と実行します。

sftp> ls
...  remote_file  ...

ローカルサーバーのディレクトリにあるファイル一覧を確認するには「lls」と実行します。

sftp> lls
...  local_file  ...

リモートサーバーからローカルサーバーへファイルを転送するには、「get ファイル名」と実行します。

sftp> get remote_file
Fetching /home/username/remote_file to remote_file
/home/username/remote_file

ローカルサーバーからリモートサーバーへファイル転送するには、「put ファイル名」と実行します。

sftp> put local_file
Uploading local_file to /home/username/local_file
local_file

sftpコマンドラインを抜けるには「quit」を実行します。

sftp> quit
$

ファイル・ディレクトリ・コマンド・文字列の検索

【findコマンド】で特定のファイル・ディレクトリを検索

「find:ファインド」コマンドでは指定したディレクトリ内などに特定のファイルおよびディレクトリ等の結果を階層ごとに表示します。

※下記の「find -type d,f」コマンドではカレントディレクトリ内にある各階層のディレクトリ及びファイル群を表示するように指定しています。

$ ls
dir_1  dir_2  dir_3  search_file
$
$ find -type d,f
.
./dir_1
./dir_1/dir_1_1
./dir_1/dir_1_1/search_file
./dir_2
./dir_2/dir_2_1
./dir_2/dir_2_1/test_file
./dir_3
./dir_3/dir_3_1
./dir_3/test_file
./search_file
$

上記の実行はこれから実装するのに分かりやすくするために各階層構造を表示しただけです。

特定のディレクトリやファイルがあるか調べたい場合は、「-name」オプションを使用すると便利です。

$ find -name search_file
./dir_1/dir_1_1/search_file
./search_file
$

このコマンドのデフォルトの動作は、カレントディレクトリ内を探索します。「-name」を外すとカレントディレクトリのみ検索、「-name」を付けるとカレントディレクトリ内にある全ディレクトリに検索をかけます。

注意

一番上(rootディレクトリ)の階層で「-type d,f」や「-name」といったオプションでディレクトリやファイルの検索をかけてしまうと、デフォルトの設定上カレントディレクトリを出発点として目的のファイルを探してしまうので、だいぶ時間を取られてしまいます。

以下はディレクトリを指定してからファイルの検索を実行しています。

$ find dir_2 -name test_file
dir_2/dir_2_1/test_file
$

【grepコマンド】でファイル及び出力結果の文字列を検索(抽出)

「grep:グリップ」コマンドでは、ファイル内の文字列の検索及びパイプ(|)などで出力された結果内の文字列を検索することができます。

※ファイル内の内容は人工知能 - Wikipediaの概要を一部抜粋した内容です。

$ cat search_file
人間の知的能力をコンピュータ上で実現する、様々な技術・ソフトウェア・コ
ンピュータシステム。
応用例としては、自然言語処理(機械翻訳・かな漢字変換・構文解析・文章要
約等)、専門家の推論・判断を模倣するエキスパートシステム、画像データを
解析し特定のパターンを検出・抽出する画像認識等がある。
1956年にダートマス会議でジョン・マッカーシーにより命名された。
現在では、記号処理を用いた知能の記述を主体とする情報処理や研究でのアプ
ローチという意味あいでも使われている。
家庭用電気機械器具の制御システムやゲームソフトの思考ルーチンもこう呼ば
れることもある。
プログラミング言語 LISP による「ELIZA」というカウンセラーを模倣したプログラム(人工無脳)がしばしば引き合いに出されるが、計算機に人間の専門家
の役割をさせようという「エキスパートシステム」と呼ばれる研究・情報処理
システムの実現は、人間が暗黙に持つ常識の記述が問題となり、実用への利用
が困難視されている。
人工的な知能の実現へのアプローチとしては、「ファジィ理論」や「ニューラ
ルネットワーク」などのようなアプローチも知られているが、従来の人工知能
であるGOFAI (Good Old Fashioned AI) との差は記述の記号的明示性にある。
その後「サポートベクターマシン」が注目を集めた。
また、自らの経験を元に学習を行う強化学習という手法もある。
「この宇宙において、知性とは最も強力な形質である(レイ・カーツワイル)
」という言葉通り、知性を機械的に表現し実装するということは極めて重要な
作業である。
画像処理におけるディープラーニングの有用性が競技会で世界的に認知された2012年頃から急速に研究が活発となり、第三次人工知能ブームが到来。
2016年から2017年にかけて、ディープラーニングを導入したAIが完全情報ゲー
ムである囲碁などのトップ棋士、さらに不完全情報ゲームであるポーカーの世
界トップクラスのプレイヤーも破り、麻雀では「Microsoft Suphx (Super Phoenix)」がAIとして初めて十段に到達するなど最先端技術として注目されている
。
$

上記のファイル内から特定の文字列を検索してみます。

$ grep '人工' search_file
プログラミング言語 LISP による「ELIZA」というカウンセラーを模倣したプログラム(人工無脳)がしばしば引き合いに出されるが、計算機に人間の専門家 の役割をさせようという「エキスパートシステム」と呼ばれる研究・情報処理 システムの実現は、人間が暗黙に持つ常識の記述が問題となり、実用への利用 が困難視されている。
人工的な知能の実現へのアプローチとしては、「ファジィ理論」や「ニューラ ルネットワーク」などのようなアプローチも知られているが、従来の人工知能 であるGOFAI (Good Old Fashioned AI) との差は記述の記号的明示性にある。
画像処理におけるディープラーニングの有用性が競技会で世界的に認知された2012年頃から急速に研究が活発となり、第三次人工知能ブームが到来。
$

検索結果は見つかった文字列の行全体が表示されることがわかります。

$ grep '第三次人工知能' search_file
画像処理におけるディープラーニングの有用性が競技会で世界的に認知された2012年頃から急速に研究が活発となり、第三次人工知能ブームが到来。
$

パイプ(|)を使用することで、柔軟な検索をすることができます。

$ ls
test.html  test.js  test.py  test.txt
$
$ ls | grep '.py'
test.py
$
$ ls | grep 'test'
test.html
test.js
test.py
test.txt
$

パイプ(|)で区切ることによって、左側の表示結果を元に検索をかけることができます。

【whichコマンド】で特定のコマンドの絶対パスを検索

「which:ウィッチ」コマンドでは、コマンドファイルの在り処を検索します。

$ which ls
/bin/ls
$
$ which python3
/usr/bin/python3
$

CPU・メモリ・ディスクの使用状況

【psコマンド】で実行中のプロセスを表示

「ps(processes snapshot):ピーエス」コマンドは、現在実行中のプロセスを表示します。

以下のコマンドのオプションは使用頻度が高いと思われるコマンドです。

$ ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   8940   328 ?        Ssl  05:29   0:00 /init
root         8  0.0  0.0   8940   224 tty1     Ss   05:29   0:00 /init
username        9  0.0  0.0  16940  3480 tty1     S    05:29   0:00 -bash
username       28  0.0  0.4 240456 20348 tty1     Sl   05:30   0:08 /mnt/c/.../bin/python3 /mnt/c/Users/warik/Document
username       33  0.1  2.4 882308 98760 ?        Ssl  05:31   0:20 /mnt/c/.../bin/python3 -m ipykernel_launcher -f /h
root        55  0.0  0.0   8940   156 tty2     Ss   06:44   0:00 /init
username       56  0.0  0.0  16940  3236 tty2     S    06:44   0:01 -bash
username      280  0.0  0.0  17656  2024 tty2     R    10:59   0:00 ps -aux
$

【topコマンド】で実行中のプロセスをリアルタイムで表示

「top:ティーオーピー」コマンドは、実行中のプロセスをリアルタイムで表示します。

$ top

上記を実行すると、一覧画面で表示されます。

※「Ctrl+C」または「q」で一覧画面を抜けることができます。

top - 11:11:31 up  5:42,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:   8 total,   1 running,   7 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.7 us,  5.8 sy,  0.0 ni, 88.0 id,  0.0 wa,  3.5 hi,  0.0 si,  0.0 st
KiB Mem :  4092036 total,   266956 free,  3595728 used,   229352 buff/cache
KiB Swap: 12582912 total,  8629596 free,  3953316 used.   362576 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0    8940    328    284 S   0.0  0.0   0:00.31 init
    8 root      20   0    8940    224    180 S   0.0  0.0   0:00.00 init
    9 username     20   0   16940   3480   3364 S   0.0  0.1   0:00.13 bash
   28 username     20   0  240456  20348   7624 S   0.0  0.5   0:08.01 jupyter-note+
   33 username     20   0  882308  98760  32552 S   0.0  2.4   0:20.07 python3
   55 root      20   0    8940    156    112 S   0.0  0.0   0:00.00 init
   56 username     20   0   16940   3236   3108 S   0.0  0.1   0:01.49 bash
  288 username     20   0   17632   2032   1488 R   0.0  0.0   0:00.03 top

【freeコマンド】でメモリの使用状況を表示

「free:フリー」コマンドでメモリ・スワップの使用状況を表示する

$ free
              total        used        free      shared  buff/cache   available
Mem:        4092036     3593572      269112       17720      229352      364732
Swap:      12582912     3952740     8630172
$

人間が理解しやすい単位に表示させるには「-h」オプションを使います。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           3.9G        3.4G        257M         17M        223M        350M
Swap:           12G        3.8G        8.2G
$

【dfコマンド】でディスクの空き容量をパーティションごと表示

「df(disk filesystem):ディフ・ディーエフ」コマンドは、現在使用されているディスクの空き容量を表示します。

パーティションごとに表示されるので、どの区域が容量をおおく使用しているかが分かる。

$ df
ファイルシス   1K-ブロック    使用   使用可 使用% マウント位置
devtmpfs           1012692       0  1012692    0% /dev
tmpfs              1023448       0  1023448    0% /dev/shm
tmpfs              1023448  107024   916424   11% /run
tmpfs              1023448       0  1023448    0% /sys/fs/cgroup
/dev/vda4         47708864 8135420 39573444   18% /
/dev/vda2           508580  236768   271812   47% /boot
tmpfs               204692       0   204692    0% /run/user/1000
$

人間が理解しやすい単位に表示させるには「-h」オプションを使います。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         989M     0  989M    0% /dev
tmpfs           1000M     0 1000M    0% /dev/shm
tmpfs           1000M  105M  895M   11% /run
tmpfs           1000M     0 1000M    0% /sys/fs/cgroup
/dev/vda4         46G  7.8G   38G   18% /
/dev/vda2        497M  232M  266M   47% /boot
tmpfs            200M     0  200M    0% /run/user/1000
$

【duコマンド】でディスクストレージの使用量を表示

「du(disk usage):ディーユー」コマンドはディスクストレージの使用量を表示します。

$ ls
dir_1 search_file  test.html  test.js  test.py  test.txt
$
$ du
4       ./dir_1
8       .
$

何も引数などを与えないと、カレントディレクトリ内にあるディレクトリやファイル群のディスク使用量を表示します。

指定することによって個々のファイルがどれほどのディスクストレージを使用しているかが分かります。

$ du -h search_file test.html test.js test.py test.txt
4.0K    search_file
0       test.html
0       test.js
0       test.py
0       test.txt
$

ログインユーザーの情報

【wコマンド・whoコマンド】でログインしているユーザーの情報を表示

「w:ダブリュー」コマンドで現在ログインしているユーザーが、その端末で実行しているプロセスの情報を表示します。

$ w
 13:51:49 up 1022 days, 14:50,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
username   pts/1    servername 13:46    5.00s  0.04s  0.00s w
$

「who:フー」コマンドでは、自身のユーザー情報を表示します。

$ who
username   pts/1        2022-03-14 13:46 (servername)
$

【lastlogコマンド】で最後にログインされた情報

「lastlog:ラスログ」コマンドでは、各ユーザーの最終ログイン情報を表示することができます。

$ lastlog
ユーザ名         ポート   場所             最近のログイン
root             pts/0                     月  2月 28 08:22:55 +0900 2022
bin                                        **一度もログインしていません**
daemon                                     **一度もログインしていません**
adm                                        **一度もログインしていません**
lp                                         **一度もログインしていません**
sync                                       **一度もログインしていません**
shutdown                                   **一度もログインしていません**
halt                                       **一度もログインしていません**
mail                                       **一度もログインしていません**
operator                                   **一度もログインしていません**
games                                      **一度もログインしていません**
ftp                                        **一度もログインしていません**
nobody                                     **一度もログインしていません**
systemd-network                            **一度もログインしていません**
dbus                                       **一度もログインしていません**
polkitd                                    **一度もログインしていません**
libstoragemgmt                             **一度もログインしていません**
abrt                                       **一度もログインしていません**
rpc                                        **一度もログインしていません**
postfix                                    **一度もログインしていません**
tss                                        **一度もログインしていません**
sshd                                       **一度もログインしていません**
ntp                                        **一度もログインしていません**
chrony                                     **一度もログインしていません**
tcpdump                                    **一度もログインしていません**
username           pts/1    servername 月  3月 14 13:46:02 +0900 2022
$

コマンドと組み合わせて使用する記号

【|】で処理された結果をさらに処理する

「|:パイプ」を組み合わせることによって、コマンドによる表示結果を別のコマンドで処理することができます。

※パイプで区切られた左側の結果を元に右側へ処理が実行されます。

$ ls
search_file  test.html  test.js  test.py  test.txt
$
$ ls | grep 'test'
test.html
test.js
test.py
test.txt
$
$ ls | grep 'test' | grep 'py'
test.py
$

【>・>>】で表示結果をファイルに書き込む

「>・>>:リダイレクト」では、コマンドによる実行結果をファイルに書き込む事ができます。「>」では書き込みで、「>>」では追記となります。

$ echo 'Hello World' > redirect.txt
$
$ ls
redirect.txt
$
$ cat redirect.txt
Hello World
$
$ echo 'Hello Linux' >> redirect.txt
$
$ cat redirect.txt
Hello World
Hello Linux
$

【&&・;】で表示結果を繋げる

「&&・;:アンド・セミコロン」では、コマンドを連結させることができます。

$ ls
redirect.txt
$ cat redirect.txt && cat redirect.txt
Hello World
Hello Linux
Hello World
Hello Linux
$
$ cat redirect.txt ; cat redirect.txt
Hello World
Hello Linux
Hello World
Hello Linux
$

【*】で全ての文字をマッチさせる

「*:ワイルドカード」では、引数に指定した文字列と組み合わせることで検索対象の文字列の照合範囲を広げることができます。「find」や「grep」コマンドいった検索する際に使用したりします。

$ ls
file_1.txt   file_3.py  test_1.txt   test_3.py
file_2.html  file_4.js  test_2.html  test_4.js
$
$ find *.html
file_2.html
test_2.html
$
$ ls | grep 'file_*'
file_1.txt
file_2.html
file_3.py
file_4.js
$

以上となります。

他にも多くのコマンドが存在しますが、適宜追加していきます。

ありがとうございました。