システム管理コマンド

HOMELinuxコマンド > システム管理コマンド

システム管理コマンド:記事リスト

システム管理コマンドのカテゴリーには以下の記事がリストされています。

CentOS7で言語ロケールを確認・設定する

2019年9月17日
CentOS7で言語のロケールを確認、変更するには、
localectl コマンドを使用します。

現在設定されている言語ロケールを確認する

現在設定されてる言語ロケールを確認するには、「localectl status」を実行します。

# localectl status ←「localectl status」を実行します。 System Locale: LANG=ja_JP.UTF-8 VC Keymap: jp X11 Layout: jp

LANG=ja_JP.UTF-8の結果から
日本語になっている事が確認できます。

言語ロケールを英語に変更する

言語ロケールを変更するには、
「localectl set-locale LANG=」に変更する言語を指定します。
変更後は、ログインし直すことで、言語が変更されます。

# localectl set-locale LANG=en_US.UTF-8 ←「localectl set-locale LANG=en_US.UTF-8」を実行します。 # localectl status ←確認の為「localectl status」を実行します。 System Locale: LANG=en_US.UTF-8 VC Keymap: jp X11 Layout: jp


続きを読む "CentOS7で言語ロケールを確認・設定する"

Linuxのカーネルバージョンを確認する

2018年1月19日
Linuxでカーネルのバージョンを確認するには、
確認コマンドを実行する方法とカーネルバージョンを
保持したファイルを確認する方法があります。

コマンドでLinuxカーネルバージョンを確認する方法

コマンドでカーネルバージョンを確認する場合は、unameコマンドを使用します。
unameにはいくつかのオプションがありますので、代表的なものを紹介します。

Linuxのカーネルバージョンのみ表示する

unameコマンドに「-r」オプションを付けて実行します。

$ uname -r 3.10.0-693.11.6.el7.x86_64


続きを読む "Linuxのカーネルバージョンを確認する"

CentOS7のログ管理(systemd、journald)

2017年8月 4日
CentOS7では、これまでログ管理を行っていたsyslogベースの管理手法から
systemdがログ管理を行う新しい仕組みが導入されています。

従来のsyslogは、複数システムのログをネットワーク経由で一括管理出来たり、
多くの管理ソフトウェア製品とも連携が可能でしたが、
膨大なログの中から欲しい情報を抽出するには、
様々なコマンドやツールを駆使する必要がありました。

そこでCentOS7では、syslogでのログ抽出作業量を軽減するために、
以前と比べて格段に情報を抽出しやすい仕組みに変更されています。


■journaldの状態を確認する
CentOS7では、ログ収集の仕組みとして、「journald」を使用します。
サービス名は「systemd-journald.service」です。

journaldの起動確認は、systemctlコマンドを実行します。
# systemctl status systemd-journald.service
systemd-journald.service - Journal Service
Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static)
Active: active (running) since 金 2017-08-04 13:39:06 JST; 46min ago
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 712 (systemd-journal)
Status: "Processing requests..."
CGroup: /system.slice/systemd-journald.service
mq712 /usr/lib/systemd/systemd-journald

8月 04 13:39:06 Tiger systemd-journal[712]: Runtime journal is using 6.1M (max 48.9M, leavin...M).
8月 04 13:39:06 Tiger systemd-journal[712]: Runtime journal is using 6.1M (max 48.9M, leavin...M).
8月 04 13:39:06 Tiger systemd-journal[712]: Journal started
8月 04 13:39:07 Tiger systemd-journal[712]: Runtime journal is using 6.1M (max 48.9M, leavin...M).
Hint: Some lines were ellipsized, use -l to show in full.


■ブートログを確認する
journaldが収集したログを出力するためのコマンドは、「journalctl」になります。
サーバーに搭載されている各種ハードウェアの情報を確認するには、
CentOS7が起動した時のブートログを確認します。
ブートログを確認するには、journalctlコマンドにオプション「-b」を付けて実行します。

# journalctl -b
-- Logs begin at 金 2017-08-04 13:39:02 JST, end at 金 2017-08-04 14:29:01 JST. --
8月 04 13:39:02 Tiger systemd-journal[336]: Runtime journal is using 6.1M (max 48.9M, leaving 73.4M
8月 04 13:39:02 Tiger systemd-journal[336]: Runtime journal is using 6.1M (max 48.9M, leaving 73.4M
8月 04 13:39:02 Tiger kernel: Initializing cgroup subsys cpuset
8月 04 13:39:02 Tiger kernel: Initializing cgroup subsys cpu
8月 04 13:39:02 Tiger kernel: Initializing cgroup subsys cpuacct
8月 04 13:39:02 Tiger kernel: Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org)
8月 04 13:39:02 Tiger kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-229.el7.x86_64 root=/dev/map
8月 04 13:39:02 Tiger kernel: Disabled fast string operations
8月 04 13:39:02 Tiger kernel: e820: BIOS-provided physical RAM map:


■ログを日時でフィルタリングする
journalctlコマンドには、日時でログをフィルタリングする機能が備わっています。
日時開始を「--since=""」で、日時終了を「--until=""」で指定します。

下記例では、2017年8月4日 14時29分〜14時33分1秒までのログを出力しています。
# journalctl --since="2017-08-04 14:29:00" --until="2017-08-04 14:33:01"
-- Logs begin at 金 2017-08-04 13:39:02 JST, end at 金 2017-08-04 14:35:01 JST. --
8月 04 14:29:01 Tiger systemd[1]: Starting Session 62 of user root.
8月 04 14:29:01 Tiger systemd[1]: Started Session 62 of user root.
8月 04 14:29:01 Tiger CROND[5038]: (root) CMD (/var/www/system/check_process.pl > /dev/null 2>&1)
8月 04 14:29:25 Tiger clamd[1113]: SelfCheck: Database status OK.
8月 04 14:29:25 Tiger clamd[1113]: SelfCheck: Database status OK.
8月 04 14:30:01 Tiger systemd[1]: Starting Session 64 of user root.
8月 04 14:30:01 Tiger systemd[1]: Started Session 64 of user root.
8月 04 14:30:01 Tiger systemd[1]: Starting Session 63 of user root.
8月 04 14:30:01 Tiger systemd[1]: Started Session 63 of user root.
8月 04 14:30:01 Tiger CROND[5046]: (root) CMD (/usr/lib64/sa/sa1 1 1)
8月 04 14:30:01 Tiger CROND[5047]: (root) CMD (/var/www/system/check_process.pl > /dev/null 2>&1)
8月 04 14:31:01 Tiger systemd[1]: Starting Session 65 of user root.
8月 04 14:31:01 Tiger systemd[1]: Started Session 65 of user root.
8月 04 14:31:01 Tiger CROND[5056]: (root) CMD (/var/www/system/check_process.pl > /dev/null 2>&1)
8月 04 14:32:01 Tiger systemd[1]: Starting Session 66 of user root.
8月 04 14:32:01 Tiger systemd[1]: Started Session 66 of user root.
8月 04 14:32:01 Tiger CROND[5061]: (root) CMD (/var/www/system/check_process.pl > /dev/null 2>&1)

デフォルトでは、自動的にlessページャが起動するので、
スペースでページ送りをしますが、
不要な場合は、「--no-pager」オプションを付与します。


■今日のログを出力する
実行日当時のログを出力したい場合は、--sinceオプションに「today」を指定します。
# journalctl --since=today
- Logs begin at 金 2017-08-04 13:39:02 JST, end at 金 2017-08-04 14:40:01 JST. --
8月 04 13:39:02 Tiger systemd-journal[336]: Runtime journal is using 6.1M (max 48.9M, leaving 73.4M
8月 04 13:39:02 Tiger systemd-journal[336]: Runtime journal is using 6.1M (max 48.9M, leaving 73.4M
8月 04 13:39:02 Tiger kernel: Initializing cgroup subsys cpuset
8月 04 13:39:02 Tiger kernel: Initializing cgroup subsys cpu
8月 04 13:39:02 Tiger kernel: Initializing cgroup subsys cpuacct
8月 04 13:39:02 Tiger kernel: Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org)
8月 04 13:39:02 Tiger kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-229.el7.x86_64 root=/dev/map
8月 04 13:39:02 Tiger kernel: Disabled fast string operations
8月 04 13:39:02 Tiger kernel: e820: BIOS-provided physical RAM map:

他にも「yesterday」や何に使うか分かりませんが「tomorrow」も指定できます。


■特定のサービスに絞ってログを表示する
特定のサービスのみのログを出力したい場合は、
「-u」オプションにサービス名を付けて実行します。

下記例では、SSHサービスのログを出力しています。
# journalctl --since="2017-08-03 14:29:00" --until="2017-08-04 14:33:01" -u sshd.service
-- Logs begin at 金 2017-08-04 13:39:02 JST, end at 金 2017-08-04 14:44:01 JST. --
8月 04 13:39:09 Tiger systemd[1]: Starting OpenSSH server daemon...
8月 04 13:39:09 Tiger systemd[1]: Started OpenSSH server daemon.
8月 04 13:39:09 Tiger sshd[1106]: Server listening on 0.0.0.0 port 2222.
8月 04 14:24:24 Tiger sshd[3972]: Accepted publickey for pakira from 192.168.0.80 port 50700 ssh2:


■リアルタイムでログを確認する
現在、リアルタイムで出力しているログを表示させたい場合は、
journalctlコマンドに「-f」オプションを付けて実行します。
従来の「tail -f /var/log/messages」と同様な表示ができます。

# journalctl -f
-- Logs begin at 金 2017-08-04 13:39:02 JST. --
8月 04 18:32:01 Tiger systemd[1]: Started Session 267 of user root.
8月 04 18:32:01 Tiger CROND[11781]: (root) CMD (/var/www/system/check_process.pl > /dev/null 2>&1)
8月 04 18:33:01 Tiger systemd[1]: Created slice user-0.slice.
8月 04 18:33:01 Tiger systemd[1]: Starting Session 268 of user root.
8月 04 18:33:01 Tiger systemd[1]: Started Session 268 of user root.
8月 04 18:33:01 Tiger CROND[11787]: (root) CMD (/var/www/system/check_process.pl > /dev/null 2>&1)
8月 04 18:34:01 Tiger systemd[1]: Created slice user-0.slice.
8月 04 18:34:01 Tiger systemd[1]: Starting Session 269 of user root.
8月 04 18:34:01 Tiger systemd[1]: Started Session 269 of user root.
8月 04 18:34:01 Tiger CROND[11793]: (root) CMD (/var/www/system/check_process.pl > /dev/null 2>&1)


■プライオリティによるログのフィルタリング
syslogでは、ログのプライオリティ(緊急度)に応じた管理ができましたが、
journalctlでも同様の出力が行なえます。
プライオリティには、緊急度の高いものからemerg、alert、err、warning、
notice、debugがあります。

■warningプライオリティを表示する
特定のプライオリティを表示させるには、journalctlにオプション「-p」を付けて、
フィルタリングしたいプライオリティを指定します。

下記例では、warningプライオリティを表示しています。

# journalctl -p warning
-- Logs begin at 金 2017-08-04 13:39:02 JST, end at 金 2017-08-04 18:42:01 JST. --
8月 04 13:39:02 Tiger kernel: ACPI: RSDP 00000000000f6a10 00024 (v02 PTLTD )
8月 04 13:39:02 Tiger kernel: ACPI: XSDT 000000003feea65b 0005C (v01 INTEL 440BX 06040000 VMW
8月 04 13:39:02 Tiger kernel: ACPI: FACP 000000003fefee73 000F4 (v04 INTEL 440BX 06040000 PTL
8月 04 13:39:02 Tiger kernel: ACPI: DSDT 000000003feec3fc 12A77 (v01 PTLTD Custom 06040000 MSFT
8月 04 13:39:02 Tiger kernel: ACPI: FACS 000000003fefffc0 00040
8月 04 13:39:02 Tiger kernel: ACPI: BOOT 000000003feec3d4 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP
8月 04 13:39:02 Tiger kernel: ACPI: APIC 000000003feeb8bd 00742 (v01 PTLTD ? APIC 06040000 LTP
8月 04 13:39:02 Tiger kernel: ACPI: MCFG 000000003feeb881 0003C (v01 PTLTD $PCITBL$ 06040000 LTP
8月 04 13:39:02 Tiger kernel: ACPI: SRAT 000000003feea757 008A8 (v02 VMWARE MEMPLUG 06040000 VMW
8月 04 13:39:02 Tiger kernel: ACPI: HPET 000000003feea71f 00038 (v01 VMWARE VMW HPET 06040000 VMW
8月 04 13:39:02 Tiger kernel: ACPI: WAET 000000003feea6f7 00028 (v01 VMWARE VMW WAET 06040000 VMW
8月 04 13:39:02 Tiger kernel: kexec: crashkernel=auto resulted in zero bytes of reserved memory.


■errプライオリティを表示する
# journalctl -p err
-- Logs begin at 金 2017-08-04 13:39:02 JST, end at 金 2017-08-04 18:44:01 JST. --
8月 04 13:39:02 Tiger kernel: Detected CPU family 6 model 78
8月 04 13:39:02 Tiger kernel: Warning: Intel CPU model - this hardware has not undergone upstream t
8月 04 13:39:03 Tiger kernel: sd 0:0:0:0: [sda] Assuming drive cache: write through
8月 04 13:39:07 Tiger kernel: piix4_smbus 0000:00:07.3: Host SMBus controller not enabled!
8月 04 13:39:08 Tiger NetworkManager[839]: _nl_get_vtable: assertion 'vtable.handle' failed
8月 04 13:39:23 Tiger systemd[1]: Failed to start Crash recovery kernel arming.

これまでの例では各プライオリティ名を指定してフィルタリングしましたが、
これをプライオリティの値で指定することも可能です。
各プライオリティと値は下記の対応となっています。
emerg 0
alert 1
crit 2
err 3
warning 4
notice 5
debug 6

■emergプライオリティのログをプライオリティ値で表示する
emergログが存在しないので、loggerコマンドを使用してテストログを吐き出し、
その後プライオリティ値「0」でemergログを表示します。

# logger -p daemon.emerg "TEST LOG EMERG"
#
Message from syslogd@Tiger at Aug 7 16:23:46 ...
pakira:TEST LOG EMERG

# journalctl -p 0
-- Logs begin at 月 2017-08-07 15:57:16 JST, end at 月 2017-08-07 16:23:46 JST. --
8月 07 16:23:46 Tiger pakira[3402]: TEST LOG EMERG


■alertプライオリティのログをプライオリティ値で表示する
プライオリティ値「1」でalertログを表示します。

# logger -p daemon.alert "TEST LOG ALERT"
# journalctl -p 1
-- Logs begin at 月 2017-08-07 15:57:16 JST, end at 月 2017-08-07 16:26:26 JST. --
8月 07 16:23:46 Tiger pakira[3402]: TEST LOG EMERG
8月 07 16:26:26 Tiger pakira[3789]: TEST LOG ALERT

journalctlを実行すると、alertよりプライオリティの高い
emergプライオリティも表示されていることが分かります。


■カーネルログを表示する
カーネルログを表示するには、
journalctlコマンドにオプション「-k」を付けて実行します。
従来の「dmesg」コマンドに相当します。

# journalctl -k
-- Logs begin at 月 2017-08-07 15:57:16 JST, end at 月 2017-08-07 16:29:01 JST. --
8月 07 15:57:16 Tiger kernel: Initializing cgroup subsys cpuset
8月 07 15:57:16 Tiger kernel: Initializing cgroup subsys cpu
8月 07 15:57:16 Tiger kernel: Initializing cgroup subsys cpuacct
8月 07 15:57:16 Tiger kernel: Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org)
8月 07 15:57:16 Tiger kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-229.el7.x86_64 root=/dev/map
8月 07 15:57:16 Tiger kernel: Disabled fast string operations
8月 07 15:57:16 Tiger kernel: e820: BIOS-provided physical RAM map:
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x0000000000100000-0x000000003fedffff] usable
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x000000003fee0000-0x000000003fefefff] ACPI data
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x000000003feff000-0x000000003fefffff] ACPI NVS
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x000000003ff00000-0x000000003fffffff] usable
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
8月 07 15:57:16 Tiger kernel: BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved


■特定のプロセスIDのログを表示する
特定のプロセスIDに関係するログを表示する場合は、
journalctlコマンドに「_PID=プロセス番号」を付けて実行します。

# journalctl _PID=1112
-- Logs begin at 月 2017-08-07 15:57:16 JST, end at 月 2017-08-07 16:32:01 JST. --
8月 07 15:57:23 Tiger clamd[1112]: clamd daemon 0.98.7 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
8月 07 15:57:23 Tiger clamd[1112]: Running as user amavis (UID 991, GID 991)
8月 07 15:57:23 Tiger clamd[1112]: Log file size limited to 1048576 bytes.
8月 07 15:57:23 Tiger clamd[1112]: Reading databases from /var/lib/clamav
8月 07 15:57:23 Tiger clamd[1112]: Not loading PUA signatures.
8月 07 15:57:23 Tiger clamd[1112]: Bytecode: Security mode set to "TrustSigned".


■実行ファイルのパス指定でのログ表示
journalctlコマンドにサービスを提供する実行ファイルのパスを指定して
それに関連するログを表示することができます。
下記例では、SSHサービスの実行ファイルである「/usr/sbin/sshd」関連のログを
表示しています。

# journalctl /usr/sbin/sshd
-- Logs begin at 月 2017-08-07 15:57:16 JST, end at 月 2017-08-07 16:34:06 JST. --
8月 07 15:57:23 Tiger sshd[1105]: Server listening on 0.0.0.0 port 22.
8月 07 16:22:03 Tiger sshd[3308]: Accepted publickey for pakira from 192.168.0.80 port 54097 ssh2:
8月 07 16:22:04 Tiger sshd[3308]: pam_unix(sshd:session): session opened for user pakira by (uid=0)

Apacheのログを一括でホスト名表示する(logresolve)

2017年7月11日

Apacheのアクセスログは、デフォルトの設定のままだと
接続クライアントのIPアドレスを記録します。

Apacheの設定ファイル(httpd.confまたは、httpd-default.conf)の
HostnameLookupsを「On」にすることで接続クライアントを
ホスト名で記録するように変更ができますが、
パフォーマンス低下を招いてしまいます。

運用中のパフォーマンス低下を防ぐために、
logresolveコマンドを使用してIPアドレスで記録したログファイルを、
一括でホスト名に変換します。

下記例では、IPアドレスで記録されたaccess_log_20170705ファイルを
ホスト名変換してresolve_logファイルに出力します。
# logresolve < access_log_20170705 > resolve_log

また、「-s」を指定して実行することで、logresolveコマンドの実行結果の
統計をファイル出力することも可能です。
例えば、名前解決できたIPアドレスやホスト名、
または名前解決できなかったIPアドレスなどが出力されます。

下記例では、toukeiファイルに統計データを出力しています。
# logresolve -s toukei < access_log_20170705 > resolve_log

統計データは下記のように出力されます。
# cat toukei
logresolve Statistics:
Entries: 131
With name : 0
Resolves : 75
- No reverse : 16
Cache hits : 56
Cache size : 75

アクセスログが大きいと、処理に時間が掛かります。
実行する際は、負荷が少ない時間帯を選ぶなどの配慮が必要になります。

CentOS7のネットワーク管理

2016年1月19日

CentOS7のネットワーク管理はNetworkManagerを利用して行います。
CentOS6系では、Network Administration Toolに含まれる
system-config-networkを使用した管理、管理ファイルを直接編集する
運用が一般的でしたが、CentOS7では、NetworkManagerを使用した
管理が推奨されています。

従来のNetworkManagerは、すべてのネットワーク機能を制御できなかった為、
直接ファイルを編集し、サービスの起動や停止を行っていましたが、
CentOS7のNetworkManagerでは、ネットワーク関連の操作が大幅に強化され、
設定ファイルを直接編集しなくても、コマンドラインやGUIツールで設定ファイルを
生成することが可能になっています。

また、NIC(Network Interface Card)に付与されるインタフェース名の命名管理も
これまでのCentOS6系とは全く異なる仕様となっています。

CentOS7では、ネットワークインタフェース名に永続的に変わらない名前が付与がされます。
この永続的な命名をConsistent Network Device Namingと言い、一般的なx86サーバーに
搭載されているオンボードのNICでは、eno1、eno2、拡張カードスロットに装着するNICでは
ens1、ens2、またはens7f0、ens7f1などの名前が付与されます。

■nmcliコマンド
nmcli(Network Manager Command Line Interface)コマンドは、
CentOS7のネットワーク設定を行なうNetworkManager基本コマンドになります。

nmcliコマンドには、下記パラメーターが用意されています。
・connection:接続の設定
・device:デバイス管理
・general:ホスト名設定、ロギング、権限操作、状態の表示
・networking:コネクティビティのチェック、有効化、無効化管理
・radio:ワイヤレスネットワークの設定有効化、無効化管理

■インタフェースの接続状態確認
[root@Tiger ~]# nmcli connection
名前 UUID タイプ デバイス
eno1 4a181dd8-0bac-43c5-8d4f-9e89c31e14b1 802-3-ethernet eno1

上記の例では、NICのインタフェース名がeno1として割当られています。
デバイスの項目にインタフェース名が表示されている場合は
ネットワークに接続されていることを表します。

■インタフェースの接続と切断
「nmcli connection」でupやdownを指定すると、
インタフェースの接続、切断を制御できます。
下記例ではインタフェースeno1を切断しています。
[root@Tiger ~]# nmcli connection down eno1
[root@Tiger ~]# nmcli connection
名前 UUID タイプ デバイス
eno1 4a181dd8-0bac-43c5-8d4f-9e89c31e14b1 802-3-ethernet --
デバイスの項目gが「--」になり、切断されていることが分かります。

再度接続するには、下記コマンドを実行します。
[root@Tiger ~]# nmcli connection up eno1

■デバイス名とデバイスの状態確認
インタフェースのデバイス名とその状態を確認するには「device」を指定します。
[root@Tiger ~]# nmcli device
デバイス タイプ 状態 接続
eno1 ethernet 接続済み eno1
lo loopback 管理無し --
物理NICが1ポートあるサーバーで、デバイス名がeno1と割り当てられています。
またループバックデバイスとしてloが認識されています。状態と接続からeno1が
ネットワークに接続されていることが分かります。

■詳細なデバイス情報を表示

デイバイスのMACアドレス、IPアドレス、MTUなどの詳細を確認するには、
「nmcli device」に「show」を付けて実行します。
[root@Tiger ~]# nmcli device show
GENERAL.デバイス: eno1
GENERAL.タイプ: ethernet
GENERAL.ハードウェアアドレス: 00:0C:29:37:80:B6
GENERAL.MTU: 1500
GENERAL.状態: 100 (接続済み)
GENERAL.接続: eno1
GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.キャリア: オン
IP4.アドレス[1]: 192.168.0.36/24
IP4.ゲートウェイ: 192.168.0.1
IP4.DNS[1]: 192.168.0.1
IP6.アドレス[1]: fe80::20c:29ff:fe37:80b6/64
IP6.ゲートウェイ:

GENERAL.デバイス: lo
GENERAL.タイプ: loopback
GENERAL.ハードウェアアドレス: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.状態: 10 (管理無し)
GENERAL.接続: --
GENERAL.CON パス: --
IP4.アドレス[1]: 127.0.0.1/8
IP4.ゲートウェイ:
IP6.アドレス[1]: ::1/128
IP6.ゲートウェイ:

「nmcli device show」だけでは複数のNICが存在した場合、
そのすべての状態を表示してしまいます。
しかし、インタフェース名を指定することで出力を絞ることができます。

[root@Tiger ~]# nmcli device show eno1
GENERAL.デバイス: eno1
GENERAL.タイプ: ethernet
GENERAL.ハードウェアアドレス: 00:0C:29:37:80:B6
GENERAL.MTU: 1500
GENERAL.状態: 100 (接続済み)
GENERAL.接続: eno1
GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.キャリア: オン
IP4.アドレス[1]: 192.168.0.36/24
IP4.ゲートウェイ: 192.168.0.1
IP4.DNS[1]: 192.168.0.1
IP6.アドレス[1]: fe80::20c:29ff:fe37:80b6/64
IP6.ゲートウェイ:

■接続情報の変更
・IPアドレス・ゲートウェイの変更
インタフェースに割り当てたIPアドレスやゲートウェイを変更するには、
「nmcli connection」に「modify」を指定します。

下記例では、IPアドレス192.168.0.36/24、ゲートウェイが192.168.0.1が
割り当てられている環境で、eno1のIPアドレスを192.168.0.20/24、
ゲートウェイを192.168.0.254に変更しています。
[root@Tiger ~]# nmcli connection modify eno1 ipv4.addresses "192.168.0.20/24 192.168.0.254"
[root@Tiger ~]# nmcli connection down eno1 && nmcli connection up eno1

「nmcli connection down eno1」が従来のifdown、
「nmcli connection up eno1」がifupに相当し、eno1を再起動しています。

・DNS・静的ルーティング変更
DNSサーバーと静的ルーティングを変更するには「ipv4.dns」、「ipv4.routes」を指定します。

下記の例では、eno1のDNSサーバーのIPアドレスを「8.8.8.8」、「4.4.4.4」を指定しています。
[root@Tiger ~]# nmcli connection modify eno1 ipv4.dns "8.8.8.8 4.4.4.4"
[root@Tiger ~]# nmcli connection down eno1 && nmcli connection up eno1

下記の例では、静的ルーティングとして、「10.0.0.0/24」のネットワークアドレスで
ルーターのIPアドレス「10.0.0.1」を指定しています。
[root@Tiger ~]# nmcli connection modify eno1 ipv4.routes "10.0.0.0/24 10.0.0.1"
[root@Tiger ~]# nmcli connection down eno1 && nmcli connection up eno1

Linuxメモリの仕組みを知る|freeコマンドの読み方とメモリ不足時の対処法

2012年10月11日
「サーバーが遅いので、メモリが足りているか確認したい」
「freeコマンドの出力を見ても、どの数値が本当の空き容量なのかわからない」

Linuxのメモリ管理は、バッファやキャッシュの仕組みを理解しないと正しく読み解けません。freeの出力で「used」が高くても、実際にはキャッシュが大半を占めていて問題ないケースがほとんどです。

この記事では、Linuxのメモリの仕組みを基礎から解説し、freeコマンドの各項目の意味と正しい読み方を紹介します。
/proc/meminfoによる詳細確認、スワップの監視方法、メモリ不足時の対処法まで網羅します。
RHEL 9.4 / CentOS 7で動作確認済みの実行例付きです。

この記事のポイント

・free -h でメモリの使用状況を人間が読みやすい単位で確認できる
・available列が実質的な空きメモリ(buff/cache解放可能分を含む)
・/proc/meminfoでキャッシュ・スワップの内訳を詳細に把握できる
・スワップが常時発生するならメモリ増設を検討すべきサイン

続きを読む "Linuxメモリの仕組みを知る|freeコマンドの読み方とメモリ不足時の対処法"

sync

2010年6月 9日

キャッシュ(メモリ)の内容をディスクに書き込む

■-- 文法 --■

sync

   例)
    sync
     キャッシュの内容をディスクに書き込む
       ※▲はスペースを表してます。


■ 説明
syncコマンドは任意にキャッシュの内容をディスクに書き込むコマンドです。
syncコマンドはメモリ内に存在するデータでありながら、ディスクに存在しない
データをディスクに書き込むコマンドになります。
実行するにはオプションなしでsyncコマンドを実行します。

また、shutdownコマンド、rebootコマンド、haltコマンドを実行した場合も
自動的に実行されるようになっています。

※補足
処理を高速に実現する為には、処理の実行及び、実行結果をそのまま
ディスクに書き込む事は得策ではないため、通常のOSではメモリにデータを書き込み、
CPUの不可やI/O(ハードディスクやメモリ)の利用状況を判断しながら自動的に
ディスクに書き込みを行うようになっています。


■ 実行例

▼キャッシュ(メモリ)の内容をディスクに書き込む
[root@Tiger ~]# sync ←syncコマンドを実行して、メモリ内のデータをディスクに書き込みます。

■ 関連記事
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら

chkconfigコマンドの使い方|RHEL7以降はsystemctlで代替【対応表付き】

2010年6月 8日
「chkconfig コマンドを打ったのに、command not found エラーが出てしまった...古いネットの記事だったらしい 」
最近のLinux環境(RHEL 9やUbuntuなど)を触り始めた方が、必ずと言っていいほど直面するエラーです。

この記事では、自動起動を設定する chkconfig コマンドの基本的な使い方に加え、現代のLinuxで標準となっている「systemctl」コマンドでの代替手順までを網羅して解説します。

chkconfigコマンドとは?(なぜ最近は使えないのか)

chkconfig は、Linuxが起動する際に「どのサービス(Webサーバーやデータベースなど)を自動で立ち上げるか」を設定するためのコマンドです。

しかし、これは「SysVinit(シスブイイニット)」という古い起動システムを採用していたCentOS 6などの時代のコマンドです。

現代のRHEL 7/8/9、AlmaLinux、Ubuntuなどでは、より高速で並列処理が得意な「systemd(システムディー)」という新しい仕組みに完全に移行しています。そのため、現代の環境で自動起動を設定する場合は、chkconfig ではなく systemctl コマンドを使用するのが現場の常識となっています。

続きを読む "chkconfigコマンドの使い方|RHEL7以降はsystemctlで代替【対応表付き】"

telinit

2010年6月 7日

ランレベルを切り替える

■-- 文法 --■

telinit [runlevel]

   例)
    runlevel 5
     ランレベルを5に変更
       ※▲はスペースを表してます。

■ 説明
telinitコマンドはランレベルを切り替えるコマンドです。
telinitコマンドを実行するには設定したいランレベルを
引数として指定し、実行します。

また、telinitコマンドの実行にはroot権限が必要になり、
設定後は再起動して設定を有効にする必要があります。


■ 主なオプション

なし

■ 実行例

[pakira@Tiger ~]$ su - ←rootにユーザ切り替えを行う
パスワード:      ←rootパスワードを入力する(パスワードは表示されません)
[root@Tiger ~]# runlevel ←現在のランレベルを確認します。
N 3  ←現在のランレベルは「3」に設定されています。
[root@Tiger ~]# telinit 5 ←ランレベルを5に設定します。
[root@Tiger ~]# runlevel ←設定後のランレベルを確認します。
3 5  ←ランレベルが「5」に変更されます。


■ ランレベルとモード
レベル:0 停止
レベル:1 シングルユーザモード
レベル:2 マルチユーザモード(テキストログイン、NFSサーバーは停止)
レベル:3 マルチユーザモード(テキストログイン)
レベル:4 未使用
レベル:5 マルチユーザモード(グラフィカルログイン)
レベル:6 再起動(リブート)
レベル:S シングルユーザモード(/etc/rc.d/rc.sysinitを読み込む)


■関連記事
ランレベルを表示する
runlevelコマンドの詳細はこちら
suコマンドの詳細はこちら

runlevel

2010年6月 7日

現在のランレベルと変更前のランレベルを表示する

■-- 文法 --■

runlevel

   例)
    runlevel
     現在のランレベルと変更前のランレベルを表示する
       ※▲はスペースを表してます。

■ 説明
runlevelコマンドは現在のランレベルと変更前のランレベルを表示コマンドです。
ランレベルとは、Linuxの動作モードを表し、Linuxではランレベルがいくつか
定義されていて、ランレベルを変更することによって Linuxの動作を変えることができます。
ちなみに起動時のデフォルトランレベルは、/etc/inittabに記述されており、
runlevelコマンドを実行する場合にはrootでなければなりません。


■ 主なオプション

なし

■ 実行例

▼ 現在のランレベルと変更前のランレベルを表示する
[root@Tiger ~]# runlevel ←ランレベルを表示します。
5 3  ←現在のランレベルは「3」です。

行頭の「5」は現在のランレベルにする前のランレベルが表示され、
前回ランレベルがない場合は「N」と表示されます。


■ ランレベルとモード
レベル:0 停止
レベル:1 シングルユーザモード
レベル:2 マルチユーザモード(テキストログイン、NFSサーバーは停止)
レベル:3 マルチユーザモード(テキストログイン)
レベル:4 未使用
レベル:5 マルチユーザモード(グラフィカルログイン)
レベル:6 再起動(リブート)
レベル:S シングルユーザモード(/etc/rc.d/rc.sysinitを読み込む)

■関連記事
runlevelコマンドの詳細はこちら
ランレベルを表示する

pstree

2010年6月 3日
動作中のプロセスをツリー形式に表示する

■-- 文法 --■

pstree [オプション] [ プロセスID or ユーザ名 ]

   例)
    pstree
     動作中のプロセスをツリー形式に表示する
       ※▲はスペースを表してます。

■ 説明
動作中のプロセスをツリー形式に表示するコマンドです。


■ 主なオプション

-a コマンドライン引数も表示する
-c 同じサブツリーを圧縮して表示しない
-G グラフィカルに表示する
-h 現在のプロセスのツリーを強調して表示する
-n プロセスIDでソートして表示する
-p プロセス IDも表示する

■ 実行例

▼ ツリー形式で表示する
[pakira@Tiger ~]$ pstree
init-+-atd
     |-auditd-+-audispd---{audispd}
     |        `-{auditd}
     |-automount---4*[{automount}]
     |-crond
     |-events/0
     |-gpm
     |-httpd-+-9*[httpd]
     |       `-12*[rotatelogs]
     |-khelper
     |-klogd
     |-ksoftirqd/0
     |-kthread-+-aio/0
     |         |-ata/0
     |         |-ata_aux
     |         |-cqueue/0
     |         |-kacpid
     |         |-kauditd
     |         |-kblockd/0
     |         |-kgameportd
     |         |-khubd
     |         |-2*[kjournald]
     |         |-kmpath_handlerd
     |         |-kmpathd/0
     |         |-kpsmoused
     |         |-kseriod
     |         |-ksnapd
     |         |-kstriped
     |         |-kswapd0
     |         `-2*[pdflush]
     |-migration/0
     |-6*[mingetty]
     |-mysqld_safe---mysqld---8*[{mysqld}]
     |-postmaster-+-postmaster
     |            `-postmaster---postmaster
     |-proftpd
     |-smartd
     |-sshd---sshd---sshd---bash---pstree
     |-syslogd
     |-udevd
     |-watchdog/0
     `-xinetd

LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方

2007年9月19日
「このサーバー、CentOSの何なの? RHELなの? バージョンいくつ?」
「引き継ぎドキュメントがなくて、目の前のLinuxサーバーが何者なのか分からない」
サーバーの運用引き継ぎやトラブル対応で、OSの種類やバージョンが分からず困った経験はないでしょうか。

この記事では、LinuxのOSバージョンやカーネル情報を確認するコマンドを、用途別に整理して解説します。
uname/etc/os-releasehostnamectl の3つを押さえれば、RHEL系・Debian系を問わず、目の前のサーバーの正体をすぐに特定できます。

続きを読む "LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方"

dmesgコマンドでカーネルメッセージを確認する方法|-Tや-lの使い方とエラー対処も

2007年7月30日
「dmesgで何かエラーが出ていたはずだけど、どう調べればいいか分からない」
「サーバーが突然不安定になったけど、原因の手がかりをどこから探せばいいのか」
Linuxサーバーの運用で、ハードウェアやカーネルレベルの問題を調査する場面は必ず訪れます。

この記事では、Linuxの dmesg コマンドの基本的な使い方から、-T による人間が読めるタイムスタンプ表示、-l によるログレベル指定、--follow によるリアルタイム監視、さらに journalctl -k との使い分けや、ディスク障害・OOM Killer・NIC認識の実務での調査方法まで解説します。

続きを読む "dmesgコマンドでカーネルメッセージを確認する方法|-Tや-lの使い方とエラー対処も"

ntpdate

2007年6月12日

サーバーの時刻を合わせる

■-- 文法 --■

ntpdate タイムサーバー名(又はIPアドレス)

   例)
     ntpdate eric.nc.u-tokyo.ac.jp
     サーバーの時刻を合わせる
       ※▲はスペースを表してます。

■ 説明
ntpdateコマンドは、インターネットに存在するタイムサーバー(以下 NTPサーバー)へ接続し、自身の時刻を修正するコマンドです。サーバーの時刻がずれてしまうと、ファイルの更新日やメールの配信日時、バッチ処理などで、様々な問題が生じます。このような問題をさけるために、ntpdateコマンドを定期的に実行し、常に時刻を正確に保つことができます。このコマンドはスーパーユーザ権限で実行する必要があります。

続きを読む "ntpdate"

halt

2007年2月 5日

システムをシャットダウン(終了)、再起動する

■-- 文法 --■

halt▲(オプション)

   例)
     halt▲(オプション)
     システムを停止する
       ※▲はスペースを表してます。

■ 説明
haltコマンドはシステムを停止し、再起動やシャットダウンの準備をする
コマンドです。haltコマンドの引数に「-p」オプションを付加して実行することで、
システムを停止後に電源を落とすことができます。

また、haltコマンドは一般ユーザでも実行することが可能であり、
下記のとおりディストリビューションごとに動作が異なります。

一般ユーザでhaltコマンドを実行した場合の各ディストリビューションの挙動
RedHat系:一般ユーザで実行可能。ただし、リモートホストからコマンドを実行した場合は無視される
Vine Linux:rootユーザのパスワードを求め、正しい場合停止プロセスを実行
Turbolinux:rootユーザのパスワードを求め、正しい場合停止プロセスを実行
Debian GNU/Linux:一般ユーザでの実行不可
Plamo Linux:一般ユーザでの実行不可

haltコマンドとshutdownコマンドの違い
haltはshutdownコマンドが利用できない場合に利用されることが多く、
その多くは緊急停止時に実行されることが多いです。

shutdownはマルチユーザモードを配慮して、シャットダウン時には
使用しているユーザへシステム停止のアナウンスがターミナルを通じて
行われますが、haltコマンドの場合、これがなく即システム停止処理を行います。

通常のシステム停止には「shutdown」、緊急時のシステム停止は「halt」と覚えると良いでしょう。

続きを読む "halt"

sourceコマンドで設定ファイルを即時反映する方法|bashrcの読み込みとドットコマンド

2006年8月 2日
「.bashrcを編集したのに、設定が反映されない」 「ログアウトしてログインし直さないと、変更したPATHが有効にならない」 Linuxの設定ファイルを編集した後、変更を即座に反映させるのが source コマンドです。いちいちログインし直す必要がなくなるため、サーバー運用では日常的に使います。

この記事では、sourceコマンド(ドットコマンド)の使い方から、.bashrc.bash_profile の違い、シェルスクリプトでの活用方法まで実践的に解説します。

続きを読む "sourceコマンドで設定ファイルを即時反映する方法|bashrcの読み込みとドットコマンド"

envコマンドで環境変数を確認・設定する方法|export・printenvとの違いも

2006年7月31日
「環境変数を確認したいけど、envとprintenvとsetの違いが分からない」
「シェルスクリプトの1行目にある #!/usr/bin/env bash って何だろう?」
環境変数はLinuxのあらゆる場面で使われています。コマンドの検索パス、言語設定、ホームディレクトリなど、システムの動作を裏で制御する重要な仕組みです。

この記事では、env コマンドの実践的な使い方を解説します。
環境変数の一覧表示から、一時的な変数設定でのコマンド実行、exportprintenv との違い、#!/usr/bin/env の仕組みまで網羅しました。

続きを読む "envコマンドで環境変数を確認・設定する方法|export・printenvとの違いも"

setenvコマンドで環境変数を設定する方法|csh・tcshの書き方とbash exportとの違い

2006年7月29日
「setenvで環境変数を設定したはずなのに、ログインし直すと消えている」
「bashでは export を使うのに、csh では setenv? 違いがよく分からない」
Linuxサーバーの運用では、シェルの種類によって環境変数の設定方法が異なるため、混乱するエンジニアが少なくありません。

この記事では、csh/tcsh環境で環境変数を設定する setenv コマンドの使い方を解説します。基本的な書き方から、bashの export との違い、設定を永続化する方法、トラブル対処まで、実務で必要な知識をまとめました。

1. setenvコマンドとは? bashのexportとの違い

setenv は、csh(Cシェル)および tcsh で環境変数を設定するコマンドです。bash(Bourneシェル系)の export に相当します。

項目 csh / tcsh bash / sh / zsh
環境変数の設定 setenv 変数名 値 export 変数名=値
環境変数の削除 unsetenv 変数名 unset 変数名
環境変数の一覧表示 setenv(引数なし) env または printenv
区切り文字 スペース(変数名と値の間) =(イコール)
設定ファイル ~/.cshrc / ~/.tcshrc ~/.bashrc / ~/.bash_profile
最大の注意点は区切り文字の違いです。bashでは export HOME=/home/user と「=」を使いますが、cshでは setenv HOME /home/user と「スペース」で区切ります。「=」を使うとエラーになるため気をつけてください。

続きを読む "setenvコマンドで環境変数を設定する方法|csh・tcshの書き方とbash exportとの違い"

rebootコマンドでLinuxを再起動する方法|shutdownとの違いや安全な再起動手順も

2006年7月27日
「サーバーを再起動したいけど、rebootとshutdownのどちらを使えばいいの?」
「再起動前にやっておくべきことを確認したい」
サーバーの再起動は頻繁に行う操作ではありませんが、カーネルアップデートの適用や障害対応で必要になる場面があります。

この記事では、reboot コマンドでLinuxを再起動する方法を解説します。
基本的な使い方、shutdown -rとの違い、再起動前の安全な手順、systemctl rebootとの関係まで、現場で使える知識をまとめました。

※ rebootコマンドの実行にはroot権限が必要です。

続きを読む "rebootコマンドでLinuxを再起動する方法|shutdownとの違いや安全な再起動手順も"

shutdownコマンドでLinuxを安全にシャットダウン・再起動する方法|rebootとの違いも

2006年7月24日
「Linuxサーバーを安全にシャットダウンしたいけど、shutdown -h now と poweroff の違いがよく分からない」
「他のユーザーがログインしている状態で、いきなり再起動して大丈夫?」
サーバーの停止・再起動は、操作を間違えるとデータ破損やサービス障害に直結する、責任の重い作業です。

この記事では、Linuxの shutdown(シャットダウン)reboot(リブート) コマンドの実践的な使い方を解説します。
時間指定やwall通知、shutdown -c によるキャンセル、systemctl poweroff / systemctl reboot との使い分け、本番サーバーでの安全な停止手順まで、現場で必要な知識をまとめました。

続きを読む "shutdownコマンドでLinuxを安全にシャットダウン・再起動する方法|rebootとの違いも"

logoutコマンドでLinuxからログアウトする方法|exitとの違いやセッション管理も

2006年7月23日
「logoutとexitの違いがよく分からない」
「SSH接続を切断する正しい方法を知りたい」
Linuxからログアウトする操作は基本中の基本ですが、logoutとexitの違いを正しく理解している方は意外と少ないです。

この記事では、logout コマンドでLinuxからログアウトする方法と、exit コマンドとの違いを解説します。
基本的な使い方、Ctrl+Dによるログアウト、SSH接続でのセッション管理、suで切り替えた場合の挙動、.bash_logoutの役割まで、現場で役立つ知識をまとめました。

続きを読む "logoutコマンドでLinuxからログアウトする方法|exitとの違いやセッション管理も"

exit

2006年7月22日

ログアウトする

■-- 文法 --■

exit

   例)
     eixt
     ログアウトする
       ※▲はスペースを表してます。

■ 説明
exitコマンドは、Linuxシステムからログアウトする際に使用するコマンドです。
同じログアウトコマンドにlogoutコマンドがあります。

logoutコマンドは、サブシェルを使用できませんが、exitコマンドならサブシェルを実行できます。
ログインシェルを利用していない状態でlogoutを実行すると、ログアウトすることが出来ませんが、
exitコマンドは、現在利用しているシェルのプロセスを終了させ、最後にログインシェルを
終了することでログアウトすることが出来ます。

続きを読む "exit"

hostnameコマンドでホスト名を確認・変更する方法|hostnamectlの永続設定も

2005年10月 9日
「サーバーのホスト名を確認したいけど、どのコマンドを使えばいいかわからない」
「hostnameコマンドで変更したのに、再起動したら元に戻ってしまった」

ホスト名はネットワーク上でサーバーを識別するための名前です。
この記事では、hostnameコマンドの基本から、hostnamectlによる永続的な変更、FQDN(完全修飾ドメイン名)の確認まで、実務で必要な操作を網羅します。

続きを読む "hostnameコマンドでホスト名を確認・変更する方法|hostnamectlの永続設定も"

domainname

2005年10月 8日

サーバーのドメイン名を表示、設定する

■-- 文法 --■

domainname (ドメイン名)

     例)
     domainname▲pakira
     ドメイン名を表示する
       ※▲はスペースを表してます。

■ 説明
domainnameコマンドは、NISドメイン名を表示、設定することができます。NISドメイン名を設定するには、domainnameコマンド名の引数にドメイン名を指定して実行することで、設定、変更することができます。

ただし、domeinnameコマンドで確認、設定できるのは、NIS/YPのドメイン名になります。DSNドメイン名とはことなりますので、注意してください。

続きを読む "domainname"

dateコマンドの使い方|日付・時刻の表示から書式指定・設定変更まで

2005年10月 8日
「ログのタイムスタンプを特定の形式で取得したい」
「シェルスクリプトで日付付きファイル名を作りたい」
こうした場面で欠かせないのが、dateコマンドです。

この記事では、dateコマンドの基本的な使い方から書式指定、相対日付の指定、シェルスクリプトでの活用法まで、実務で必要な知識をまとめて解説します。

続きを読む "dateコマンドの使い方|日付・時刻の表示から書式指定・設定変更まで"

historyコマンドでコマンド履歴を表示・検索する方法|日時表示や削除も

2005年10月 6日
「historyコマンドで過去に打ったコマンドを確認したいけど、いつ実行したか分からない」
「さっき打った長いコマンドをもう一度使いたいのに、思い出せない」
Linuxでの作業中、こうした場面は日常的に起こります。

この記事では、Linuxの history コマンドを使ってコマンド履歴を表示・検索・削除する実践的な方法を解説します。
基本的な履歴表示だけでなく、実行日時の表示(HISTTIMEFORMAT)、履歴の検索(Ctrl+R)、重複排除(HISTCONTROL)、セキュリティ対策まで、現場で役立つテクニックをまとめました。

続きを読む "historyコマンドでコマンド履歴を表示・検索する方法|日時表示や削除も"