Linuxtips

HOME > Linuxtips

Linuxtips:記事リスト

Linuxtipsのカテゴリーには以下の記事がリストされています。

Postfix設定:mynetworksについて

2023年5月25日
Postfixのmynetworks設定は、main.cfファイルで設定するパラメータで
Postfixが信頼するネットワークの範囲を指定します。

これは、Postfixが受信したメールの送信元IPアドレスが、
信頼できるネットワーク内のものかどうかを判断する際に使用されます。

mynetworksにリストされたIPアドレスから送信されたメールは、
通常の認証手段を必要とせずに、Postfixから中継されることが許可されます。

例えば、次のように設定します。

mynetworks = 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8


この例では、 Postfixはlocalhost(127.0.0.0/8)、
192.168.x.xネットワーク(192.168.0.0/16)、
10.x.x.xネットワーク(10.0.0.0/8)からのメールを信頼します。

mynetworksは、スパム送信者による悪用を防ぐために重要なので、
通常、ローカルネットワーク内のIPアドレスやきちんと信頼できる
ネットワークの範囲を指定することが重要です。

Dovecotのバージョンを確認する

2023年2月26日

Dovecotのバージョンを確認するには、
dovecotコマンドに「--version」オプションを付けて実行します。

$ dovecot --version
2.3.16 (7e2e900c1a)

上記例では、「2.3.16 (7e2e900c1a)」と表示され、
Dovecotのバージョンが2.3.16ということが分かります。

SWAP領域を拡張する(システム再起動・サービス停止なし)

2020年5月14日
SWAP領域をシステム再起動やサービス停止をせずに拡張する方法を紹介ます。
下記の様に、メモリ不足によりエラーになった場合などに有効です。
実行環境は、CentOS7.6。

5月 14 10:02:02 MAIL-SV-001 clamd[4758]: daemonize() failed: Cannot allocate memory
5月 14 10:02:03 MAIL-SV-001 systemd[1]: Failed to start clamd scanner (amavisd) daemon.


SWAP領域拡張手順

1.システムメモリ状況を確認します。
SWAP領域の空きが94MBしかないことが分かります。

# free -h
total used free shared buff/cache available
Mem: 1.8G 602M 668M 2.0M 566M 1.1G
Swap: 2.0G 1.9G 94M


続きを読む "SWAP領域を拡張する(システム再起動・サービス停止なし)"

CentOS7でネットワークデバイス名を変更する

2020年3月 7日
CentOS7は、接続されているネットワークデバイスによって
任意の名前を付けるようになりました。
例としては「eno1」、「eno2」や、「p4p2」など本当にバリエーションは様々です。
※CentOS6系では、eth0、eth1と付けていました。

しかし、この新しいネットワークデバイス名だと
システム的に不具合がある場合があります。
例えば、古いソフトウェアを使用したいという場合、
eth0やeth1でないと正しく動作しないというケースです。

そのような場合は、ネットワークデイバイス名を
従来のCentOS6系のものに編集することで対応できます。

現在のネットワーク状況を確認

下記例では、ネットワークデバイス名がp4p2になっています。
これをeth0に変更します。

# ip addr
1: lo: 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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: p4p2: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 58:8a:5a:29:2b:ba brd ff:ff:ff:ff:ff:ff
inet 192.168.0.37/24 brd 192.168.0.255 scope global noprefixroute p4p2
valid_lft forever preferred_lft forever
inet6 fe80::5a8a:5aff:fe29:2bba/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 9c:30:5b:2b:32:6f brd ff:ff:ff:ff:ff:ff


/etc/default/grubファイルの編集

/etc/default/grubファイルを編集します。
GRUB_CMDLINE_LINUXの行に「net.ifnames=0」と「biosdevname=0」を追加します。
編集後は「:wq」で保存終了します。

# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_tiger/root
rd.lvm.lv=centos_tiger/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"


続きを読む "CentOS7でネットワークデバイス名を変更する"

Linux起動パフォーマンスを確認する(systemd-analyze)

2020年2月19日
systemdを採用しているLinuxシステムで
起動パフォーマンスを確認したい場合には、systemd-analyzeを使用します。

systemd-analyzeを使用するには、
systemdを採用しているLinuxシステムで
root権限、またはsudo権限を持つユーザーが必要です。

systemd-analyzeでsystemdのパフォーマンス分析

$ sudo systemd-analyze
Startup finished in 9.525s (kernel) + 31.979s (initrd) + 3min 56.751s (userspace) = 4min 38.256s


上記の実行例の結果は次の通りになります。
・カーネル (kernel):9.525s
・初期RAMディスク(initrd) :31.979s
・ユーザースペース:3min 56.751s
・合計:4min 38.256s

続きを読む "Linux起動パフォーマンスを確認する(systemd-analyze)"

ソースファイルインストールしたものをアンインストール(make uninstall)するには

2020年1月28日
ソースファイル、ソースコード(tar.gz)でインストールしたソフトは、
「make uninstall」で削除できます。
しかし、すべてのソフトウェアが「make uninstall」に対応していて、
削除出来るわけではなく、むしろ削除できない方が多いのです。

「make uninstall」は、実行ファイルを削除しているに過ぎないので、
手作業で同じ作業を行うことで「make uninstall」に対応していない
ソフトウェアのアンインストールが可能になります。

どちらの実行にもroot(スーパーユーザー)権限が必要になります。

make uninstallでアンインストールする

$ su -   ←root権限になります。 パスワード:         ←rootパスワードを入力します(入力するパスワードは表示されません) # /usr/local/pgsql/bin/psql -V ←バージョンを確認します。 psql (PostgreSQL) 10.5 # systemctl stop postgresql.service ←PostgreSQLを停止します。 # cd /usr/local/src/postgresql-10.5/ ←ソースファイルを展開しているディレクトリに移動します。 # make uninstall ←make uninstallでアンインストールを実行します。 make -C doc uninstall make[1]: ディレクトリ `/usr/local/src/postgresql-10.5/doc' に入ります make -C src uninstall make[2]: ディレクトリ `/usr/local/src/postgresql-10.5/doc/src' に入ります make -C sgml uninstall make[3]: ディレクトリ `/usr/local/src/postgresql-10.5/doc/src/sgml' に入ります rm -f '/usr/local/pgsql/share/doc//html/'* '/usr/local/pgsql/share/man'/man1/* '/usr/local/pgsql/share/man'/man3/* ' /usr/local/pgsql/share/man'/man7/* make[3]: ディレクトリ `/usr/local/src/postgresql-10.5/doc/src/sgml' から出ます make[2]: ディレクトリ `/usr/local/src/postgresql-10.5/doc/src' から出ます make[1]: ディレクトリ `/usr/local/src/postgresql-10.5/doc' から出ます make -C src uninstall 〜中略〜 rm -f '/usr/local/pgsql/lib/pgxs/src'/Makefile.global '/usr/local/pgsql/lib/pgxs/src' /Makefile.port '/usr/local/pgsql/lib/pgxs/src' /Makefile.shlib '/usr/local/pgsql/lib/pgxs/src'/nls-global.mk make[1]: ディレクトリ `/usr/local/src/postgresql-10.5/src' から出ます make -C config uninstall make[1]: ディレクトリ `/usr/local/src/postgresql-10.5/config' に入ります rm -f '/usr/local/pgsql/lib/pgxs/config/install-sh' rm -f '/usr/local/pgsql/lib/pgxs/config/missing' make[1]: ディレクトリ `/usr/local/src/postgresql-10.5/config' から出ます


続きを読む "ソースファイルインストールしたものをアンインストール(make uninstall)するには"

CentOS8の32bit版は存在する?

2019年12月25日

【結論】CentOS8の32bit版は、現在存在しません

CentOS7では、有志が32bit版をリリースしていましたが、
CentOS8では、2019年12月25日現在、32bit版はリリースされていません。
http://isoredirect.centos.org/altarch/8

今後、リリースされる可能性があるかもしれませんが、今のところ不透明です。

■CentOS7 32bit版
http://mirror.centos.org/altarch/7/isos/i386/

続きを読む "CentOS8の32bit版は存在する?"

CentOS8 カーネルバージョン(kernel version)を確認する

2019年12月17日
CentOS8のカーネルバージョン(kernel version)を確認する方法は、いくつかあります。
今回は、それらの確認方法を紹介します。

CentOS8.0をインストールした直後の
カーネルバージョン(kernel version)は、4.18
になります。

CentOS8のカーネルバージョン(kernel version)をumameで確認する

umameコマンドにオプション「-a」を付与して実行すると、
すべての情報を表示します。
カーネルバージョンのみ表示したい場合は、
オプション「-r」を付与します。

$ uname -a Linux Tiger 4.18.0-80.el8.x86_64 #1 SMP Tue Jun 4 09:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux $ uname -r 4.18.0-80.el8.x86_64


続きを読む "CentOS8 カーネルバージョン(kernel version)を確認する"

CentOS7 Hostname(ホスト名)を変更する

2019年12月12日
CentOS7でHostname(ホスト名)を変更する方法を紹介します。
変更方法にはいくつか種類があります。

CentOS7のHostname(ホスト名)を一時的に変更する

サーバー起動中のみ変更したHostname(ホスト名)が有効になる方法です。
再起動すると元に戻ります。実行にはhostnameコマンドを使用します。

$ su - ←rootになります。 パスワード: 最終ログイン: 2019/10/22 (火) 18:55:57 JST日時 tty1 # hostname ←hostnameコマンドを実行します。 Tiger ←現在のホスト名を表示します。 # hostname Jaguar ←ホスト名を一時的にJaguarに変更します。 # hostname ←再度hostnameコマンドを実行します。 Jaguar ←ホスト名がJaguarに変更されています。


続きを読む "CentOS7 Hostname(ホスト名)を変更する"

CentOS 古いカーネルを削除する(boot領域を確保)

2019年12月 9日
yum updateなどでシステムを更新し続けていると、
過去更新したカーネルが/boot領域に蓄積され、
容量を圧迫してしまい、更新が出来なくなくなる場合があります。

そのような場合は、古いカーネルを削除することで解決できます。

ちなみに、Red Hatでは下記のようにアナウンスされています。
新しいカーネルで問題がある可能性を考慮し、古いカーネルの維持を強くお薦めします。
アップグレードの実行

これは、カーネルアップデートした後に、
万が一問題が発生しても、あえて削除せず古いカーネルを残す事で、
元に戻せるようにしています。
しかし、旧カーネルを残した状態で、新カーネルの動作確認が充分にできれば、
古いカーネルは削除しても問題ありません。

古いカーネルの削除を実行

1./boot領域のサイズを確認します。

$ df -h /boot ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/sda1 497M 232M 266M 47% /boot


2.インストールされているカーネルの確認をします。

$ rpm -q kernel kernel-3.10.0-957.1.3.el7.x86_64 kernel-3.10.0-957.21.3.el7.x86_64 kernel-3.10.0-957.27.2.el7.x86_64 kernel-3.10.0-1062.4.3.el7.x86_64 kernel-3.10.0-1062.9.1.el7.x86_64


続きを読む "CentOS 古いカーネルを削除する(boot領域を確保)"

CentOS8をダウンロードする

2019年12月 6日
CentOS8が2019年09月24日にリリースされました。
2029年05月までのサポートがあり、10年サポートになっています。
本ページでは、CentOS8をダウンロードする手順を紹介します。

CentOS8のダウンロード手順動画

CentOS8のダウンロード手順を動画解説しました。

CentOS8がダウンロードできるサイト

CentOS8は、CentOS公式サイトから無償でダウンロードできます。

2019年12月5日現在、
公式サイトからダウンロードできる
CentOSのバージョンはCentOS8.0になり、
トップページからダウンロードページにアクセスできるようになっています。

CentOS公式サイトにアクセス後、「Get CentOS Now」をクリックします。
CentOS8_download00.jpg
その後、表示されるページに、
CentOS Linux DVD ISO」と「CentOS Stream DVD ISO」という
2つのアイコンがあり、「CentOS Linux DVD ISO」をクリックします。
CentOS8_download01.jpg
CentOS Linux DVD ISO」は、
CentOS7などと同様に従来形式で利用できるCentOS8になります。
通常はこちらをクリックします。

CentOS Stream DVD ISO」は、
CentOS8から新設された「CentOS Stream」というものになります。
これは開発版のような位置づけになり、RHELより先に新技術を導入し、
より多くの人の意見を取り入れようとする新たな試みになります。
一般的には、ローリングリリース版になります。

CentOS8とCentOS7の違いについては、↓のページをご確認ください。
CentOS8とCentOS7の違い、変更点のまとめ

下図の赤枠で囲っているリンクのどれかをクリックすれば、
CentOS8がダウンロードできます。
※どのリンクをクリックしても、同じCentOS8がダウンロードできます。
CentOS8_download04.jpg

続きを読む "CentOS8をダウンロードする"

Perlのパスとバージョンを確認する

2019年10月27日
LinuxでPerlのパスとバージョンを確認するには、
次のコマンドを実行することで可能です。

Perlのパスを確認する

Perlのパスを確認するには、whereisコマンドの引数にperlを指定して実行します。

$ whereis perl perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz


続きを読む "Perlのパスとバージョンを確認する"

\x(¥x)から始まるUnicode文字列を読めるようにする

2019年9月21日
Apacheのアクセスログや、Tripwireの改ざん検知ログ結果で、
\x(¥x)から始まるUnicode文字列を読めるようにする方法を紹介します。

例えば、下記のようなログが出力された場合、
Perlを利用することで 読むことが出来るようなります。

File system error. Filename: /usr/bin/pdgyjqltyz \xe3\x81\x9d\xe3\x81\xae\xe3\x82\x88\xe3\x81\x86\xe3\x81\xaa\xe3\x83\x95\ xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x82\x84\xe3\x83\x87\xe3\x82\xa3\xe3\x8 3\xac\xe3\x82\xaf\xe3\x83\x88\xe3\x83\xaa\xe3\x81\xaf\xe3\x81\x82\xe3\x82\x8a\ xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93


続きを読む "\x(¥x)から始まるUnicode文字列を読めるようにする"

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で言語ロケールを確認・設定する"

CentOS7でrootのSSHログインを無効化する

2019年3月31日
CentOS7環境下で、SSHを使用したrootのログインを禁止するには、
/etc/ssh/sshd_configファイルを編集します。

SSHは、暗号化された状態でリモート接続することができるサービスで、
sshdデーモンが提供しています。

CentOSでは、デフォルト環境のままだと、
SSHでのrootログインが行えてしまいます。
インターネットに公開するサーバーを構築する場合、
その設定のままだとセキュリティ上非常に好ましくないので
無効化する必要があります。

続きを読む "CentOS7でrootのSSHログインを無効化する"

CentOS7でfirewalldの確認と停止(ファイアウォール)

2019年3月30日

CentOS7のファイアウォールでは、これまでのCentOS6系で使用されていた
iptablesよりもfirewalldを使用することが推奨されています。

※CentOS7でもiptablesが使用できます。その場合、firewalldを停止する必要があります。
 逆に、firewalldを使用する場合は、iptablesを停止する必要があります。

インターネットに公開するサーバーでは、ファイアウォールは必須になりますが、
信頼できる内部ネットワーク、開発環境及びテスト環境では無効にしておいた方が
良い場合もあります。

本ページでは、CentOS7から推奨されているfirewalldの状態の確認と、
停止方法を紹介します。

続きを読む "CentOS7でfirewalldの確認と停止(ファイアウォール)"

CentOS7でSELinuxを無効化する

2019年3月29日
SELinuxとは、Linuxのセキュリティ機能の一種になります。
ディレクトリビューションではありません。
現在のLinuxシステムの問題点として挙がっているものに、
root(スーパーユーザー)の権限が強すぎるというものがあります。

正規のユーザーが、rootを使用する分には問題ないのですが、
万が一、不正ユーザーがrootを奪取した場合、
システムを完全に乗っ取られてしまい、被害が大きくなりすぎるのです。

そこで誕生したのがSELinuxになります。
アメリカ国家安全保障局 (NSA) が開発し、GPL下で提供しています。

機能を簡単に説明すると、rootの権限を弱くすることがSELinuxの役割になります。

rootに集中している権限を、ユーザーやプロセスごとに振り分けることで、
root権限を奪取されたとしても、被害を限定的に抑えるというのが目的になり、
前提として、サーバーに侵入された場合に、その機能が役立つというものです。
従って、サーバー侵入を防ぐというものではありません。

また、扱うデータの重要度や他のセキュリティ対策での防衛、
設定の複雑さなどからくるサーバー管理のしにくさなどを
総合的に鑑みて、敢えてSELinuxを無効にしているシステムも多く存在します。

CentOS7でSElinux(Security-Enhanced-Linux)を無効化する手順を紹介します。
SELinux無効化設定を行う前に、現在のSElinuxの状態を確認しましょう。

SELinuxの状態を確認するには、getenforceコマンドを使用します。
このコマンドを実行すると、SELinuxの状態が確認できます。
ステータスは、次の通りです。
Enforcing 有効な状態
Permissive 無効な状態であるが、SELinuxのログは記録している状態
Disabled 無効な状態

続きを読む "CentOS7でSELinuxを無効化する"

CentOS7バージョンアップ手順

2018年6月13日

CentOSを最新バージョンにアップデートする手順を紹介します。
本作業を行うことで、常に最新のCentOS を利用することが可能になります。

注意
実行タイミングやサーバー環境によっては、システムやアプリケーションの誤作動や
不具合、場合によっては、サーバー自体が起動しなくなる可能性があります。
そうなっても良いように、実行する場合は、必ずテスト環境(壊れても良い環境)で
事前確認を行ってください。

今回の例では、CentOS7.4を使用していますが、
他のバージョンでも基本的に手順は同じになります。


1.Linux のバージョンを確認します。
$ su -
パスワード:    ←rootパスワードを入力します(パスワードは入力しても表示されません)
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)


2.カーネルバージョンを確認します。
# uname -a
Linux Tiger 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux


3.カーネルをアップデート対象から除外する設定を行います。
バージョンアップの多くのトラブル原因は、
カーネルアップデートなので、取り敢えず除外します。
13 行目に「exclude=kernel*」を追加します。
# vi /etc/yum.conf
--------------------------------------------------------------------
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_repor
t_page.php?category=yum
distroverpkg=centos-release
exclude=kernel*  ←「exclude=kernel*」を追加します。
--------------------------------------------------------------------
編集後、「:wq」で保存終了します。


4.yumアップデートを実施します。
yum コマンドでアップデートを実施します。
途中、処理を続行するか問われるので「y」を入力します。
※表示される内容は、実行タイミングによって異なります。
--------------------------------------------------------------------
# yum update
読み込んだプラグイン:fastestmirror, langpacks
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/4): extras/7/x86_64/primary_db | 147 kB 00:00:03
(2/4): updates/7/x86_64 /primary_db | 2.0 MB 00:00:08

〜中略〜

libinput x86_64 1.8.4 -2.el7 base 142 k
libwayland-client x86_64 1.14.0-2.el7 base 32 k
libwayland-cursor x86_64 1.14.0 -2.el7 base 20 k
libwayland-server x86_64 1.14.0 -2.el7 base 38 k
llvm-private x86_64 5.0.0 -3.el7 base 20 M
lz4 x86_64 1.7.5 -2.el7 base 98 k
mesa-libwayland-egl x86_64 17.2.3 -8.20171019.el7 base 17 k
unbound-libs x86_64 1.6.6 -1.el7 base 405 k
volume_key-libs x86_64 0.3.9-8.el7 base 140 k

トランザクションの要約
============================================================
インストール 4 パッケージ(+20 個の依存関係のパッケージ)
更新 613 パッケージ  ←この辺りの数字は、実行タイミングによって異なります。

合計容量: 642 M
総ダウンロード容量: 641 M
Is this ok [y/d/N]: y  ←「y」を入力します。

〜中略〜

xorg-x11-server-common.x86_64 0:1.19.5-5.el7
xorg-x11-xinit.x86_64 0:1.3.4-2.el7
yum.noarch 0:3.4.3-158.el7.centos
yum-plugin-fastestmirror.noarch 0:1.1.31 -45.el7
yum-utils.noarch 0:1.1.31-45.el7

置換:
grub2.x86_64 1:2.02-0.64.el7.centos grub2 -tools.x86_64 1:2.02-0.64.el7.centos

完了しました!
--------------------------------------------------------------------


5.サーバーを再起動します。
# shutdown -r now


6.再起動後、Linux のバージョンを確認します。
下記の例では、CentOS7.5 にバージョンアップしていますが、
実行タイミングによってバージョンが異なる場合があります。
$ su -
パスワード:
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)


7.カーネルバージョンを確認します。
カーネルのバージョンはアップデートから除外しているので、変わっていません。
# uname -a
Linux Tiger 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux


8.カーネルのバージョンアップをします。
13 行目の「exclude=kernel*」行頭に「#」を追加します。
# vi /etc/yum.conf
--------------------------------------------------------------------
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_repor
t_page.php?category=yum
distroverpkg=centos-release
#exclude=kernel*    ←行頭に「#」を追加します。
--------------------------------------------------------------------
編集後、「:wq」で保存終了します。


9.yumアップデートを実施します。
yum コマンドでアップデートを実施します。
途中、処理を続行するか問われるので「y」を入力します。
※表示される内容は、実行タイミングによって異なります。
--------------------------------------------------------------------
# yum update
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp

〜中略〜

---> パッケージkernel-tools-libs.x86_64 0:3.10.0-693.el7 を更新
---> パッケージkernel-tools-libs.x86_64 0:3.10.0-862.3.2.el7 をアップデート
--> 依存性解決を終了しました。

依存性を解決しました

============================================================
Package アーキテクチャーバージョン リポジトリー 容量
============================================================
インストール中:
kernel x86_64 3.10.0-862.3.2.el7 updates 46 M
kernel-devel x86_64 3.10.0-862.3.2.el7 updates 16 M
更新します:
kernel-headers x86_64 3.10.0-862.3.2.el7 updates 7.1 M
kernel-tools x86_64 3.10.0-862.3.2.el7 updates 6.2 M
kernel-tools-libs x86_64 3.10.0-862.3.2.el7 updates 6.2 M

トランザクションの要約
============================================================
インストール 2 パッケージ  ←この辺りの数字や内容は、実行タイミングによって異なります。
更新 3 パッケージ

総ダウンロード容量: 81 M
Is this ok [y/d/N]: y ←「y」を入力します。

〜中略〜

検証中 : kernel-headers-3.10.0-693.el7.x86_64 7/8
検証中 : kernel-tools-libs-3.10.0-693.el7.x86_64 8/8

インストール:
kernel.x86_64 0:3.10.0-862.3.2.el7 kernel -devel.x86_64 0:3.10.0-862.3.2.el7

更新:
kernel-headers.x86_64 0:3.10.0-862.3.2.el7 kernel-tools.x86_64 0:3.10.0-862.3.2.el7
kernel-tools-libs.x86_64 0:3.10.0-862.3.2.el7

完了しました!
--------------------------------------------------------------------


10.サーバーを再起動します。
# shutdown -r now


11.カーネルバージョンを確認します。
カーネルがバージョンアップしています。
$ su -
パスワード:
[root@Tiger ~]# uname -a
Linux Tiger 3.10.0-862.3.2.el7.x86_64 #1 SMP Mon May 21 23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


本手順を実施することで、常に最新のCentOS を利用することが出来ます。
しかし、冒頭でも説明しましたが、アップデートによるトラブルが発生する場合も
ありますので、実施する際は、必ずテスト環境で問題がないことを確認してから、
本番環境で実施してください。

CentOS7のNICをCentOS6系のeth0にする

2018年4月 6日

CentOS7では、NICのパーティション名を自動で割り当てるよう仕様変更されています。
しかし、その仕様でNICを命名されると、一部正しく動作しないソフトウェアが存在します。
そのようなソフトウェアを利用したい場合、従来のCentOS6系で使用されているeth0に
NICの名前を変更します。

1.「/etc/default/grub」を編集します。
[root@Tiger src]# grep net.ifnames /etc/default/grub || sed '/^GRUB_CMDLINE_LINUX/s/\"$/ net.ifnames=0 biosdevname=0\"/g' /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_tiger/root rd.lvm.lv=centos_tiger/swap net.ifnames=0 rhgb quiet"

2.設定を反映させます。
[root@Tiger src]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-8680acc02b184dddaeb10d6dafc68539
Found initrd image: /boot/initramfs-0-rescue-8680acc02b184dddaeb10d6dafc68539.img
done

3.NICの設定ファイルをリネームします。
※ifcfg-p4p2 の「ip4p2」の箇所は環境によって異なりますので変更してください。
[root@Tiger src]# mv /etc/sysconfig/network-scripts/ifcfg-p4p2 /etc/sysconfig/network-scripts/ifcfg-eth0

4.デバイス情報を表示し、MACアドレスを確認します。
[root@Tiger ~]# nmcli device show
GENERAL.デバイス: p4p2
GENERAL.タイプ: ethernet
GENERAL.ハードウェアアドレス: 58:8A:5A:29:2B:BA ←控える
GENERAL.MTU: 1500
GENERAL.状態: 100 (接続済み)
GENERAL.接続: eth0
GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.キャリア: オン
IP4.アドレス[1]: 192.168.0.36/24
IP4.ゲートウェイ: 192.168.0.1
IP4.DNS[1]: 192.168.0.1
IP6.アドレス[1]: fe80::5a8a:5aff:fe29:2bba/64
IP6.ゲートウェイ: --

GENERAL.デバイス: wlan0
GENERAL.タイプ: wifi
GENERAL.ハードウェアアドレス: C6:A5:AA:5F:4B:0A
GENERAL.MTU: 0
GENERAL.状態: 30 (切断済み)
GENERAL.接続: --
GENERAL.CON パス: --

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.ゲートウェイ: --

5.NICのデバイスファイルを編集します。
3でリネームしたファイルを編集します。
[root@Tiger ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0         ←eth0に修正します。
HWADDR=58:8A:5A:29:2B:BA ←4で確認したMACアドレスを追加します。
UUID=22f748d6-6718-47ac-bc27-7188a419465f
DEVICE=eth0 ←eth0に修正します。
ONBOOT=yes
IPADDR=192.168.0.36
PREFIX=24
GATEWAY=192.168.0.1
DNS1=192.168.0.1

6.サーバーを再起動します。
[root@Tiger ~]# shutdown -r now

7.再起動後、NIC名をを確認します。
[root@Tiger ~]# nmcli device show


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

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

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

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

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

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

$ uname -r 3.10.0-693.11.6.el7.x86_64


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

cronのログファイル「/var/log/cron」を確認する

2017年11月14日
Linuxシステムで、
コマンドやプログラムを定期的に自動実行させる
スケジューリング機能にcronがあります。

cronを利用するには、crontabコマンドを使用しますが、
cornの実行結果のログを確認にするには、
/var/log/cronファイルを確認します。

crontabについては、下記ページをご確認ください。
crontabコマンド

続きを読む "cronのログファイル「/var/log/cron」を確認する"

yumでシステムアップデートする(カーネルは除く)

2017年9月22日
yumはrpmをインストールしたり、アップデートするコマンドです。
このyumを使用することで、Linuxシステムにインストールされている
すべてのパッケージをアップデートすることができます。

■yumのサブコマンド
yum check-update アップデート可能なパッケージを調査します。
yum update インストールされている全てのパッケージをアップデートします。
yum update パッケージ 指定したパッケージのみアップデートします。
yum upgrade システムをアップグレードします。
(CentOS7.1→CentOS7.4)
実質yum updateと同じ

yum updateにおいて、カーネルアップデートは行わないほうが無難です。
なぜなら、カーネルアップデートを行うと、
システムの再起動やサービスの停止措置が必要だったり、
最悪カーネルパニックが発生して、システムが起動しない場合があるからです。


■カーネルを除外してアップデートする
yum -y updateの後ろに「--exclude=kernel*」を指定して実行することで
カーネルをアップデート対象から除外することできます。

# yum -y update --exclude=kernel*

ただし、この方法だと毎回「--exclude=kernel*」を指定する必要があり、
指定し忘れてしまう危険性があります。

そこで、/etc/yum.confにカーネルアップデートを除外する設定を行うのがオススメです。

# vi /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
exclude=kernel* ←追加します。

追加したら「:wq」で保存終了します。

・カーネルのバージョンを確認します。
# uname -r
3.10.0-229.el7.x86_64

・CentOSのバージョンを確認します。
# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

・アップデート可能なパッケージを確認します。
アップデートリストを確認して、カーネルが対象になっていない事を確認します。
# yum check-update
jasper-libs.x86_64 1.900.1-31.el7 base
kbd.x86_64 1.15.5-13.el7 base
kbd-legacy.noarch 1.15.5-13.el7 base
kbd-misc.noarch 1.15.5-13.el7 base
kexec-tools.x86_64 2.0.14-17.el7 base
kmod.x86_64 20-15.el7_4.2 updates
kmod-libs.x86_64 20-15.el7_4.2 updates
kpartx.x86_64 0.4.9-111.el7 base
kpatch.noarch 0.4.0-1.el7 base
krb5-devel.x86_64 1.15.1-8.el7 base
krb5-libs.x86_64 1.15.1-8.el7 base
langtable.noarch 0.0.31-3.el7 base

・アップデートを実施します。
# yum update

・アップデート後のカーネルのバージョンを確認します。
# uname -r
3.10.0-229.el7.x86_64

・アップデート後のCentOSのバージョンを確認します。
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)  ←CentOS7.4にアップグレードしています。

・アップデート後にアップグレード可能なパッケージが存在しないことを確認します。
対象パッケージがなければ問題ありません。
# yum check-update

・ログファイルでもアップデート状況の確認が行なえます。
# less /var/log/yum.log
Sep 22 15:37:14 Updated: libgcc-4.8.5-16.el7.x86_64
Sep 22 15:37:15 Installed: 1:grub2-common-2.02-0.64.el7.centos.noarch
Sep 22 15:37:15 Updated: centos-release-7-4.1708.el7.centos.x86_64
Sep 22 15:37:16 Updated: setup-2.8.71-7.el7.noarch
Sep 22 15:37:19 Updated: filesystem-3.2-21.el7.x86_64
Sep 22 15:37:19 Updated: 1:emacs-filesystem-24.3-20.el7_4.noarch
Sep 22 15:37:19 Updated: libreport-filesystem-2.1.11-38.el7.centos.x86_64
Sep 22 15:37:19 Updated: 32:bind-license-9.9.4-51.el7.noarch
Sep 22 15:37:19 Updated: langtable-0.0.31-3.el7.noarch
Sep 22 15:37:20 Updated: langtable-data-0.0.31-3.el7.noarch
Sep 22 15:37:20 Installed: 1:grub2-pc-modules-2.02-0.64.el7.centos.noarch
Sep 22 15:37:20 Installed: firewalld-filesystem-0.4.4.4-6.el7.noarch
Sep 22 15:37:20 Updated: 2:vim-filesystem-7.4.160-2.el7.x86_64


カーネルアップデートを行わない場合でも、
何らかの不具合が発生する可能性がありますので、
アップデートを行う際は、事前に必ずテスト環境での検証を行うことが必要です。

yum upgradeは、「yum update --obsoletes」と同じ扱いになります。
CentOSでは、/etc/yum.confにobsoletes=1と設定されているため、
デフォルトで--obsoletesが有効の状態になっています。
結果的に、「yum update」も「yum upgrade」も同じ扱いになります。

CentOS7でログ容量制限を設定する

2017年8月 9日

ログが肥大化すると、システムファイルの空き容量が無くなり、
システムの動作に悪影響を及ぼします。
そのため、ログ容量を予め設定しておくのが一般的です。

CentOS7から採用されているjournaldは、デフォルトでファイルシステムの
10%がログの容量として割り当てられています。

また、journaldには、ログの肥大化を防ぐために、ログの最大サイズの指定して、
古いログを自動的に削除するログローテート機能、従来のsyslogデーモン、
カーネルログバッファ(kmsg)にログ転送するなどの機能があります。

■ログの容量制限をする
journaldで生成されるログの容量を制限するには、
「/etc/systemd/journald.conf」ファイルの「SystemMaxUse」パラメータを設定します。
下記例ではログの容量を256MBに制限しています。

# vi /etc/systemd/journald.conf
以下、ファイル内容
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# See journald.conf(5) for details

[Journal]
#Storage=auto
Storage=persistent
#Compress=yes
#Seal=yes
#SplitMode=login
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
SystemMaxUse=256M ←追加します。

追加したら「:wq」で保存終了します。

■journaldサービスを再起動します。
設定を変更したら、journaldサービスを再起動します。
# systemctl restart systemd-journald.service


■journaldで管理されているすべてのログ容量を確認する
journalctlコマンドに「--disk-usage」を付けて実行します。
# journalctl --disk-usage
Journals take up 24.0M on disk.

CentOS7でログ保存設定をする

2017年8月 8日

CentOS7のjournaldのログファイルは、/run/log/journalディレクトリに保存されます。
しかし、/runディレクトリは、tmpsファイルシステムでマウントされているため、
OSの再起動を行うと、/run/log/journalディレクトリ配下に保存されている
ログファイルは、削除されてしまいます。

# df -HT | grep tmpfs
devtmpfs devtmpfs 504M 0 504M 0% /dev
tmpfs tmpfs 514M 0 514M 0% /dev/shm
tmpfs tmpfs 514M 14M 501M 3% /run ←tmpfsでマウント
tmpfs tmpfs 514M 0 514M 0% /sys/fs/cgroup

そこで、OSを再起動してもログが削除されないようにするには、
journaldの設定ファイル「/etc/systemd/journald.conf」に
「Storage=persistent<」を追加します。


■ファイルを編集します。
# vi /etc/systemd/journald.conf
以下、ファイル内容
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# See journald.conf(5) for details

[Journal]
#Storage=auto
Storage=persistent ←追加する

追加したら「:wq」で保存終了します。


■journaldサービスを再起動します。
# systemctl restart systemd-journald.service

「Storage=persistent」設定を行うと、ログの保存先ディレクトリが、
「/run/log/journal」から「/var/log/journal/」に変更され、
その配下にmachine-id名が付与されたディレクトリが作成されます。
そのディレクトリ内にログが永続的に保存されます。

# ls -l /var/log/journal/
合計 0
drwxr-xr-x 2 root root 27 8月 8 15:40 c035188450f4455691b947425145773d

※「c035188450f4455691b947425145773d」がmachine-id名が作成されたディレクトリ
※machine-idは、/etc/machine-idファイルで確認できます。

また、/etc/systemd/journald.confファイルに「Storage=auto」を設定した場合、
「/var/log/journal/」ディレクトリが存在する場合は、「/var/log/journal/」に保存し、
存在しない場合は、「/run/log/journal」に保存します。

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)

Postfixのメールログを確認する

2017年7月25日

Postfixのログは、「/var/log/maillog」ファイルに出力されます。
1週間単位で自動ローテションされ、/var/log/maillogファイルの他に
「/var/log/maillog.1」〜「/var/log/maillog.4」までの4週間分を
歴として保持しています。

何かトラブルが発生した際、「/var/log/maillog」ファイルを
確認することで多くの原因を特定することができます。

■メールログファイル(/var/log/maillog)を確認する
# ls -l /var/log/maillog*
-rw------- 1 root root 1941316 7月 24 16:47 /var/log/maillog
-rw------- 1 root root 10497049 7月 23 04:02 /var/log/maillog.1
-rw------- 1 root root 10312833 7月 16 04:02 /var/log/maillog.2
-rw------- 1 root root 10810720 7月 9 04:02 /var/log/maillog.3
-rw------- 1 root root 9886779 7月 2 04:02 /var/log/maillog.4

■メールログファイルの内容を確認する
# tail /var/log/maillog
Jul 24 16:47:28 Mail_001_Enetmercury postfix/smtpd[30065]: warning: unknown[80.82.XX.XX]: SASL LOGIN authentication failed: authentication failure
Jul 24 16:47:29 Mail_001_Enetmercury postfix/smtpd[30065]: disconnect from unknown[80.82.XX.XX]
Jul 24 16:48:04 Mail_001_Enetmercury postfix/qmgr[1388]: 03D037E257: from=, size=20169, nrcpt=1 (queue active)
Jul 24 16:48:05 Mail_001_Enetmercury postfix/smtp[29975]: 03D037E257: to=, relay=none, delay=60457, delays=60456/0.01/0.87/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=gmail.co.jp type=MX: Host not found, try again)
Jul 24 16:49:44 Mail_001_Enetmercury postfix/qmgr[1388]: 813897E249: from=, size=15939, nrcpt=1 (queue active)
Jul 24 16:50:14 Mail_001_Enetmercury postfix/smtp[29975]: connect to aaa.com[63.240.XXX.XXX]: Connection timed out (port 25)
Jul 24 16:50:14 Mail_001_Enetmercury postfix/smtp[29975]: 813897E249: to=, relay=none, delay=60582, delays=60552/0/30/0, dsn=4.4.1, status=deferred (connect to aaa.com[63.240.178.216]: Connection timed out)
Jul 24 16:50:49 Mail_001_Enetmercury postfix/anvil[30067]: statistics: max connection rate 1/60s for (smtp:80.82.XX.XX) at Jul 24 16:47:27
Jul 24 16:50:49 Mail_001_Enetmercury postfix/anvil[30067]: statistics: max connection count 1 for (smtp:80.82.XX.XX) at Jul 24 16:47:27
Jul 24 16:50:49 Mail_001_Enetmercury postfix/anvil[30067]: statistics: max cache size 1 at Jul 24 16:47:27

MTAをSendmailからPostfixに変更する

2017年7月24日

MTAをSendmailからPostfixに変更する場合は、alternatives コマンドを実行します。
実行する際は、「--config」オプションに「mta」を指定します。

# alternatives --config mta

2 プログラムがあり 'mta' を提供します。

選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2 ←Postfixの2を入力します。

# alternatives --config mta

2 プログラムがあり 'mta' を提供します。

選択 コマンド
-----------------------------------------------
* 1 /usr/sbin/sendmail.sendmail
+ 2 /usr/sbin/sendmail.postfix

MTAがPostfixに変更されます。

最後に、sendmailを停止し、Postfixを起動します。


Postfixでメールキューを削除する

2017年7月23日

Postfixでメールキューを削除するには、postsuperコマンドで行なえます。

postsuperコマンドにオプション「-d」を付け、
引数にQueue IDを指定します。

Queue IDの確認は、「Postfixでメールキューの状態を確認する」で
紹介している「postqueue -p」コマンドで行えます。

■Queue IDが「CDDE97E240」のキューを削除する
# postsuper -d CDDE97E240
postsuper: CDDE97E240: removed
postsuper: Deleted: 1 message

ソフトウェアの不具合により、メールが溜まってしまった場合は、
postsuperコマンドに、オプション「-d ALL」を付け、一括削除します。
# postsuper -d ALL
postsuper: Deleted: 6 messages

Postfixでメールキューの内容を確認する

2017年7月22日

キュー内のメールは、postcatコマンドを使用することで
内容を確認することが出来ます。

実行方法は、postcatコマンドにオプション「-q」を付け、
引数にQueue IDを指定します。

Queue IDの確認は、「Postfixでメールキューの状態を確認する」で
紹介している「postqueue -p」コマンドで行えます。

■Queue IDが「178A27E250」のキュー内容を確認する
# postcat -q 178A27E250

Postfixでメールキューの状態を確認する

2017年7月21日

Postfixでメールキューの状態を確認するには、postqueueコマンドを使用します。
postqueueコマンドにオプション「-p」を付けて実行します。

■メールキューが存在する場合
# postqueue -p
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
106E07E25C 28536 Thu Jul 20 00:01:20 pakira2@XXXXXXXXXXXXX.net
(Host or domain name not found. Name service error for name=tarou.jp type=MX: Host not found, try again)
yamada@XXXXXXXX.jp

19DEC7E261 20997 Thu Jul 20 00:02:04 pakira2@XXXXXXXXXXXXX.net
(connect to mail.xn--v9juc834uywe0tghzh2y4d.com[157.107.91.16]: Connection timed out)
webmaster@XXXXXXXXXXXXXXX.com

E227E7E242 22135 Thu Jul 20 00:01:23 pakira2@XXXXXXXXXXXXX.net
(connect to linuxlike.com[141.8.230.20]: Connection timed out)
likelinux@XXXXXXXXXX.com

6EEF87E246 20181 Thu Jul 20 00:02:03 pakira2@XXXXXXXXXXXXX.net
(Host or domain name not found. Name service error for name=kkk.com type=MX: Host not found, try again)
kkkkkkkkk@XXX.com

-- 91 Kbytes in 4 Requests.


■メールキューが存在しない場合
# postqueue -p
Mail queue is empty


■溜まっているメールキューを強制的に送信するには
postqueueコマンドにオプション「-f」を付けて実行します。
# postqueue -f

Postfixで送信できないメールを保持する日数を設定する

2017年7月20日

Postfixで何らかの原因で送信できないメールを保持する日数を設定するには、
main.cfファイルに「maximal_queue_lifetime」を設定します。
デフォルトでは5日保持するようになっていますが、
これを設定する事で、任意の日数に設定できます。

下記例では、保持日数を3日に設定しています。
# vi /etc/postfix/main.cf

maximal_queue_lifetime = 3d

設定を保存終了後、設定ファイルの再読込が必要になります。

Postfixでメッセージの再送信時間を設定する

2017年7月19日

メッセージが何らかの原因で送信できなかった場合、
再送信する時間間隔を設定する事ができます。
設定は、Postfixの設定ファイル「main.cf」で行います。

デフォルトでは、60秒となっていますが、
transport_retry_timeを指定することで任意の間隔で
再送信することが出来ます。

下記例では、再送信時間を180秒に設定しています。
# vi /etc/postfix/main.cf

transport_retry_time = 180s

設定を保存終了後、設定ファイルの再読込が必要になります。

Postfixでメールサイズの制限を設定する

2017年7月18日

メールサイズの制限を設定するには、
Postfixの設定フィアル「main.cf」を編集します。
デフォルトでは、10240000までのサイズ制限となっていますが、
message_size_limit設定を追加することで、
任意のサイズに変更することができます。

下記例では、9.5MBに制限をしています。

# vi /etc/postfix/main.cf

message_size_limit = 9500000 ←追加します。

設定を保存終了後、設定ファイルの再読込が必要になります。

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

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

Apacheのアクセスログで接続クライアントのホスト名を記録する

2017年7月10日

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

接続クライアントをホスト名でアクセスログに記録するには、
httpd.confファイルか、httpd-default.confファイルの
「HostnameLookups」を編集します。

HostnameLookupsはデフォルトでは「Off」になっているため、
IPアドレスからホスト名への逆引きが実行されません。
これを「On」に変更することで、ホスト名でログに記録されるようになります。

# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off  ←「On」に変更します。

ただし、ログを出力する度に、逆引きが実行されるので、
パフォーマンスが低下してしまいます。
そこで、サーバー負荷が低い時間帯などにlogresolveコマンドを
使用して一括でホスト名変換する方法もあります。

設定後は、変更内容を反映させる為に、
Apacheの再起動または、設定ファイルの再読み込み処理が必要になります。

Apacheのカスタムログを設定する

2017年7月 9日
Apacheのカスタムログ設定を行うには、httpd.confファイルの
<IfModule log_config_module>〜</IfModule>ディレクティブを編集します。

LogFormatでは、ログの出力形式を指定できます。
デフォルトで「httpd.conf」ファイルに記述されているログフォーマットは、
「common」と「combined」の2つになります。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

上記の出力形式がデフォルトになり、不要なものがあれば削除し、
必要なものがあれば追加してカスタマイズします。
例えば、サーバーのプロセスIDを出力させたい場合は、「%P」を、
ポート番号を出力させたい場合は、「%p」を追加します。

設定可能な主な項目は下記の通りです。
これらの項目をダブルクオーテーション(")で囲って指定します。
フォーマットの中でダブルクオーテーションを記述したい場合は、
「¥」でエスケープして記述します。
%a アクセス元のIPアドレス
%A サーバー(Apache)のIPアドレス
%B 送信されたバイト数(ヘッダーは含まず)
%b 送信されたバイト数(ヘッダーは含まず)。0バイトの時は「-」
%f リクエストされたファイル名
%h リモートホスト名
%H リクエストのプロトコル名
%l クライアントの識別子
%m リクエストのメソッド名
%q リクエストに含まれるクエリー文字列。空白以外は「?」が付く。
%r リクエストの最初の行の値
%s レスポンスステータス
%S 最後のレスポンスのステータス
%t 時刻
%T 処理にかかった時間
%u 認証ユーザー名
%U リクエストのURLパス
%v リクエストに対するバーチャルホスト名
%V UseCanonicalNameによるサーバ名
%X 接続ステータス
%{クッキー名}C リクエストに含まれるクッキーの値
%{環境変数名}e 環境変数名の値
%{ヘッダー名}i リクエストに含まれるヘッダー名の値
%{ヘッダー名}o レスポンスに含まれるヘッダー名の値
%{メモ}n モジュールから渡されるメモの値
%{フォーマット}t フォーマットされた時刻


上記項目内で{}で囲んで記述されている項目があります。
例えば、「%{クッキー名}C」は、ヘッダーの中からクッキー名に
指定した値だけを出力します。

デフォルトで有効になっているアクセスログは、「common」になります。
これを「combined」に変更するには、httpd.confファイルの
「CustomLog "logs/access_log" common」の行頭に「#」を挿入して
コメントアウトし、「CustomLog "logs/access_log" combined」の
行頭にある「#」を削除します。

# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a
# container, they will be logged here. Contrariwise, if you *do*
# define per- access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog "logs/access_log" common  ←行頭に「#」を挿入します。

#
# If you prefer a logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
CustomLog "logs/access_log" combined  ←行頭の「#」を削除します。


設定後は、変更内容を反映させる為に、
Apacheの再起動または、設定ファイルの再読み込み処理が必要になります。

Apacheで接続クライアント数を設定する

2017年7月 8日

Apacheに同時接続するクライアント数を設定するには、
httpd.confファイル、またはhttpd-mpm.confファイルのMaxClientsを編集します。

MaxClientsの設定は、<IfModule mpm_prefork_module>〜</IfModule>、
または、<IfModule mpm_worker_module>〜</IfModule>の2箇所あります。
これは、使用しているApacheがどのMPMを採用しているかによって
設定箇所が変わります。

Workerはマルチスレッドとマルチプロセスのハイブリッド型になり、
Preforkよりも少ないサーバーリソースで多くのレスポンスに
対応することができるのが特徴です。

下記の環境では、Server MPMがPreforkなので、
<IfModule mpm_prefork_module>〜</IfModule>ディレクティブの
MaxClientsを設定します。
※CentOS環境ではデフォルトでPreforkを使用しています。

# /usr/local/apache2/bin/apachectl -V
Server version: Apache/2.2.31 (Unix)
Server built: Sep 28 2015 11:49:05
Server's Module Magic Number: 20051115:40
Server loaded: APR 1.5.2, APR-Util 1.5.4
Compiled using: APR 1.5.2, APR-Util 1.5.4
Architecture: 64-bit
Server MPM: Prefork

例では、httpd-mpm.confファイルを編集します。
# vi /usr/local/apache2/conf/extra/httpd-mpm.conf

Server MPMによって、「prefork MPM」か「worker MPM」の
MaxClientsの値を編集します。

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

設定後は、変更内容を反映させる為に、
Apacheの再起動または、設定ファイルの再読み込み処理が必要になります。

Apacheのポート番号を変更する

2017年7月 7日

Webサーバーは、一般的にTCP80番ポートを使用して
クライアントからのアクセス受け付け、Webサイトを表示します。

これらのポート番号は、世界的な規格で定められていますが、
何らかの理由で80番から変更したい場合は、
Apacheの設定ファイル(httpd.conf)を編集することで可能です。

# vi /usr/local/apache2/conf/httpd.conf

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

Listenに指定する番号を変更することで、ポート番号を変更します。

Listen 8080

上記の例では、Apacheのポート番号を「8080」に変更しています。
また、インターフェースごとにポート番号を設定したい場合には、
Listen 12.34.56.78:80のように「IPアドレス:ポート番号」と指定します。

設定後は、変更内容を反映させる為に、
Apacheの再起動または、設定ファイルの再読み込み処理が必要になります。

KeepAliveを利用してApacheのパフォーマンスを向上させる

2017年7月 6日

KeepAliveは、クライアントからのアクセスをキープして、
以後のアクセスはそのコネクションを利用して送信することで
パフォーマンスを向上させる機能です。

KeepAlive設定は、Apacheの設定ファイルhttpd.confファイルや、
httpd-default.confファイルで行います。
※Apacheのバージョンによって異なります。

下記実行例は、Apache2.2のものです。
# vi /usr/local/apache2/conf/extra/httpd-default.conf

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

↑KeepAliveを利用するには、「On」、利用しない場合は「Off」にします。

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

↑MaxKeepAliveRequestsは、コネクションあたりで
保持するリクエストの上限を設定します。

# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 5

↑KeepAliveTimeoutは、次のリクエストまでのコネクション保持時間です。
単位は秒になります。

KeepAliveTimeoutは、値が小さいとすぐにコネクションが切れてしまい、
逆に大きすぎると無駄なコネクションが確立されたままになり、
サーバーリソースの浪費につながります。

設定後は、変更内容を反映させる為に、
Apacheの再起動または、設定ファイルの再読み込み処理が必要になります。


接続中のプロセスが終了するのを待ってApacheを停止する

2017年7月 5日

Apacheの停止には、/etc/init.d/httpd stopを使用します。
しかし、stopを実行すると接続中のhttpdプロセスは強制的に終了してしまいます。
つまり、接続してきていたクライアントとの通信が強制的に切断してしまうのです。

そこで、接続中のプロセスが終了するまで待って、
停止する機能がApacheには実装されています。

クライアントとの通信が終了するまで待って再起動するには、
下記のように「graceful-stop」を指定します。
graceful-stopは、/etc/init.d/httpdスクリプトでは実行できず、
スクリプトの元となるapachectlファイルを実行する必要があります。

# /usr/local/apache2/bin/apachectl graceful-stop

graceful-stopを実行すると、利用されていないListen状態のプロセスが終了し、
使用中のプロセスは停止しない状態になります。

すべてのクライアントとの通信が終了するまで停止できませんので、
通信状況によっては、かなり待たなければならない場合があります。
しかし、通信接続保持を優先させる場合には効果的な機能となります。


接続中のプロセスが終了するのを待ってApacheを再起動する

2017年7月 4日

Apacheの再起動には、/etc/init.d/httpd restartを使用します。
しかし、これを実行すると接続中のhttpdプロセスは強制的に終了してしまいます。
つまり、接続してきていたクライアントとの通信が強制的に切断してしまうのです。

そこで、接続中のプロセスが終了するまで待って、
再起動する機能がApacheには実装されています。

クライアントとの通信が終了するまで待って再起動するには、
下記のように「graceful」を指定します。

# /etc/init.d/httpd graceful

gracefulを実行すると、すべてのクライアントとの通信が終了するまで再起動できません。
通信状況によっては、かなり待たなければならない場合があります。
しかし、通信接続保持を有線させる場合には効果的な機能となります。

CentOS7で使用するsystemdでは、gracefulの代わりにreloadを使用します。
# systemctl reload httpd

proFTPDでアクセス制限設定を行う

2017年6月29日

proFTPDでアクセス制限設定を行うには、proftpd.confファイルを編集します。
※proFTPDは比較的簡単にアクセス制限設定が行なえます。

■ユーザーのホームディレクトリのみをアクセス可能にする
# vi /usr/local/proftpd/etc/proftpd.conf
User                        nobody
Group                     nogroup
DefaultRoot            ~    ←この行を追加します。
追加後、「:wq」で保存終了し、proFTPDを再起動します。


■特定のディレクトリ(例では/home/test)のみアクセスを許可する
# vi /usr/local/proftpd/etc/proftpd.conf
User                        nobody
Group                     nogroup
DefaultRoot            /home/test ←この行を追加します。
追加後、「:wq」で保存終了し、proFTPDを再起動します。


■特定のグループのみ特定のディレクトリにアクセスを許可する
例では、pakiraグループに属するユーザーのみ、/home/testディレクトリに
アクセスできるように設定します。
# vi /usr/local/proftpd/etc/proftpd.conf
User                        nobody
Group                     nogroup
DefaultRoot            /home/test pakira ←この行を追加します。
追加後、「:wq」で保存終了し、proFTPDを再起動します。

MySQLで指定したカラム名を持つテーブルを検索する

2017年3月24日

MySQLで特定のカラム名を持つテーブルがわからない場合、
下記SQLを発行することで検索が行なえます。

MySQLにログイン後、下記SQLを実行します。
select table_name, column_name from information_schema.columns where column_name = '検索したいカラム名';

例)site_urlというカラムを持つテーブルを検索します。
mysql> select table_name, column_name from information_schema.columns where column_name = 'site_url';

+----------------+-------------+
| table_name | column_name |
+----------------+-------------+
| gl_pingservice | site_url |
+----------------+-------------+
1 row in set (0.21 sec)

gl_pingserviceテーブルにsite_urlが存在していることが分かります。

vi、vimの画面サイズを変更したい

2017年2月 6日

vi、vimの画面サイズを変更するには、コマンドモードで
下記コマンドを実行することで変更することができます。

■ウインドウの幅の変更
:set columns=100

■ウインドウの高さ
:set lines=50

「=」以降の数値を環境に合わせて変更することで
様々なサイズに調整が行なえます。

恒久的に画面サイズを変更したい場合は、設定ファイルを編集します。
vimの場合は「/etc/vimrc」ファイルに下記画面サイズ設定を追加します。

set columns=100
set lines=50


64bit環境に32bitのRPMをyumでインストールするには

2017年1月19日

64bit環境に32bitのRPMをyumインストールするには、
パッケージ名.i686を指定します。

例えば、nss-softokn-freeblの32bit RPMをインストールするには、
# yum -y install nss-softokn-freebl.i686
となります。

下記例は、nss-softokn-freeblの64bit、32bit、glibc関連のRPMを
yumでインストールした内容となります。

# yum -y install glibc-common glibc nss-softokn-freebl nss-softokn-freebl nss-softokn-freebl.i686
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.0x.sg
* extras: mirror.0x.sg
* updates: mirror.0x.sg
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ glibc.x86_64 0:2.17-78.el7 を 更新
--> 依存性の処理をしています: glibc = 2.17-78.el7 のパッケージ: glibc-headers-2.17-78.el7.x86_64
--> 依存性の処理をしています: glibc = 2.17-78.el7 のパッケージ: glibc-devel-2.17-78.el7.x86_64
---> パッケージ glibc.x86_64 0:2.17-157.el7_3.1 を アップデート
---> パッケージ glibc-common.x86_64 0:2.17-78.el7 を 更新
---> パッケージ glibc-common.x86_64 0:2.17-157.el7_3.1 を アップデート
---> パッケージ nss-softokn-freebl.x86_64 0:3.16.2.3-9.el7 を 更新
---> パッケージ nss-softokn-freebl.i686 0:3.16.2.3-14.4.el7 を インストール
--> 依存性の処理をしています: libdl.so.2(GLIBC_2.1) のパッケージ: nss-softokn-freebl-3.16.2.3-14.4.el7.i686
--> 依存性の処理をしています: libdl.so.2(GLIBC_2.0) のパッケージ: nss-softokn-freebl-3.16.2.3-14.4.el7.i686
--> 依存性の処理をしています: libdl.so.2 のパッケージ: nss-softokn-freebl-3.16.2.3-14.4.el7.i686
--> 依存性の処理をしています: libc.so.6(GLIBC_2.4) のパッケージ: nss-softokn-freebl-3.16.2.3-14.4.el7.i686
---> パッケージ nss-softokn-freebl.x86_64 0:3.16.2.3-14.4.el7 を アップデート
--> トランザクションの確認を実行しています。
---> パッケージ glibc.i686 0:2.17-157.el7_3.1 を インストール
---> パッケージ glibc-devel.x86_64 0:2.17-78.el7 を 更新
---> パッケージ glibc-devel.x86_64 0:2.17-157.el7_3.1 を アップデート
---> パッケージ glibc-headers.x86_64 0:2.17-78.el7 を 更新
---> パッケージ glibc-headers.x86_64 0:2.17-157.el7_3.1 を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

=====================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=====================================================================
インストール中:
nss-softokn-freebl i686 3.16.2.3-14.4.el7 base 188 k
更新します:
glibc x86_64 2.17-157.el7_3.1 updates 3.6 M
glibc-common x86_64 2.17-157.el7_3.1 updates 11 M
nss-softokn-freebl x86_64 3.16.2.3-14.4.el7 base 204 k
依存性関連でのインストールをします:
glibc i686 2.17-157.el7_3.1 updates 4.2 M
依存性関連での更新をします:
glibc-devel x86_64 2.17-157.el7_3.1 updates 1.1 M
glibc-headers x86_64 2.17-157.el7_3.1 updates 668 k

トランザクションの要約
=====================================================================
インストール 1 パッケージ (+1 個の依存関係のパッケージ)
更新 3 パッケージ (+2 個の依存関係のパッケージ)

合計容量: 21 M
総ダウンロード容量: 4.4 M
Downloading packages:
(1/2): nss-softokn-freebl-3.16.2.3-14.4.el7.i686.rpm | 188 kB 00:00:00
(2/2): glibc-2.17-157.el7_3.1.i686.rpm | 4.2 MB 00:00:04
----------------------------------------------------------------------
合計 998 kB/s | 4.4 MB 00:00:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
更新します : nss-softokn-freebl-3.16.2.3-14.4.el7.x86_64 1/12
更新します : glibc-2.17-157.el7_3.1.x86_64 2/12
warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew
更新します : glibc-common-2.17-157.el7_3.1.x86_64 3/12
更新します : glibc-headers-2.17-157.el7_3.1.x86_64 4/12
インストール中 : nss-softokn-freebl-3.16.2.3-14.4.el7.i686 5/12
インストール中 : glibc-2.17-157.el7_3.1.i686 6/12
更新します : glibc-devel-2.17-157.el7_3.1.x86_64 7/12
整理中 : glibc-devel-2.17-78.el7.x86_64 8/12
整理中 : glibc-headers-2.17-78.el7.x86_64 9/12
整理中 : glibc-common-2.17-78.el7.x86_64 10/12
整理中 : nss-softokn-freebl-3.16.2.3-9.el7.x86_64 11/12
整理中 : glibc-2.17-78.el7.x86_64 12/12
検証中 : glibc-headers-2.17-157.el7_3.1.x86_64 1/12
検証中 : glibc-common-2.17-157.el7_3.1.x86_64 2/12
検証中 : glibc-2.17-157.el7_3.1.x86_64 3/12
検証中 : nss-softokn-freebl-3.16.2.3-14.4.el7.i686 4/12
検証中 : nss-softokn-freebl-3.16.2.3-14.4.el7.x86_64 5/12
検証中 : glibc-2.17-157.el7_3.1.i686 6/12
検証中 : glibc-devel-2.17-157.el7_3.1.x86_64 7/12
検証中 : glibc-devel-2.17-78.el7.x86_64 8/12
検証中 : glibc-2.17-78.el7.x86_64 9/12
検証中 : nss-softokn-freebl-3.16.2.3-9.el7.x86_64 10/12
検証中 : glibc-common-2.17-78.el7.x86_64 11/12
検証中 : glibc-headers-2.17-78.el7.x86_64 12/12

インストール:
nss-softokn-freebl.i686 0:3.16.2.3-14.4.el7

依存性関連をインストールしました:
glibc.i686 0:2.17-157.el7_3.1

更新:
glibc.x86_64 0:2.17-157.el7_3.1 glibc-common.x86_64 0:2.17-157.el7_3.1
nss-softokn-freebl.x86_64 0:3.16.2.3-14.4.el7

依存性を更新しました:
glibc-devel.x86_64 0:2.17-157.el7_3.1 glibc-headers.x86_64 0:2.17-157.el7_3.1

完了しました!

TDB (Trivial DataBase) ファイルの整合性を確認する

2016年11月 1日

TDBファイルの整合性を確認するには、tdbbackupコマンドを実行します。
tdbbackupコマンドにオプション「-v」を付けて実行します。
これを実行するとTDBファイルにデータの損傷がないかをチェックします。
損傷を検出した場合は、バックアップからファイルをリストアします。

# cd /var/lib/samba
# tdbbackup -v gencache_notrans.tdb
gencache_notrans.tdb : 7 records

# tdbbackup -v *.tdb
account_policy.tdb : 17 records
brlock.tdb : 0 records
connections.tdb : 0 records
gencache.tdb : 1 records
gencache_notrans.tdb : 7 records
group_mapping.tdb : 0 records
locking.tdb : 0 records
messages.tdb : 0 records
mutex.tdb : 0 records
netsamlogon_cache.tdb : 0 records
notify.tdb : 0 records
notify_onelevel.tdb : 0 records
printer_list.tdb : 0 records
registry.tdb : 124 records
serverid.tdb : 3 records
sessionid.tdb : 0 records
share_info.tdb : 1 records
winbindd_cache.tdb : 13 records

TDB (Trivial DataBase) ファイルの内容を確認する

2016年11月 1日

SambaのTDB (Trivial DataBase) ファイルの内容を確認するには、
tdbdumpコマンドを使用します。このコマンドを実行することで、
TDBファイルを人が読めるフォーマットで標準出力にダンプします。

# tdbdump /var/lib/samba/winbindd_cache.tdb
{
key(13) = "SN/S-1-22-1-0"
data(35) = "\00\00\00\00\942\18X\C03\18X\00\00\00\00\01\00\00\00\09UNIX USER\04root"
}
{
key(15) = "SN/S-1-5-32-545"
data(34) = "\00\00\00\00\942\18X\C03\18X\00\00\00\00\04\00\00\00\07BUILTIN\05Users"
}
{
key(46) = "SN/S-1-5-21-1581974969-702731495-892098809-501"
data(33) = "\00\00\00\00\942\18X\C03\18X\00\00\00\00\01\00\00\00\05TIGER\06nobody"
}
{
key(10) = "SN/S-1-5-2"
data(41) = "\00\00\00\00\942\18X\C03\18X\00\00\00\00\05\00\00\00\0CNT Authority\07Network"
}
{
key(15) = "SN/S-1-5-32-546"
data(35) = "\00\00\00\00\942\18X\C03\18X\00\00\00\00\04\00\00\00\07BUILTIN\06Guests"

以下省略

Sambaのバージョンを確認するコマンド|現場で使う3つの手順

2016年11月 1日
「Windowsから共有フォルダに繋がらなくなった。Sambaのバージョンいくつだっけ?」
脆弱性の対応や、Windows Update後の接続トラブルなど、ファイルサーバー(Samba)のバージョン確認は現場で頻繁に発生するタスクです。

この記事では、Linux(Samba)のバージョンを確認する3つの方法を解説します。環境や目的に合わせて、一番やりやすい方法を選んでみてください。

方法1:smbdコマンドで確認する(一番おすすめ)

Sambaの本体プログラムである smbd コマンドに -V(大文字のブイ)オプションを付けて実行するのが、最も早くてオーソドックスな方法です。

# smbd -V Version 4.10.16 または # samba --version Version 4.10.16

上記のように表示されれば、現在稼働しているSambaのバージョンは「4.10.16」であることが分かります。
※Samba 3系と4系では設定ファイルの書き方やActive Directory対応などの機能が大きく異なるため、まずはメジャーバージョン(最初の数字)をしっかり確認しましょう。

「command not found」が表示される場合

# smbd -V -bash: smbd: command not found

このエラーが出る場合は、Sambaがインストールされていない可能性があります。以下のコマンドでインストールしてください。

# dnf install samba または # yum install samba

※インストール済みなのに表示される場合は、which smbd でパスが通っているか確認してください。

続きを読む "Sambaのバージョンを確認するコマンド|現場で使う3つの手順"

Postfixのバージョンを確認するコマンド|現場で使う4つの手順

2016年10月 4日
Postfixのバージョンを確認できるようになっておくことはとても重要です。例えば、「自社のメールサーバーに脆弱性が見つかったらしいけど、うちのPostfixのバージョンはいくつだろう?」セキュリティ対応や他システムとの連携時など、メールサーバーのバージョン確認は現場で頻繁に発生する作業です。

この記事では、Linux(Postfix)のバージョンを確認する方法を、目的別に分かりやすく解説します。環境や状況に合わせて、一番やりやすい方法を選んでみてください。

まずPostfixがインストールされているか確認する

バージョンを調べる前に、そもそも自分の環境にPostfixがインストールされているかを確認しましょう。

Red Hat系Linux(RHEL、AlmaLinux、Rocky Linuxなど)では以下のコマンドで確認できます。

$ rpm -qa | grep postfix postfix-3.5.9-19.el9.x86_64

何も表示されない場合はPostfixがインストールされていません。また、which postfix コマンドでも実行ファイルの場所から確認できます。

$ which postfix /usr/sbin/postfix

続きを読む "Postfixのバージョンを確認するコマンド|現場で使う4つの手順"

MySQLでユーザー確認をする

2016年9月15日

MySQLに登録されているユーザーを確認するには、下記手順を実施します。

1.MySQLにログインします。
# /usr/local/mysql/bin/mysql -u root -p
Enter password:    ←MySQLのrootパスワードを入力します。


2.mysqlに切り替えます。
mysql> use mysql;


3.MySQLに登録されているユーザーを一覧表示します。
mysql> select Host, User, Password from mysql.user;
+-----------+--------+-------------------------------------------+
| Host | User | Password
+-----------+--------+-------------------------------------------+
| localhost | root | *671A31C9A6ECF182131495AC94BEB4296DCA344B
| % | nobody | *2380B647E90935DC048253A6481ABA440F292BB5
+-----------+--------+-------------------------------------------+
2 rows in set (0.03 sec)

※パスワードは暗号化されています。


4.権限を表示します。
例ではnobodyユーザーの権限を表示しています。
mysql> SHOW GRANTS for 'nobody'@'%';
+-----------------------------------------------------------------
| Grants for nobody@%
+-----------------------------------------------------------------
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, INDEX,
+-----------------------------------------------------------------
1 row in set (0.00 sec)

※結果は長いので省略しています。


5.MySQLを抜けます。
mysql> quit
Bye

CentOS7のホスト名設定(nmcliコマンド)

2016年1月25日

CentOS6までは、ホスト名の設定は「/etc/sysconfig/network」ファイルで
管理していましたが、CentOS7では、「/etc/hostname」ファイルで管理します。
ホスト名を変更するには、、「/etc/hostname」ファイルを直接編集するか、
または、nmcliコマンドでもホスト名設定が可能です。

現在設定されているホスト名を確認するには下記コマンドを実行します。
[root@Tiger ~]# nmcli general hostname
Tiger.linuxmaster.jp

上記の例ではホスト名に「Tiger.linuxmaster.jp」が設定されていることが確認できます。

ホスト名を「Leo.linuxmaster.jp」に変更します。
[root@Tiger ~]# nmcli general hostname Leo.linuxmaster.jp

変更後のホスト名を確認します。
[root@Tiger ~]# hostname
Leo.linuxmaster.jp

「/etc/hostname」ファイルの内容も確認します。
[root@Tiger ~]# cat /etc/hostname
Leo.linuxmaster.jp

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

CentOS7での日付、時刻、タイムゾーン設定

2016年1月14日

CentOS7では、日付、時刻の設定コマンドとして従来のdateコマンド、hwclockコマンドが
存在していますが、新たにsystemdで制御されるtimedatectlコマンドが用意されています。

■日付、時間、タイムゾーンの表示
timedatectlコマンドをオプションなしで実行すると、
日付、時間、タイムゾーン、NTPの同期設定の有無などを表示できます。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl
Local time: 木 2016-01-14 13:51:12 JST
Universal time: 木 2016-01-14 04:51:12 UTC
RTC time: 木 2016-01-14 04:51:11
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
-----------------------------------------------------------------

■日付の設定
timedatectlで日付設定を行う場合は、オプションに「set-time」を付けて実行します。
下記の例では、2016年1月15日に設定しています。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl set-time 2016-01-15
[root@Tiger system]# timedatectl
Local time: 金 2016-01-15 00:00:03 JST
Universal time: 木 2016-01-14 15:00:03 UTC
RTC time: 木 2016-01-14 15:00:04
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
-----------------------------------------------------------------

■時刻の設定
timedatectlで時刻設定を行う場合も、オプションに「set-time」を付けて実行します。
下記の例では、15時54分00秒に設定しています。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl set-time 15:54:00
[root@Tiger system]# timedatectl
Local time: 金 2016-01-15 15:54:00 JST
Universal time: 金 2016-01-15 06:54:00 UTC
RTC time: 金 2016-01-15 06:54:00
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
-----------------------------------------------------------------

■タイムゾーンの表示
timedatectlでタイムゾーンを表示するには、オプション「list-timesones」を付けて実行します。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara

〜中略〜

Asia/Tashkent
Asia/Tbilisi
Asia/Tehran
Asia/Thimphu
Asia/Tokyo
-----------------------------------------------------------------

■タイムゾーンの変更
タイムゾーンを変更するには、timedatectlコマンドにオプション「set-timesone」を付けて実行します。
-----------------------------------------------------------------
[root@Tiger system]# timedatectl set-timezone Asia/Tokyo
-----------------------------------------------------------------

CentOS7でのロケール、キーボード設定

2016年1月14日

CentOS7でロケールとキーボードの設定変更するには、localectlコマンドを使用します。

<<ロケール設定>>

■ロケール状態の確認
現在のロケールの状態を確認します。
-----------------------------------------------------------------
[root@Tiger system]# localectl
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp
-----------------------------------------------------------------

■ロケールを日本語に設定
-----------------------------------------------------------------
[root@Tiger system]# localectl set-locale LANG=ja_JP.utf8
[root@Tiger system]# localectl
Syststrongm Locale: LANstrong=ja_JP.utf8
VC Keymap: jp
X11 Layout: jp
-----------------------------------------------------------------

■ロケールの設定ファイル
ロケールの設定ファイルは、「/etc/locale.conf」になります。
-----------------------------------------------------------------
[root@Tiger system]# ls -l /etc/locale.conf
-rw-r--r-- 1 root root 16 1月 14 13:28 /etc/locale.conf
[root@Tiger system]# cat /etc/locale.conf
LANG=ja_JP.utf8
-----------------------------------------------------------------
ja_JP.utf8に設定ファイルが変更されています。


<<キーボード設定>>

■キーマップの表示
利用可能なキーマップを表示します。
-----------------------------------------------------------------
[root@Tiger system]# localectl list-keymaps
ANSI-dvorak
amiga-de
amiga-us
applkey

〜中略〜

it-us
it2
jp
jp-OADG109A
jp-dvorak
jp-kana86
jp106
-----------------------------------------------------------------

■キーボードの設定
日本語のキーマップはjp106になるので、キーボード設定を日本語106キーボードに設定します。
-----------------------------------------------------------------
[root@Tiger system]# localectl set-keymap jp106
[root@Tiger system]# localectl
System Locale: LANG=ja_JP.utf8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp
-----------------------------------------------------------------

■キーマップ設定ファイル
キーマップの設定ファイルは、「etc/vconsole.conf」になります。
-----------------------------------------------------------------
[root@Tiger system]# cat /etc/vconsole.conf
KEYMAP=jp106
FONT=latarcyrheb-sun16
-----------------------------------------------------------------

CentOS7のサービス・デーモンの起動

2016年1月13日
CentOS7では、サービスの制御をsystemdにて行います。
具体的なコマンドとしては、systemctlを利用して起動、停止、状態確認などを行います。
これらはユニットと呼ばれる単位で管理を行い、下記の幾つかのタイプが存在ます。
start httpdを起動します。
stop httpdを停止します。
service 各種デーモンやサービスを起動
target 起動プロセスやサービスなどの複数のユニットをグループにしてまとめたもの
mount ファイルシステムのマウントポイント制御
device ディスクデバイス
socket FIFO、UNIXドメインソケット、ポート番号などに関する通信資源

CentOS7に登録されているサービスのOS起動時の自動起動の有効化、
無効化の設定を確認するには、
ユニット「sevice」を指定し、更に「list-unit-files」を指定します。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl -t service list-unit-files
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service disabled
abrtd.service enabled
arp-ethers.service disabled

以下省略
-----------------------------------------------------------------

■サービスの登録状況確認
サービスの設定例として、WEBサービスの起動、停止、状態確認、
OS起動時の自動起動の有効化、無効化の設定を紹介します。

WEBサービスのがsystemdのユニットで
どのような名前で登録されているのかを確認します。
(例ではApacheがインストールされている環境を利用しています。)
-----------------------------------------------------------------
[root@Tiger ~]# systemctl -t service list-unit-files | grep -i httpd
httpd.service enabled
-----------------------------------------------------------------
WEBサーバーのサービスは「httpd.service」になります。
「httpd.serviceの右側に「enabled」と表示されています。
これはOS起動時に「httpd.service」が自動起動する
設定になっている事を意味します。
「disabled」だと自動起動しない設定という意味になります。

■サービスの状態確認
サービスの状態確認は、systemctlコマンドに「status」を指定します。
systemctlコマンドを利用する場合、サービス名の「.service 」は省略できます。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since 水 2016-01-13 15:40:13 JST; 9min ago
Process: 1145 ExecStart=/usr/local/apache2/bin/apachectl start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/httpd.service
tq2114 /usr/local/apache2/bin/httpd -k start
tq2115 /usr/local/apache2/bin/rotatelogs /var/log/httpd/192.168.0.36_error_log_%Y%m%d ...
tq2116 /usr/local/apache2/bin/rotatelogs /var/log/httpd/192.168.0.36_access_log_%Y%m%d...
tq2117 /usr/local/apache2/bin/httpd -k start
tq2118 /usr/local/apache2/bin/httpd -k start
tq2119 /usr/local/apache2/bin/httpd -k start
tq2120 /usr/local/apache2/bin/httpd -k start
mq2121 /usr/local/apache2/bin/httpd -k start

1月 13 15:40:13 Tiger systemd[1]: Started The Apache HTTP Server.
-----------------------------------------------------------------
コマンドの実行結果「Active: active (running) 」となっており、
プロセスも正常起動していることから、Apacheサービスが正常に起動していることが分かります。


■サービスの起動と停止
Apacheを停止してみます。
停止は「systemctl stop httpd」で行えます。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl stop httpd
[root@Tiger ~]# systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: inactive (dead) since 水 2016-01-13 15:52:20 JST; 4s ago
Process: 2384 ExecStop=/usr/local/apache2/bin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 1145 ExecStart=/usr/local/apache2/bin/apachectl start (code=exited, status=0/SUCCESS)

1月 13 15:40:13 Tiger systemd[1]: Started The Apache HTTP Server.
1月 13 15:52:20 Tiger systemd[1]: Stopping The Apache HTTP Server...
1月 13 15:52:20 Tiger systemd[1]: Stopped The Apache HTTP Server.
-----------------------------------------------------------------
コマンドの実行結果が「Active: inactive (dead)」になっていることから
Apacheが停止していることが分かります。

因みに、起動は「systemctl start httpd」で行えます。


■起動時の自動実行、停止設定
CentOS7が起動した時に、Apacheサービスが自動的に起動するように設定します。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service'
'/etc/systemd/system/multi-user.target.wants/httpd.service'
-----------------------------------------------------------------

自動起動を無効にする場合は、下記コマンドになります。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl disable httpd
rm '/etc/systemd/system/multi-user.target.wants/httpd.service'
-----------------------------------------------------------------
「enable」を「disable」に変更します。

CentOS7が起動した際、Apacheサービスが自動起動するように 設定されているか確認します。
-----------------------------------------------------------------
[root@Tiger ~]# systemctl -t service is-enabled httpd
enabled
-----------------------------------------------------------------
機能 CentOS6 CentOS7
サービスの開始 # service httpd start # systemctl start httpd
サービスの停止 # service httpd stop # systemctl stop httpd
サービスの再起動 # service httpd restart # systemctl restart httpd
サービスの設定ファイル再読み込み # service httpd reload # systemctl reload httpd
サービスの状態確認 # service httpd status # systemctl status httpd
サービスが既に稼働している場合、サービスを再起動する # service httpd condrestart # systemctl condrestart httpd
次回OS起動時に自動的にサービスを起動する # chkconfig httpd on # systemctl enable httpd
次回OS起動時に自動的にサービスを起動しない # chkconfig httpd off # systemctl disable httpd
ランレベルごとに全サービスが有効・無効になっているかを表示する # chkconfig --list systemctl -t service list-unit-files または
# ls /etc/systemd/system/*.wants/
ランレベルごとに指定したサービスが有効・無効になっているかを表示する # chkconfig --list httpd # ls /etc/systemd/system/*.wants/httpd.service

CentOS7の新機能

2015年11月 6日

CentOS7では、CentOS6と日赤くして以下の様な変更、機能強化がされています。

■64ビット版のみをサポート
CentOS7は、32ビット版が廃止され、64ビットのx86_64アーキテクチャのみをサポートしています。32ビット版x86アーキテクチャのマシンを利用する場合には、CentOS4、CentOS5、CentOS6系を利用する必要があります。

■カーネル3.10を採用
Linuxカーネルに3.10が採用されたことで次のような特徴があります。

・テラバイトクラスメモリに対応とそのメモリが搭載された場合のkdumpに対応
・OSのスワップメモリを圧縮する「zswap」により、ディスクI/Oを低減してパフォーマンス向上を図る。
・プロセスの配置を自動的に行うことで、パフォーマンス向上を図る。
・システムを稼働させたままカーネルパッチ適用が可能。

CentOS7で特に注目すべき機能は、「システムを稼働させたままカーネルパッチ適用が可能」です。これは、ダイナミック・カーネル・パッチング(kpatch)と呼ばれ、OSを再起動せずにカーネルにパッチを適用できる機能なため、ダウンタイムの大幅な削減に貢献します。但し、RHEL7ではあくまで実験的要素としての搭載になりますので、CentOS7でもその範囲での利用に留めておくべきです。

※kdumpとは、Linuxカーネルがクラッシュした際、原因特定するためのダンプを取得するツールです。

■xfsファイルシステムを標準サポート
標準ファイルシステムがext4からxfsに変更されました。ジャーナリングに関するIOPS(I/O Per Second)を出来るだけ減らすことで、高スループットでデータの読み書きを実現できるファイルシステムです。


■インストーラーの改良
インストーラーが全面刷新され、従来の手順を追って作業を行うものから、必要なものだけを設定していくという直感的なユーザーインタフェースに改良されています。
操作性としては、インストール実行中にrootパスワード設定や一般ユーザーの作成が行えるなどの向上が図られています。

■ブートローダーの変更
ブートローダーがGRUB2に変更されています。UEFIセキュアブートをサポートし、RAIDやLVMの対応が強化され、高速ブートが可能になっています。

■systemdによるリソース管理とサービス管理を採用
CentOS7ではinitに変わり、systemdが採用されています。これはプロセスをグループ化する機能を持ち、グループごとにリソース制限をかけることが可能になっています。また、initで必要だったアプリケーションの起動と停止用スクリプトが不要となり、これらを管理する煩わしさが解消されています。OSの起動と停止処理においては、並列実行することで、従来よりも素早い起動と停止を実現しています。

■firewalldを採用
ファイアウォール機能が従来のiptablesからfirewalldに変更され、ネットワークインタフェースをゾーンというグループで管理を行うようになっています。ゾーン毎にセキュリティポリシーを適用することで管理性が大幅に向上しています。また、動的にルールを変更することが出来るようなっています。

■NetworkManagerの高機能化
CentOS7では、NetworkManagerの機能が大幅に強化され、ネットワークに関する設定や制御をコマンドやGUIツールによって行えるようになっています。それに伴い、従来のように設定ファイルを直接書き換えることが非推奨になっています。

■仮想サーバー上での利用を想定した改善
仮想サーバー上で利用するドライバ等が改良されています。特に時刻同期においては、chronyが採用されたことで、システムが頻繁に一時停止になったり、断続的にネットワークが切断されても正常に動作するよう改善されています。

■CentOSのバージョン番号
CentOS6までは、バージョン番号として「メジャーバージョン」+「マイナーバージョン」の組み合わせで表記されていました。例えば、メジャーバージョンが6で、マイナーバージョンが6の場合、CentOS6.6と表記されていました。しかし、CentOS7では、「メジャーバージョン」+「マイナーバージョン」+「リリースされたソースコードの年月」を付与する表記に変更されています。例えば、CentOS7.1の場合、RHEL7.1をベースに2015年3月にリリースされたソースコードを基にしているため、CentOS 7.1.1503というバージョン表記になっています。

CentOS7で変わったinit廃止とsystemd導入

2015年6月16日
従来のCentOSでは、デーモンやアプリケーションなどのプロセスを起動する仕組みに
initを採用していました。このinitは、BSD系UNIXと、System V系UNIXの2系統が存在し、
従来のCentOSはSystem V系UNIXのinitに似たものを採用しています。

System V系UNIXのinitのメリットは、ランレベルと呼ばれる値によって、
システムの状態を変更できるという単純な仕組みと、OSの起動、停止に関わる
デーモンやプログラムの登録が容易である点です。

しかし、デメリットとして、下記のような点も存在します。

・デーモンやアプリケーション数が増加すると、起動、停止順序の管理や制御が複雑になる。
・initからの起動は、並列処理がされないため、数が増えるとOSの起動処理時間が長くなる。
・プロセスの親子関係が崩れた場合、子プロセスの挙動を適切に制御できない。

そこで、CentOS7からは、initに置き換わる仕組みとしてsystemdを採用しています。
systemdの主なメリットは下記の通りです。

・従来必要だったアプリケーションの起動、停止スプリクトが不要。
・起動処理を並列処理できるので、OSの起動、停止を素早く行える。
・親子関係にあるプロセスの起動と停止制御を適切に行える。

CentOS7では、ランレベルに変わる「ターゲット」が導入されています。
ターゲットとは、systemdにおける複数のサービス(デーモン)などの
制御対象をまとめたものを指します。

CentOS6系のランレベルとCentOS7のsysytemdターゲットを
対応表にすると下記のようになります。
アーキテクチャ CentOS6のランレベル CentOS7のsystemd
システム停止 0 # systemctl isolate poweroff.target
シングルユーザーモード 1 # systemctl isolate rescue.target
マルチユーザーモード 3 # systemctl isolate multi-user.target
グラフィカルログイン 5 # systemctl isolate graphical.target
OSの再起動 6 # systemctl isolate reboot.target
緊急モード - # systemctl isolate emergency.target

また、CentOS7で定義されてる各種ターゲットが従来のCentOSで採用されていた
ランレベルのどれに相当しているかをコマンドで確認することができます。

[root@Tiger ~]# ls -l /lib/systemd/system/runlevel*target
lrwxrwxrwx. 1 root root 15 2月 23 14:36 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 2月 23 14:36 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 2月 23 14:36 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 2月 23 14:36 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 2月 23 14:36 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 2月 23 14:36 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 2月 23 14:36 /lib/systemd/system/runlevel6.target -> reboot.target

multi-user.targetはランレベル「3」、「graphical.target」はランレベル「5」に
相当することが分かります。

CentOS7のアーキテクチャ変更点

2015年6月12日
■CentOS7のアーキテクチャ変更点
CentOS7は、従来のバージョンと比較して、サポートする論理CPU数やメモリ容量、
ファイルシステムサイズなどの最大値が大幅に引き上げられています。
このページでは主だった変更点を公開しています。

■CentOS7のプロセッサアーキテクチャ
CentOS7は、32ビット版が廃止され、
64ビットのx86_64アーキテクチャのみをサポートしています。
32ビット版x86アーキテクチャのマシンを利用する場合には、
CentOS4、CentOS5、CentOS6系を利用する必要があります。
アーキテクチャ 32ビット版 x86 x86_64 IA64 IBM s390,s390x IBM Power,Mac SPARC DEC Alpha ARM
CentOS4 対応 対応 対応 対応 対応 対応 対応 非対応
CentOS5 対応 対応 非対応 非対応 非対応 非対応 非対応 非対応
CentOS6 対応 対応 非対応 非対応 非対応 非対応 非対応 非対応
CentOS7 非対応 対応 非対応 非対応 非対応 非対応 非対応 非対応

■論理CPU数
CentOS6では、対応する論理CPU数が、最大64でしたが、
CentOS7になり、CentOS5と同様に、最大論理CPU数が160になっています。
アーキテクチャ 32ビット版 x86 x86_64 IA64 IBM s390,s390x IBM Power,Mac SPARC DEC Alpha ARM
CentOS4 32 64 64 8 64 8 8 非対応
CentOS5 32 160 非対応 非対応 非対応 非対応 非対応 非対応
CentOS6 32 64 非対応 非対応 非対応 非対応 非対応 非対応
CentOS7 非対応 160 非対応 非対応 非対応 非対応 非対応 非対応

■最大メモリ容量
CentOS7でサポートされる最大メモリ容量は、CentOS6と同様に3TBになりますが、
論理的には64TBまで利用できる可能性があります。
アーキテクチャ 32ビット版 x86 x86_64 IA64 IBM s390,s390x IBM Power,Mac SPARC DEC Alpha ARM
CentOS4 64GB 128GB 256GB 64GB 128GB 64GB 64GB 非対応
CentOS5 16GB 1TB 非対応 非対応 非対応 非対応 非対応 非対応
CentOS6 16GB 3TB(理論上は64TB) 非対応 非対応 非対応 非対応 非対応 非対応
CentOS7 非対応 3TB(理論上は64TB) 非対応 非対応 非対応 非対応 非対応 非対応

■ファイルシステム
CentOS7のファイルシステムは、これまでサポートしていたext3、ext4に加え、
XFSがサポートされました。XFSの最大ファイルシステムサイズは500TBになります。
アーキテクチャ 最大ファイルサイズ(ext3) 最大ファイルシステムサイズ(ext3) 最大ファイルサイズ(ext4) 最大ファイルシステムサイズ(ext4) 最大ファイルサイズ(XFS) 最大ファイルシステムサイズ(XFS) 最大ブートLUNサイズ(BIOS搭載マシン) 最大ブートLUNサイズ(UEFI搭載マシン) プロセス当たりの仮想アドレス空間(x86_64)
CentOS4 2TB 8TB 非対応 非対応 非対応 非対応 非対応 非対応 512GB
CentOS5 2TB 16TB 16TB 16TB 非対応 非対応 2TB未満 非対応 2TB
CentOS6 2TB 16TB 16TB 16TB 非対応 非対応 2TB未満 2TB超可能 128TB
CentOS7 2TB 16TB 16TB 50TB 500TB 500TB 2TB未満 50TB 128TB
XFSは、CentOS7で標準のファイルシステムになっており、
ジャーナリングに関するIOPS(I/O Per Second)を出来るだけ減らすことで、
高スループットでデータの読み書きを実現できるファイルシステムです。


CentOS7は、x86_64アーキテクチャに絞ったディストリビューションになっており、
コア数増加や最大メモリの増加、新ファイルシステム対応は、仮想化技術の普及及び、
クラウド基盤の導入、ビックデータ用途を反映した内容となっています。

CentOS7でサポートされるこれらの値は、RHEL7の制限値が参考になります。
詳細は、「RHEL7リリースノート」や「CentOS Product Specifications」を
参考にしてください。

CentOSでCtrl-Alt-Deleteを無効にする

2015年1月29日

システムをあまり知らないユーザーが、Windowsと誤ってCtrl-Alt-Deleteを実行し、
CentOSが再起動してしまう事があります。

それを防ぐには、Ctrl-Alt-Deleteを無効化します。
CentOS5とCentOS6では設定方法が異なります。

■CentOS6でCtrl-Alt-Deleteを無効化する
--------------------------------------------------------------------------------------------------
[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# vi /etc/init/control-alt-delete.conf
# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed. Usually used to shut down the machine.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file control-alt-delete.override and put your changes there.

start on control-alt-delete

#exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
↑行頭に「#」を挿入し無効化します。
--------------------------------------------------------------------------------------------------

■CentOS5でCtrl-Alt-Deleteを無効化する
--------------------------------------------------------------------------------------------------
[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# vi /etc/inittab
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg,
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
↑行頭に「#」を挿入し無効化します。
--------------------------------------------------------------------------------------------------

シャドウパスワードの生成、更新を行う(pwunconv -v)

2014年12月 5日

シャドウ化を解除された状態のパスワードを再びシャドウ化するには、pwunconvコマンドを実行します。
pwunconvコマンドは、パスワードファイル「/etc/passwd」から
シャドウファイル「/etc/shadow」を生成したり、シャドウ化されていない
パスワードをシャドウ化することが出来ます。
また、オプション「-v」を付けて「pwunconv -v」を実行すると、実行結果を表示できます。

なお、pwunconvコマンドはパスワードファイルとシャドウパスワードファイルの不一致があると、
正しく動作しないので、事前にpwckコマンドでチェックを行ってから実行します。

pwunconv、pwckコマンドを実行するにはroot権限が必要になります。

■シャドウパスワードの生成、更新を行う
---------------------------------------------------------------------------------------------
[pakira@Tiger ~]$ su -  ←rootになります。
パスワード:
[root@Tiger ~]# ls /etc/shadow ←シャドウパスワードファイルの存在を確認します。
ls: cannot access /etc/shadow: そのようなファイルやディレクトリはありません
↑シャドウパスワードファイルは存在しません。
[root@Tiger ~]# cat /etc/passwd | grep tomohiro
↑パスワードファイルに存在するtomohiroのエントリーを確認します。
tomohiro:$6$xZ.YNf/O$KJovf6Z0qybKsxzDNpj4Vy31MrTILmsOqzszNQF.
Urc2hGm64emqm5TGh3Yy64dLFeqwMp7DW.sJuPUqgDv9l.

:501:501::/home/tomohiro:/bin/bash
↑2番目のカラムが暗号化されたパスワードになっています。
[root@Tiger ~]# pwck
ユーザ adm: ディレクトリ '/var/adm' が存在しません
ユーザ uucp: ディレクトリ '/var/spool/uucp' が存在しません
ユーザ gopher: ディレクトリ '/var/gopher' が存在しません
pwck: 変更はありません
[root@Tiger ~]# pwconv -v ←シャドウパスワードファイルを生成します。
Usage: pwconv
[root@Tiger ~]# ls /etc/shadow ←シャドウパスワードファイルの存在を確認します。
/etc/shadow ←シャドウパスワードファイルが生成され存在しています。
[root@Tiger ~]# cat /etc/passwd | grep tomohiro
↑パスワードファイルに存在するtomohiroのエントリーを確認します。
tomohiro:x:501:501::/home/tomohiro:/bin/bash
↑2番目のカラムが「x」でシャドウパスワードになっています。
---------------------------------------------------------------------------------------------

関連情報
Linuxパスワードファイルをチェックする(pwck)

シャドウ化されたパスワードを解除する(pwunconv)

2014年12月 4日

シャドウ化されたパスワードを解除して、パスワードファイル「/etc/passwd」に含めることができます。
シャドウ化されたパスワードを解除するには、「pwunconv」コマンドを実行します。
このコマンドを実行すると、シャドウパスワードファイル「/etc/shadow」ファイルから
パスワードファイル「/etc/passwd」にパスワード情報が移され、シャドウパスワードは削除されます。

なお、pwunconvコマンドはパスワードファイルとシャドウパスワードファイルの不一致があると、
正しく動作しないので、事前にpwckコマンドでチェックを行ってから実行します。

pwunconv、pwckコマンドを実行するにはroot権限が必要になります。

■シャドウ化されたパスワードを解除する
---------------------------------------------------------------------------------------------
[pakira@Tiger ~]$ su -  ←rootになります。
パスワード:
[root@Tiger ~]# cat /etc/passwd | grep tomohiro
↑パスワードファイルに存在するtomohiroのエントリーを確認します。
tomohiro:x:501:501::/home/tomohiro:/bin/bash
↑2番目のカラムが「x」でシャドウパスワードになっています。
[root@Tiger ~]# ls /etc/shadow ←シャドウパスワードファイルの存在を確認します。
/etc/shadow ←シャドウパスワードファイルが存在します。
[root@Tiger ~]# pwck ←パスワードファイルをチェックします。
ユーザ adm: ディレクトリ '/var/adm' が存在しません
ユーザ uucp: ディレクトリ '/var/spool/uucp' が存在しません
ユーザ gopher: ディレクトリ '/var/gopher' が存在しません
pwck: 変更はありません
[root@Tiger ~]# pwunconv ←シャドウ化されたパスワードを解除します。
[root@Tiger ~]# ls /etc/shadow ←シャドウパスワードファイルの存在を確認します。
ls: cannot access /etc/shadow: そのようなファイルやディレクトリはありません
↑パスワードのシャドウ化が解除されたため存在しません。
[root@Tiger ~]# cat /etc/passwd | grep tomohiro
↑パスワードファイルに存在するtomohiroのエントリーを確認します。
tomohiro:$6$xZ.YNf/O$KJovf6Z0qybKsxzDNpj4Vy31MrTILmsOqzszNQF.
Urc2hGm64emqm5TGh3Yy64dLFeqwMp7DW.sJuPUqgDv9l.

:501:501::/home/tomohiro:/bin/bash
↑2番目のカラムが暗号化されたパスワードになっています。
---------------------------------------------------------------------------------------------

関連情報
Linuxパスワードファイルをチェックする(pwck)

Linuxパスワードファイルをチェックする(pwck)

2014年12月 3日

Linuxでは、パスワード登録されていないアカウントはロックされており、
登録する際にも、不適切なものは登録できない仕組みになっています。
従って、基本的に不適切なパスワードは使用できないようになっています。

しかし、システム管理上パスワードファイルをエディタで直接修正することもあり、
操作を誤ると不適切なパスワードファイルとなってしまう可能性があります。
こうした問題がないかをチェックするコマンドに「pwck」コマンドがあります。

このコマンドは以下の項目のチェックを行います。
・フィールド数が正しいか
・ユーザー名に重複がないか
・ユーザー及び、グループが有効なものであるか
・プライマリグループが有効なものであるか
・ホームディレクトリが正しいか
・ログインシェルが正しいか

もし問題を発見した場合、問題のあるエントリーの内容を表示し、
不整合の状態は望ましくないので削除を行うか確認します。
因みに、pwckコマンドを実行するにはroot権限が必要です。

■Linuxパスワードファイルをチェックする
---------------------------------------------------------------------------------------------------------
[pakira@Tiger ~]$ su -  ←rootになります。
パスワード:
[root@Tiger ~]# pwck  ←パスワードファイルをチェックします。
ユーザー adm: ディレクトリ '/var/adm' が存在しません
ユーザー uucp: ディレクトリ '/var/spool/uucp' が存在しません
ユーザー gopher: ディレクトリ '/var/gopher' が存在しません
pwck: 変更はありません
---------------------------------------------------------------------------------------------------------
今回表示されている「存在しません」のエントリーは、
パスワードファイル「/etc/passwd」に登録されていますが、
ホームディレクトリとして記述されているパスが存在しないため
エラーメッセージとして表示されています。
しかし、不正なものではないため削除は推奨されません。

mkpasswdコマンドでパスワードを生成する

2014年12月 2日

セキュリティ保持の為には、定期的にパスワードを変更する必要があります。
しかし、どのようなパスワードにすれば良いか迷う場合もあります。
その場合、mkpasswdコマンドを使用するとランダムなパスワードを容易に生成できます。

mkpasswdコマンドがインストールされていない場合は、
下記コマンドを実行してインストールを行います。
※今回のインストール環境はCentOS6.5です。
※下記コマンドを実行するには、root権限が必要です。

続きを読む "mkpasswdコマンドでパスワードを生成する"

yumに関するログ(ログファイル)を把握する

2013年10月24日

yumの設定ファイルは、「/etc/yum.conf」になり、このファイルでyumのログファイル管理が行えます。
下記の例でいうと、ログファイルは、「logfile=」項目に設定される「/var/log/yum.log」になります。

[root@Tiger ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log ←yumログファイルの指定
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

yumが実行されると、その実行ログが/var/log/yum.logに出力されます。
下記の例ではnmapコマンドをインストールし、その後削除しています。

[root@Tiger ~]# ls -l /var/log/yum.log
-rw------- 1 root root 50 10月 24 13:45 2013 /var/log/yum.log
[root@Tiger ~]# tail /var/log/yum.log
Oct 24 13:45:42 Installed: 2:nmap-5.51-2.el6.i686
Oct 24 13:54:16 Erased: nmap

Apacheのタイムアウト(Timeout)を設定・確認する方法【2.4対応版】

2013年8月15日
「Apacheのタイムアウトエラーが出てしまう」
「Timeoutの秒数はどこで設定するの?」
「今の設定値を確認したい」
・・・Webサーバーの構築や障害対応の現場では、こうした確認が日常的に発生します。

この記事では、Apacheのタイムアウト(Timeout)設定を確認・変更する全手順を体系的に解説します。現代の主流であるApache 2.4系(RHEL 9 / AlmaLinux 9など)に完全対応した、今日から使える内容です。

そもそもApacheのTimeout(タイムアウト)とは

Apacheのタイムアウトとは、クライアント(ブラウザなど)とサーバー間でパケットの送受信が行われないまま、通信を強制的に切断するまでの待機時間(秒数)のことです。

リクエストのパケットが途絶え、指定した時間が過ぎるとコネクションが自動的に切断されます。これにより、応答のない無駄な接続がサーバーのリソースを圧迫するのを防いでいます。

Timeoutが適用される3つの場面

Apache 2.4の Timeout ディレクティブは、以下の3つの通信フェーズすべてに共通して適用されます。

接続(Connect):クライアントからの接続要求を待つ時間
受信(Receive):クライアントからリクエストデータが届くまでの待機時間
送信(Send):クライアントへレスポンスを送信できるまでの待機時間

「受信だけ延ばしたい」「送信だけ変えたい」という場合は、後述する ProxyTimeout や各モジュール固有のディレクティブとの使い分けが必要になります。

続きを読む "Apacheのタイムアウト(Timeout)を設定・確認する方法【2.4対応版】"

Apacheのエラーログを設定する

2013年7月23日

Apacheでエラーログを設定するには、httpd.confファイルを編集します。

インストール方法にもよりますが、httpd.confファイルは、
/etc/httpd/conf/ディレクトリか/usr/local/apache2/conf/ディレクトリなどに格納されています。
詳しくは、httpd.confファイルのServerRootに設定されているディレクトリを確認してください。

[root@Tiger ~]# vi /usr/local/apache2/conf/httpd.conf
#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error_log"

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

上の例では、ErrorLog "logs/error_log"がエラーログ設定箇所になり、
logsディレクトリのerror_logファイルに出力することが設定されています。
logsディレクトリは、/etc/httpd/logsか、/usr/local/apache2/logsディレクトリなどになります。

LogLevel warnでは、ログの出力レベルが設定されており、
デフォルトでは、warn以上が記録されます。
コメントにあるdebug, info、notice、warn、error、crit、alert、emergを指定出来ます。

変更後は、設定を反映させるためApacheの再起動を行います。
[root@Tiger ~]# /etc/init.d/httpd restart

Apacheの設定にインデックスファイルを追加する

2013年7月22日

URLを指定してホームページにアクセスする際、ディレクトリ名を指定するだけで
ホームページのファイルを表示させるには、インデックスファイルの設定を行います。

つまり、「https://www.linuxmaster.jp/」とURLを指定すると、
「https://www.linuxmaster.jp/index.html」が表示される設定です。

この設定を行うには、Apacheの設定ファイル「httpd.conf」ファイル内にある
「DirectoryIndex」に設定を行います。

インストール方法にもよりますが、httpd.confファイルは、
/etc/httpd/conf/ディレクトリか/usr/local/apache2/conf/ディレクトリなどに格納されています。
詳しくは、httpd.confファイルのServerRootに設定されているディレクトリを確認してください。

DirectoryIndexは、左から順番にサイン称するファイルを指定します。
デフォルトでは、「index.htm」は設定されていませんので、
index.htmをインデックスファイルに含める場合、明示的にindex.htmの設定が必要になります。

[root@Tiger ~]# vi /usr/local/apache2/conf/httpd.conf
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#

DirectoryIndex index.html index.htm ←「index.htm」を追加します。

追加後は、設定を反映させるためApacheの再起動を行います。
[root@Tiger ~]# /etc/init.d/httpd restart

Apacheで採用しているモジュールを確認する

2013年7月19日

Apacheにはたくさんの豊富な機能がありますが、それは、「モジュール」として提供されています。
モジュールを確認するには、「/etc/init.d/httpd」コマンドに「-M」オプションを指定して実行します。

[root@Tiger ~]# /etc/init.d/httpd -M
Loaded Modules:
core_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
authn_file_module (shared)
authn_dbm_module (shared)
authn_anon_module (shared)
authn_dbd_module (shared)
authn_default_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_user_module (shared)
authz_dbm_module (shared)
〜中略〜
actions_module (shared)
speling_module (shared)
userdir_module (shared)
alias_module (shared)
rewrite_module (shared)
Syntax OK

各モジュールの後ろにある(static)と(shared)の意味は下記のとおりです。
(static):固定で組み込まれている静的モジュール
(shared):実行時に読み込まれる動的モジュール

上記モジュールの中で特に有名なのは、 mpm_prefork_moduleです。
このモジュールの名称の先頭にmpmが付いていますが、
これは「Multi Processing Module」を意味しており、クライアントからの処理機能を
モジュール化して、モジュールを取り替えることで、Apacheを最適化する仕組みです。

また、Apacheで採用している静的モジュールだけを一覧表示したい場合は、
「/etc/init.d/httpd」コマンドに「-l」オプションを指定して実行します。

[root@Tiger ~]# /etc/init.d/httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

apachectlを実行しても同じ結果が得られます。
[root@Tiger ~]# /usr/local/apache2/bin/apachectl -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

Apacheの設定ファイル(httpd.conf)の編集誤りを確認する

2013年7月18日

Apacheの設定ファイル(httpd.conf)の編集を行ったら、
編集内容に誤りがないか確認を行います。

インストール方法にもよりますが、httpd.confファイルは、
/etc/httpd/conf/ディレクトリか/usr/local/apache2/conf/ディレクトリなどに格納されています。
詳しくは、httpd.confファイルのServerRootに設定されているディレクトリを確認してください。

構文誤りをテストするには、/etc/init.d/httpdに「configtest」を指定します。
「Syntax OK」と表示されれば、構文に問題がないことになります。
※apachectlにconfigtestを指定して実行しても同じ結果が得られます。

[root@Tiger ~]# /etc/init.d/httpd configtest
Syntax OK

[root@Tiger ~]# /usr/local/apache2/bin/apachectl configtest
Syntax OK

また、構文に誤りがある場合、下記のように表示されます。
[root@Tiger ~]# /etc/init.d/httpd configtest
Syntax error on line 31 of /usr/local/apache2/conf/httpd.conf:
Invalid command 'dd', perhaps misspelled or defined by a module not included in the server configuration

上記のメッセージでは、「line 31」(31行目)に誤りがあることが指摘されています。
このれいでは、「dd」という文字が余分に入っていることを意味していますので、
これを削除する必要があります。

使用中のプロセスが終了するのを待ってhttpdサービスを停止する

2013年7月17日

httpdサービスを再起動するには、stopを指定します。
しかし、stopは、クライアントと接続中のhttpdプロセスを停止してしまうため、
クライアントとの通信が強制的に切断されてしまいます。

通信中のクライアントとのhttpdプロセスを停止させないで、
プロセスが終了するのを待ってから停止するには、
graceful-stop」を指定します。

graceful-stopを実行すると、すべてのクライアントとの通信が終了するまで停止しません。
(通信状況によってはかなり待つ必要があります。)
しかし、クライアントとの通信接続保持を最優先システムでは効果的に使用出来ます。

この停止は、「使用中のプロセスが終了するのを待ってhttpdサービスを再起動する
と似ていますが、/etc/init.d/httpdを指定して実行出来ません。

graceful-stopを実行するには、元になっている「apachectl」を指定して実行をします。

■使用中のプロセスが終了するのを待ってhttpdサービスを停止する
[root@Tiger ~]# /usr/local/apache2/bin/apachectl graceful-stop

graceful-stopを実行しても「OK」などの表示はされません。

使用中のプロセスが終了するのを待ってhttpdサービスを再起動する

2013年7月16日

httpdサービスを再起動するには、restartを指定します。
しかし、restartは、クライアントと接続中のhttpdプロセスを停止してしまうため、
クライアントとの通信が強制的に切断されてしまいます。

通信中のクライアントとのhttpdプロセスを停止させないで、
プロセスが終了するのを待ってから再起動するには、
graceful」を指定します。

gracefulを実行すると、すべてのクライアントとの通信が終了するまで再起動しません。
(通信状況によってはかなり待つ必要があります。)
しかし、クライアントとの通信接続保持を最優先システムでは効果的に使用出来ます。

■使用中のプロセスが終了するのを待ってhttpdサービスを再起動する
[root@Tiger ~]# /etc/init.d/httpd graceful

gracefulを実行しても「OK」などの表示はされません。

httpdサービスを起動・停止する

2013年7月12日
httpdサーバー(Apache)は、セキュリティ上、デフォルトでは起動していません。
httpdサービスを起動するには、手動で起動する必要があります。
このデーモンは、/etc/init.d/httpdスクリプト、
または/etc/rc.d/init.d/httpdスクリプトによって管理されています。

httpdスクリプトに引数を渡すことで制御を行います。

■httpdスクリプトの引数
start httpdを起動します。
stop httpdを停止します。
restart httpdを再起動します。
reload ファイルを再読み込みします。
condrestart httpdが起動している時には、再起動します。
status httpdの状態を表示します。
fullstatus httpdの詳細情報を表示します。
graceful httpdのプロセスが終了するのを待ってhttpdを再起動します。
configtest 設定ファイルの構文誤りをチェックします。


■httpdサービスの起動
[root@Tiger ~]# /etc/init.d/httpd start

■httpdサービスの停止
[root@Tiger ~]# /etc/init.d/httpd stop

■httpdサービスの再起動
[root@Tiger ~]# /etc/init.d/httpd restart

■設定ファイルの構文誤りをチェック
[root@Tiger ~]# /etc/init.d/httpd configtest
Syntax OK

■httpdの詳細情報を表示
[root@Tiger ~]# /etc/init.d/httpd fullstatus
Apache Server Status for localhost

Server Version: Apache/2.0.64 (Unix) DAV/2
Server Built: Aug 23 2012 14:36:58
__________________________________________________________________

Current Time: Friday, 12-Jul-2013 16:01:36 JST
Restart Time: Friday, 12-Jul-2013 16:01:35 JST
Parent Server Generation: 2
Server uptime: 1 second
1 requests currently being processed, 4 idle workers

__W__...........................................................
................................................................
................................................................
................................................................

Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process

PID Key:
1640 in state: _ , 1641 in state: _ , 1642 in state: W
1643 in state: _ , 1644 in state: _ ,
__________________________________________________________________

To obtain a full report with current status information you need to use
the ExtendedStatus On directive.
__________________________________________________________________


Apache/2.0.64 (Unix) DAV/2 Server at localhost Port 80

dmidecodeコマンドでLinuxのハードウェアの情報を取得する

2013年6月14日

dmidecodeコマンドは、Linuxのハードウェアの情報を取得するコマンドです。
例えば、マシンの型番、ベンダー、シリアルなど、様々なハードウェアの情報が得られます。

# dmidecode
# dmidecode 2.11
SMBIOS 2.4 present.
364 structures occupying 16040 bytes.
Table at 0x000E0010.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Phoenix Technologies LTD
Version: 6.00
Release Date: 07/02/2012
Address: 0xEA0C0
Runtime Size: 89920 bytes
ROM Size: 64 kB
Characteristics:
ISA is supported
PCI is supported
PC Card (PCMCIA) is supported
PNP is supported
APM is supported
BIOS is upgradeable
BIOS shadowing is allowed
ESCD support is available
Boot from CD is supported
Selectable boot is supported
EDD is supported
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
CGA/mono video services are supported (int 10h)
ACPI is supported
Smart battery is supported
BIOS boot specification is supported
Function key-initiated network boot is supported
Targeted content distribution is supported
BIOS Revision: 4.6
Firmware Revision: 0.0

Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: VMware, Inc.
Product Name: VMware Virtual Platform
Version: None
Serial Number: VMware-56 4d b6 9c ba 29 d8 13-4c c0 d2 5b c7 32 79 44
UUID: 564DB69C-BA29-D813-4CC0-D25BC7327944
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified

以下省略


dmidecodeコマンドを実行すると、多くの情報が表示されるので、lessコマンドにパイプするか、
必要な情報のみをgrepコマンドで抽出すると良いでしょう。

■機器のシリアルナンバーを調べる
# dmidecode | grep Serial

■BIOSのバージョン(リリース日)を調べる
# dmidecode | grep Release

dmidecodeコマンドは、「--type」オプションに特定のキーワードを付けて実行することも可能です。
dmidecode --type キーワード

例えば、メモリ情報を表示するには下記のように実行します。
■メモリの情報を抽出する
# dmidecode --type memory

他に使用出来るキーワードは下記のとおりです。

■キーワード
bios
system
baseboard
chassis
processor
memory
connector
slot

キーワード以外にも項目を番号で指定しての実行も可能です。
例えばprocessorはNo.4に対応しているので、以下のコマンドを実行します。

■processorを項目番号で表示する
# dmidecode --type 4

yumでダウンロードしたrpmを残す

2013年4月27日

yumでダウンロードしたrpmを残すには、
/etc/yum.confファイルの「keepcache」の設定を
「1」にしてyumを実行します。

実行後、下記ディレクトリにyumインストールしようした
ファイルが削除されず保存されています。

■yumダウンロードしたファイルの保存ディレクトリ
※下記ディレクトリは環境によって異なります。
/var/cache/yum/i386/6/base/packages/
/var/cache/yum/i386/6/epel/packages/
/var/cache/yum/i386/6/rpmforge/packages/


[root@Tiger ~]# vi /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
#keepcache=0
keepcache=1  ←「keepcache」の設定を「1」にします。
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

tarコマンドでアーカイブファイルを展開する

2013年3月 8日

アーカイブファイルを展開するには、tarコマンドに「-x」オプションを付けて実行します。
保存対象がテープではなく、ファイルの場合は「-f」オプションも付けます。

また、展開の実行結果を表示させるには、「-v」オプションを付け、
更に圧縮されている場合には、「-z」オプションも付けます。

展開後ディレクトリに、アーカイブ内に同じ名前のファイルやディレクトリが存在した場合、
タイムスタンプを比較し、新しい日付のファイル、ディレクトリが残ります。
オプション「-k」を付けることで、同じファイルが存在した場合には、
警告を表示して処理を中断させることも可能です。

引数にはこれらのオプションの他に、展開したいアーカイブファイル名を指定し、
これらアーカイブファイルは展開後も削除されず残ります。

▼アーカイブファイルを展開する
---------------------------------------------------------------------------
[pakira@Tiger ~]$ ls -l ←カレントディレクトリ内を表示します。
-rw-rw-r-- 1 pakira pakira 5056 3月 5 07:29 2013 work.tar.gz
[pakira@Tiger ~]$ tar zxvf work.tar.gz ←アーカイブファイルを展開します。
work/
work/country_list_cpm2.txt
work/country_list.tgz
work/country_list.txt
work/country_list.tbz2
work/country_list_cpm1.txt
work/country_list_column.txt
---------------------------------------------------------------------------

▼同名のファイルが存在する場合、警告を表示して展開を中止する
---------------------------------------------------------------------------
[pakira@Tiger ~]$ tar zxvfk work.tar.gz ←オプション「-k」を付けて実行します。
work/
work/country_list_cpm2.txt
tar: work/country_list_cpm2.txt: open 不能: ファイルが存在します
work/country_list.tgz
tar: work/country_list.tgz: open 不能: ファイルが存在します
work/country_list.txt
tar: work/country_list.txt: open 不能: ファイルが存在します
work/country_list.tbz2
tar: work/country_list.tbz2: open 不能: ファイルが存在します
work/country_list_cpm1.txt
tar: work/country_list_cpm1.txt: open 不能: ファイルが存在します
work/country_list_column.txt
tar: work/country_list_column.txt: open 不能: ファイルが存在します
tar: 前のエラーにより失敗ステータスで終了します
↑同名のファイルが存在するため、警告を表示して展開を中止します。
---------------------------------------------------------------------------

なお、tarコマンドはオプションの「-」(ハイフン)を省略できます。

■関連記事
tarコマンド

tarコマンドでディレクトリを圧縮(アーカイブ)する方法|除外設定も

2013年3月 6日
tarコマンドでディレクトリを圧縮(アーカイブ)できると、サーバーの引っ越しやバックアップで、ディレクトリを丸ごと圧縮して保存することができるようになります。運用保守の現場では、数十万個のファイルがあるディレクトリを1つのファイルにまとめる(アーカイブする)作業が頻繁に発生します。

この記事では、Linuxの tar コマンドを使ってディレクトリを圧縮・アーカイブする実践的な手順を解説します。単一のディレクトリだけでなく、複数ディレクトリのまとめ方や、不要なファイルを除外する(--exclude)、解凍先の指定といった現場のノウハウまで網羅しました。

1. ディレクトリを丸ごと圧縮する(基本)

特定のディレクトリを丸ごと1つのアーカイブファイル(.tar.gzなど)にまとめるには、tar コマンドに czvf オプションを付けます。

基本構文は以下の通りです。

# tar czvf [作成する圧縮ファイル名] [圧縮したいディレクトリ名]


例えば、「work」というディレクトリを「work.tar.gz」という名前で圧縮する場合は以下のようになります。

$ ls -l drwxrwxr-x 2 user user 4096 2月 21 10:00 work $ tar czvf work.tar.gz work/ work/ work/list.txt work/config.php

圧縮が完了すると、カレントディレクトリに work.tar.gz が作成されます。

続きを読む "tarコマンドでディレクトリを圧縮(アーカイブ)する方法|除外設定も"

tarコマンドで作成したアーカイブの内容を表示する

2013年3月 1日

tarコマンドで作成したアーカイブの内容を表示するには、
「t」オプションを付けてtarコマンドを実行します。
ファイルとして保存してあるのであれば、「f」オプションを併用します。

また、「v」オプションを指定しない場合は、
アーカイブに含まれるファイル名のみが表示され、
指定した場合は、それぞれのファイルの属性などの
詳細情報が表示されます。

※tarコマンドはオプション指定の「-」(ハイフン)を省略できます。

▼アーカイブの内容を表示する(ファイル名のみ表示)
------------------------------------
[pakira@Tiger work]$ tar tf country_list.tgz ←アーカイブファイルの内容を表示します。
country_list.txt
country_list_column.txt
country_list_cpm1.txt
country_list_cpm2.txt
------------------------------------

▼アーカイブの内容を表示する(詳細情報表示)
------------------------------------
[pakira@Tiger work]$ tar tvf country_list.tgz ←アーカイブファイルの内容を表示します。
-rw-rw-r-- pakira/pakira 2000 2013-01-22 07:59 country_list.txt
-rw-rw-r-- pakira/pakira 2000 2013-01-22 08:09 country_list_column.txt
-rw-rw-r-- pakira/pakira 2000 2013-01-25 05:50 country_list_cpm1.txt
-rw-rw-r-- pakira/pakira 2001 2013-02-14 07:09 country_list_cpm2.txt
------------------------------------

▼Bzip2形式で圧縮されたアーカイブの内容を表示する(詳細情報表示)
------------------------------------
[pakira@Tiger work]$ tar tjvf country_list.tbz2 ←Bzip2形式アーカイブファイルの内容を表示します。
-rw-rw-r-- pakira/pakira 2000 2013-01-22 07:59 country_list.txt
-rw-rw-r-- pakira/pakira 2000 2013-01-22 08:09 country_list_column.txt
-rw-rw-r-- pakira/pakira 2000 2013-01-25 05:50 country_list_cpm1.txt
-rw-rw-r-- pakira/pakira 2001 2013-02-14 07:09 country_list_cpm2.txt
------------------------------------
※Bzip2形式で圧縮されたアーカイブの内容を表示するには、
 オプション「j」を指定して実行します。

■関連記事
tarコマンド

Zip形式で圧縮されたファイルから特定の文字列を含む行を抽出する

2013年2月28日

gzipコマンドを使用して圧縮保存されたファイルに文字列検索を行う場合、
grepやegrepコマンドでは検索できません。

圧縮ファイルを検索するには、zgrepコマンド、zegrepコマンドを使用します。
両コマンドとも、基本操作はgrepコマンドと変わりません。
引数にマッチさせたいパターン、検索したいファイルを指定して実行します。

grepコマンド圧縮ファイルを検索する
[pakira@Tiger work]$ grep -i 'new' country_list.txt.gz
↑圧縮ファイル「country_list.txt.gz」をgrepコマンドで大文字小文字を区別せずに「new」で検索します。
[pakira@Tiger work]$  ←圧縮ファイルなので検索できません。

zgrepコマンド圧縮ファイルを検索する
[pakira@Tiger work]$ zgrep -i "new" country_list.txt.gz
↑圧縮ファイル「country_list.txt.gz」をzgrepコマンドで大文字小文字を区別せずに「new」で検索します。
New Zealand
Papua New Guinea
↑条件にマッチした行が表示されます。

zegrepコマンド圧縮ファイルを検索する
[pakira@Tiger work]$ zegrep -i "new" country_list.txt.gz
↑圧縮ファイル「country_list.txt.gz」をzegrepコマンドで大文字小文字を区別せずに「new」で検索します。
New Zealand
Papua New Guinea
↑条件にマッチした行が表示されます。

特定の文字列を含まないファイルを検索する(特定のディレクトリを対象)

2013年2月18日

下記ページとは逆に、特定のディレクトリ内にあるファイルから、特定の文字列を含まない
ファイルを検索するには、grepコマンドに「-L」オプションを付け、引数として検索対象の
ディレクトリを指定して実行します。
オプション「-L」は、パターンに含まれないファイルを表示するためのオプションになります。

また、「-r」または、「-R」を付けることで、以下に階層を含めて回帰的に検索を行えます。
特定の文字列を含むファイルを検索する(特定のディレクトリを対象)

[pakira@Tiger ~]$ grep -ril 'japan' work
↑「japan」を含むファイルをworkディレクトリ内から検索して表示します。(オプション-rを使用)
work/country_list.txt
work/country_list_cpm1.txt
work/country_list_column.txt

[pakira@Tiger ~]$ grep -Lir 'japan' work
↑「japan」を含まないファイルをworkディレクトリ内から検索して表示します。(オプション-rを使用)
work/country_list_cpm2.txt

■関連記事
grepコマンド

特定の文字列を含むファイルを検索する(特定のディレクトリを対象)

2013年2月14日

特定のディレクトリ内に含まれるファイルから、特定の文字列を含むファイルだけを
検索するには、grepコマンドに引数として検索対象のディレクトリを指定して実行します。
また、「-r」または、「-R」を付けることで、以下に階層を含めて回帰的に検索を行えます。


[pakira@Tiger ~]$ grep -ri 'japan' work
↑「japan」を含むファイルをworkディレクトリ内から検索して表示します。(オプション-rを使用)
work/country_list_cpm2.txt:Japan
work/country_list.txt:Japan
work/country_list_cpm1.txt:Japan
work/country_list_column.txt:Japan

[pakira@Tiger ~]$ grep -Ri 'japan' work
↑「japan」を含むファイルをworkディレクトリ内から検索して表示します。(オプション-Rを使用)
work/country_list_cpm2.txt:Japan
work/country_list.txt:Japan
work/country_list_cpm1.txt:Japan
work/country_list_column.txt:Japan

■関連記事
grepコマンド

grepコマンドの検索結果をさらに絞り込む

2013年2月13日

grepコマンドを使用して、特定条件の検索を行った結果、さらに絞り込みを行いたい場合があります。
その場合、パイプを利用すると結果表示を絞り込むことができます。

[pakira@Tiger ~]$ grep -i "ja" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「ja」を含む文字列を抽出します。
Japan
Azerbaijan
Jamaica
Libyan Arab Jamahiriya

[pakira@Tiger ~]$ grep -i "ja" country_list.txt | grep -i "Jamahiriya"
↑オプション「-i」で大文字、小文字を区別せず、「ja」を含む文字列を抽出した後、
パイプを利用して、追加条件として「Jamahiriya」を含む行を絞り込んでいます。
Libyan Arab Jamahiriya


■関連記事
grepコマンド

ファイルから完全に一致する行のみ抽出する

2013年2月 8日

grepコマンドで、完全に一致する行のみを抽出するには、オプション「-x」を付け、
引数に検索したいパターンを指定して実行します。

[pakira@Tiger ~]$ grep -x 'Libyan ArabJamahiriya' country_list.txt ←「Libyan ArabJamahiriya」を検索します。
[pakira@Tiger ~]$    ←該当する行がないため、何も表示されません。
[pakira@Tiger ~]$ grep -x 'Libyan ArabJamahiriy' country_list.txt ←「Libyan ArabJamahiriy」を検索します。
[pakira@Tiger ~]$    ←該当する行がないため、何も表示されません。
[pakira@Tiger ~]$ grep -x 'Libyan Arab Jamahiriya' country_list.txt ←「Libyan Arab Jamahiriya」を検索します。
Libyan Arab Jamahiriya  ←完全一致したので表示されます。
[pakira@Tiger ~]$

■関連記事
grepコマンド

ファイル内の特定文字列が何行含まれているか表示する

2013年2月 5日

grepコマンドで、特定文字列が含まれる行を表示させる場合、
事前にその行が何行あるのか知りたい場合があります。

そのような場合は「-c」オプションを使用することで、特定文字列を含む行数が表示されます。

[pakira@Tiger ~]$ grep -i "en" country_list.txt ←enを含む行を表示します。
Argentina
Armenia
Benin
Central African Republic
Denmark
Grenada
Kenya
Liechtenstein
Montenegro
Saint Vincent and the Grenadines
Senegal
Slovenia
Sweden
Turkmenistan
Venezuela
Yemen
[pakira@Tiger ~]$ grep -ic "en" country_list.txt ←enを含む行数が何行あるのか表示します。
16    ←16行あることがわかります。

■関連記事
grepコマンド

ファイルから特定の文字列が含まれない行を抽出する

2013年2月 4日

ファイルから特定の文字列を排除して、
表示させるにはgrepコマンドに「-v」オプションを付けて実行します。

[pakira@Tiger ~]$ more country_list.txt ←ファイル内容を表示します。
Japan
Afghanistan
Algeria
Andorra
Angola
Antigua and Barbuda
Argentina
Armenia
Australia
Austria

[pakira@Tiger ~]$ grep -iv "an" country_list.txt ←「an」を含む行を排除して表示します。
Algeria
Argentina
Armenia
Australia
Austria
Bahamas     ←anを含む行を含まずに結果表示されます。
Bahrain
Barbados
Belarus
Belgium
Belize
Benin

ファイル内の特定文字列を行番号含めて表示する

2013年2月 1日

grepコマンドを使用すれば、ファイル内の特定の文字列を検索して抽出できます。
しかし、その文字列がファイル内のどの行にあるかまではわかりません。
検索文字列を行番号と共に抽出したい場合は、grepコマンドにオプション「-n」を
付けて実行します。

[pakira@Tiger ~]$ grep -in "en" country_list.txt ←行番号を付けて文字列を表示します。
7:Argentina
8:Armenia
19:Benin
33:Central African Republic
49:Denmark
70:Grenada
90:Kenya             ←「en」を含む文字列が行番号と共に表示されます。
100:Liechtenstein
116:Montenegro
148:Saint Vincent and the Grenadines
153:Senegal
159:Slovenia
168:Sweden
180:Turkmenistan
191:Venezuela
193:Yemen

■関連記事
grepコマンド

ファイル内の特定文字で終わる文字列を抽出する

2013年1月31日

データの多いファイルから特定の文字列を抽出する場合、grepコマンドを使用します。
grepコマンドの引数に、抽出したい文字列と、ファイルを指定しますが、
単純に特定文字列を指定しても、目的の文字列を抽出できない場合があります。

その場合、更に追加条件として、特定の文字列で終わる抽出を行うことで
目的の文字列を抽出することができます。

今回の追加条件は、「$」(ダラー)を付けることで、その文字列で終わる
データを抽出することができます。

[pakira@Tiger ~]$ grep -i "en" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「en」を含む文字列を抽出します。
Argentina
Armenia
Benin
Central African Republic
Denmark
Grenada
Kenya
Liechtenstein
Montenegro
Saint Vincent and the Grenadines
Senegal
Slovenia
Sweden
Turkmenistan
Venezuela
Yemen
↑「en」を含む文字列データが複数抽出されます。

[pakira@Tiger ~]$ grep -i "en$" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「en」で終わる文字列を抽出します。
Sweden
Yemen
↑「en」で終わる文字列データが抽出されます。

■関連記事
grepコマンド

ファイル内の特定文字から始まる文字列を抽出する

2013年1月30日

データの多いファイルから特定の文字列を抽出する場合、grepコマンドを使用します。
grepコマンドの引数に、抽出したい文字列と、ファイルを指定しますが、
単純に特定文字列を指定しても、目的の文字列を抽出できない場合があります。

その場合、更に追加条件として、特定の文字列から始まる抽出を行うことで
目的の文字列を抽出することができます。

今回の追加条件は、「^」(キャロット)を付けることで、その文字列から始まる
データを抽出することができます。

[pakira@Tiger ~]$ grep -i "ja" country_list.txt 
↑オプション「-i」で大文字、小文字を区別せず、「ja」を含む文字列を抽出します。
Japan
Azerbaijan
Jamaica
Libyan Arab Jamahiriya
↑「ja」を含む文字列データが複数抽出されます。

[pakira@Tiger ~]$ grep -i "^ja" country_list.txt
↑オプション「-i」で大文字、小文字を区別せず、「ja」から始まる文字列を抽出します。
Japan
Jamaica
↑「ja」から始まる文字列データが抽出されます。

■関連記事
grepコマンド

オンラインマニュアルをテキストファイルに保存する

2013年1月29日

オンラインマニュアルは、manコマンドの引数に参照したいコマンドを
指定して実行することでそのコマンドのオンラインマニュアルを参照することができます。

通常、オンラインマニュアルは、Linuxシステムを使用中に参照するものですが、
これをテキストファイルに保存したり、印刷を行いたい場合もあるかと思います。
そのような場合は、リダイレクトを使用してテキストファイルに保存します。

保存したファイルは、lprコマンドを使用して印刷を行ったり、
moreやviewコマンドで参照することができます。

[pakira@Tiger ~]$ man ls > ls_man.txt 
↑lsコマンドのオンラインマニュアルを「ls_man.txt」ファイルに保存します。
[pakira@Tiger ~]$ more ls_man.txt ←「ls_man.txt」ファイルを参照します。
----------------------以下ファイルの内容を表示----------------------
LS(1) LS(1)

名前
ls, dir, vdir - ディレクトリの中身をリスト表示する

書式
ls [options] [file...]

POSIX オプション: [-CFRacdilqrtu1]

GNU オプション (簡略形式): [-1abcdfghiklmnopqrstuvxABCDFGHLNQRSUX] [-w
cols] [-T cols] [-I pattern] [--block-size=SIZE] [--classify]
[--color[={none,always,auto}]] [--file-type] [--full-time] [--for-
mat={across,commas,long,single-column,verbose,vertical}] [--human-read-
able] [--indicator-style={none,file-type,classify}] [--quot-
ing-style={c,clocale,escape,literal,locale,shell,shell-always}]
[--show-control-chars] [--si] [--sort={none,extension,size,time,ver-
sion}] [--time={atime,access,ctime,status,use}] [--help] [--version]
[--]

説明
プ ログラム ls は、最初にディレクトリでない引き数 file をリスト表示する
。それから、ディレクトリである引き数について、それぞれのディレクトリ に
あ るリスト表示可能なすべてのファイルを表示する。オプション以外の引き数
が何もない場合、デフォルトの引き数として ‘.’ (現在のディレクトリ) を仮
定 する。 -d オプションは、ディレクトリをディレクトリでない引き数として
扱わせるようにする。ファイル名が ‘.’ で始まっていなければ、そのファイル
は 表示される。 ‘.’ で始まる名前のファイルでも、-a オプションが指定され
ていれば表示される。

■関連記事
lsコマンド
moreコマンド
viewコマンド

3つのファイルの差分を表示する

2013年1月28日
Linuxでは、
diff3コマンドを使用することで
3つのファイル比較が行えます。

diff3コマンドの引数に
比較したいファイルを3つ指定して実行します。

$ cat country_list_cpm1.txt ←country_list_cpm1.txtファイルの内容を表示します。 Japan Afghanistan Algeria Andorra Angola Antigua and Barbuda Argentina $ cat country_list_cpm2.txt ←country_list_cpm2.txtファイルの内容を表示します。 Japan1 Afghanistan Algeria Bahrain Angola Antigua and Barbuda Argentina $ cat country_list_cpm3.txt ←country_list_cpm3.txtファイルの内容を表示します。 Japan3 Afghanistan Algeria Andorra Angola Antigua and Barbuda Cambodia


続きを読む "3つのファイルの差分を表示する"

cmpコマンドで2つのファイルを比較する

2013年1月25日

Linuxシステムでは、異なるディレクトリに同名のファイルが存在する場合があります。
そのような時、これらファイルに違いがあるかを確認するには、cmpコマンドを使用します。

引数に比較したいファイルを指定して実行します。
違いがある場合は、バイト位置と行番号を表示します。

また、cmpコマンドは相違点がない場合は、
メッセージを表示せずプロンプトのみが表示されます。

[pakira@Tiger ~]$ cat country_list_cpm1.txt ←ファイルの内容を表示します。
Japan
Afghanistan
Algeria
Andorra
Angola
Antigua and Barbuda
Argentina
Armenia
Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Brazil
Brazil Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada

[pakira@Tiger ~]$ cat country_list_cpm2.txt ←ファイルの内容を表示します。
Japan
Afghanistan
Algeria
Andorra
Angola
Antigua and Barbuda
Argentina
Armenia
Australia
Canada
Austria
Azerbaijan
Bahamas
Bangladesh
Bahrain
Barbados
Belarus
Belgium
Belize
Benin
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Brazil
Brazil Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
[pakira@Tiger ~]$ cmp country_list_cpm1.txt country_list_cpm2.txt
↑2つのファイルを比較し、相違点があれば、結果を表示します。
country_list_cpm1.txt country_list_cpm2.txt 異なります: バイト 90、行 10 ←10行目に相違点があります。

ただしcmpコマンドは、1つの違いが見つかると、その時点で結果を出力します。
他にも相違点がありそれらすべて知りたい場合は、diffコマンドを使用します。

関連記事
diifコマンド

行番号を付けてファイルの内容を表示する

2013年1月23日

catコマンドやlessコマンドは、ファイルの内容を表示するコマンドです。
行数の少ないファイルを参照する場合は、
そのまま実行してもあまり支障はありませんが、
数十行、数百行に及ぶファイルの内容を表示する場合には、
行番号を付加して表示したほうが便利です。

その場合、catコマンドには「-n」オプション、
lessコマンドには、「-N」オプションを付けて実行すると
行番号を付けてファイルの内容を表示することができます。

[pakira@Tiger ~]$ cat -n country_list.txt ←行番号を付けてファイルの内容を表示します。
1 Japan
2 Afghanistan
3 Algeria
4 Andorra
5 Angola
6 Antigua and Barbuda
7 Argentina
8 Armenia
9 Australia
10 Austria
11 Azerbaijan
12 Bahamas
13 Bahrain
14 Bangladesh

[pakira@Tiger ~]$ less -N country_list.txt ←行番号を付けてファイルの内容を表示します。
1 Japan
2 Afghanistan
3 Algeria
4 Andorra
5 Angola
6 Antigua and Barbuda
7 Argentina
8 Armenia
9 Australia
10 Austria
11 Azerbaijan
12 Bahamas
13 Bahrain
14 Bangladesh
15 Barbados
16 Belarus
17 Belgium
18 Belize
19 Benin
20 Bhutan
21 Bolivia
22 Bosnia and Herzegovina
23 Botswana
24 Brazil
25 Brazil Darussalam

関連記事
catコマンド
lessコマンド

表形式でテキストファイルの内容を表示する

2013年1月22日

テキストファイル内に箇条書きに保存されているデータを
表形式に変換して表示させるには、columnコマンドを使用します。

■表形式でテキストファイルの内容を表示する
[pakira@Tiger ~]$ head -15 country_list.txt ←箇条書きに国名が保存されています。
Japan
Afghanistan
Algeria
Andorra
Angola
Antigua and Barbuda
Argentina
Armenia
Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados

[pakira@Tiger ~]$ column country_list.txt  ←表形式でファイルの内容を表示します。
Japan Libyan Arab Jamahiriya
Afghanistan Liechtenstein
Algeria Lithuania
Andorra Luxembourg
Angola Madagascar
Antigua and Barbuda Malawi
Argentina Malaysia
Armenia Maldives
Australia Mali
Austria Malta
Azerbaijan Marshall Islands
Bahamas Mauritania
Bahrain Mauritius
Bangladesh Mexico
Barbados Micronesia
Belarus Monaco

ディレクトリ内のファイル数を表示する

2013年1月18日

lsコマンドは、カレントディレクトリや特定のディレクトリ内にあるファイルを表示することできます。
しかし、多数のファイルが存在する場合、ファイル名やディレクトリ名ではなく、
ファイル数を知りたいという場合があります。

このような場合、ファイル検索コマンドのfindコマンドと、
カウントを行うwcコマンドを併用することでファイル数を得ることができます。

findコマンドにオプションとして数えたいディレクトリ、「-type」オプションでファイルの種類、
さらにパイプ「|」を使用して、wcコマンドの標準入力として結果を渡し、
wcコマンドに「-l」オプションを付けて行数をカウントして数を表示させます。

■ファイル数を表示する
[pakira@Tiger ~]$ find /home/pakira/ -type f | wc -l  ←ファイル数を表示します。
16 ←16ファイル存在します。

■ディレクトリ数を表示する
[root@Tiger ~]# find /var/log -type d | wc -l ←ディレクトリ数を表示します。
6 ←6ディレクトリ存在します。

ちなみに、findコマンドを実行すると、下記ファイルが検索されます。
「.」(ドット)から始まる隠しファイルも検索対象になります。

[pakira@Tiger ~]$ find /home/pakira/ -type f
/home/pakira/server.jpg
/home/pakira/server.TIFF
/home/pakira/server.BMP
/home/pakira/custom_install.doc
/home/pakira/server_90.jpg
/home/pakira/.bashrc
/home/pakira/.bash_profile
/home/pakira/custom_install.pdf
/home/pakira/.history
/home/pakira/server_640x480.jpg
/home/pakira/server_60.PNG
/home/pakira/server_60.jpg
/home/pakira/.bash_history
/home/pakira/server.PNG
/home/pakira/.bash_logout
/home/pakira/custom_install.ps
[pakira@Tiger ~]$

関連記事
findコマンド
wcコマンド

修正時刻が新しい順にファイルを並べて表示する

2013年1月17日

ディレクトリ内にあるファイルを表示する場合、
特に指定が無ければファイル名を基準にアルファベット順に表示されます。

しかし、目的のファイルを修正時刻順に表示することで、
見つけやすくなる場合があります。
その場合、lsコマンドにオプション「-t」を付けて実行することで、
修正時刻が新しい順に並べて表示することができます。

これはinodeのi_mtimeという値を基準にしており、
最終修正時刻が新しい順にファイルが並んで表示されます。

[pakira@Tiger ~]$ ls -l ←カレントディレクトリの内容を表示します。
合計 159480
-rw-r--r-- 1 pakira pakira 16452096 1月 10 08:22 2013 custom_install.doc
-rw-rw-r-- 1 pakira pakira 40830438 1月 10 08:51 2013 custom_install.pdf
-rw-rw-r-- 1 pakira pakira 66680395 1月 10 08:37 2013 custom_install.ps
-rw-rw-r-- 1 pakira pakira 14745654 12月 26 05:46 2012 server.BMP
-rw-rw-r-- 1 pakira pakira 7661465 12月 26 05:47 2012 server.PNG
-rw-rw-r-- 1 pakira pakira 8353071 12月 26 05:47 2012 server.TIFF
-rw-r--r-- 1 pakira pakira 2302349 12月 26 05:46 2012 server.jpg
-rw-rw-r-- 1 pakira pakira 2971456 12月 27 07:02 2012 server_60.PNG
-rw-rw-r-- 1 pakira pakira 885383 12月 27 06:56 2012 server_60.jpg
-rw-rw-r-- 1 pakira pakira 153010 12月 27 06:55 2012 server_640x480.jpg
-rw-rw-r-- 1 pakira pakira 2242568 12月 27 06:50 2012 server_90.jpg

[pakira@Tiger ~]$ ls -lt ←カレントディレクトリ内のファイルを修正時刻が新しい順に並べて表示します。
合計 159480
-rw-rw-r-- 1 pakira pakira 40830438 1月 10 08:51 2013 custom_install.pdf
-rw-rw-r-- 1 pakira pakira 66680395 1月 10 08:37 2013 custom_install.ps
-rw-r--r-- 1 pakira pakira 16452096 1月 10 08:22 2013 custom_install.doc
-rw-rw-r-- 1 pakira pakira 2971456 12月 27 07:02 2012 server_60.PNG
-rw-rw-r-- 1 pakira pakira 885383 12月 27 06:56 2012 server_60.jpg
-rw-rw-r-- 1 pakira pakira 153010 12月 27 06:55 2012 server_640x480.jpg
-rw-rw-r-- 1 pakira pakira 2242568 12月 27 06:50 2012 server_90.jpg
-rw-rw-r-- 1 pakira pakira 8353071 12月 26 05:47 2012 server.TIFF
-rw-rw-r-- 1 pakira pakira 7661465 12月 26 05:47 2012 server.PNG
-rw-rw-r-- 1 pakira pakira 14745654 12月 26 05:46 2012 server.BMP
-rw-r--r-- 1 pakira pakira 2302349 12月 26 05:46 2012 server.jpg

関連記事
lsコマンド

拡張子ごとにファイルを並べて表示する

2013年1月16日

ディレクトリ内にあるファイルを表示する場合、
特に指定が無ければ、ファイル名を基準にアルファベット順に表示されます。

しかし、拡張子ごとに表示することで、
目的のファイルを見つけやすくなる場合があります。

lsコマンドにオプション「-X」を付けて実行することで、
ファイルを拡張子ごとに並べて表示することができます。
「-X」オプションは大文字のXを指定します。

[pakira@Tiger ~]$ ls -l ←カレントディレクトリの内容を表示します。
合計 159480
-rw-r--r-- 1 pakira pakira 16452096 1月 10 08:22 2013 custom_install.doc
-rw-rw-r-- 1 pakira pakira 40830438 1月 10 08:51 2013 custom_install.pdf
-rw-rw-r-- 1 pakira pakira 66680395 1月 10 08:37 2013 custom_install.ps
-rw-rw-r-- 1 pakira pakira 14745654 12月 26 05:46 2012 server.BMP
-rw-rw-r-- 1 pakira pakira 7661465 12月 26 05:47 2012 server.PNG
-rw-rw-r-- 1 pakira pakira 8353071 12月 26 05:47 2012 server.TIFF
-rw-r--r-- 1 pakira pakira 2302349 12月 26 05:46 2012 server.jpg
-rw-rw-r-- 1 pakira pakira 2971456 12月 27 07:02 2012 server_60.PNG
-rw-rw-r-- 1 pakira pakira 885383 12月 27 06:56 2012 server_60.jpg
-rw-rw-r-- 1 pakira pakira 153010 12月 27 06:55 2012 server_640x480.jpg
-rw-rw-r-- 1 pakira pakira 2242568 12月 27 06:50 2012 server_90.jpg

[pakira@Tiger ~]$ ls -lX ←カレントディレクトリ内のファイルを拡張子順に並べて表示します。
合計 159480
-rw-rw-r-- 1 pakira pakira 14745654 12月 26 05:46 2012 server.BMP
-rw-rw-r-- 1 pakira pakira 7661465 12月 26 05:47 2012 server.PNG
-rw-rw-r-- 1 pakira pakira 2971456 12月 27 07:02 2012 server_60.PNG
-rw-rw-r-- 1 pakira pakira 8353071 12月 26 05:47 2012 server.TIFF
-rw-r--r-- 1 pakira pakira 16452096 1月 10 08:22 2013 custom_install.doc
-rw-r--r-- 1 pakira pakira 2302349 12月 26 05:46 2012 server.jpg
-rw-rw-r-- 1 pakira pakira 885383 12月 27 06:56 2012 server_60.jpg
-rw-rw-r-- 1 pakira pakira 153010 12月 27 06:55 2012 server_640x480.jpg
-rw-rw-r-- 1 pakira pakira 2242568 12月 27 06:50 2012 server_90.jpg
-rw-rw-r-- 1 pakira pakira 40830438 1月 10 08:51 2013 custom_install.pdf
-rw-rw-r-- 1 pakira pakira 66680395 1月 10 08:37 2013 custom_install.ps

関連記事
lsコマンド

Linuxでファイルサイズが大きい順に表示するコマンド|ls -lSやdu・findの実践例

2013年1月15日
「ディスク容量がいっぱいで、どのファイルが原因か分からない」
「大きいファイルだけを一覧表示して、不要なものを削除したい」

Linuxサーバーを運用していると、ディスク容量の逼迫は避けて通れない問題です。原因となっている巨大ファイルをすばやく特定できるかどうかで、対処のスピードが大きく変わります。

この記事では、lsコマンドでファイルサイズが大きい順に表示する方法をはじめ、duコマンドでディレクトリごとの容量を調べる方法、findコマンドで特定サイズ以上のファイルだけを検索する方法まで、現場で使える実践テクニックを解説します。

ls -lSでファイルサイズが大きい順に表示する(基本)

ファイルサイズ順に並べる最も基本的な方法が、lsコマンドの-Sオプション(大文字のS)です。-l(詳細表示)と組み合わせて使います。

$ ls -lS /var/log/ 合計 52428 -rw-r--r-- 1 root root 28311552 3月 8 10:00 messages -rw-r--r-- 1 root root 15728640 3月 8 09:30 secure -rw-r--r-- 1 root root 5242880 3月 7 23:59 maillog -rw-r--r-- 1 root root 1048576 3月 5 12:00 cron -rw-r--r-- 1 root root 524288 3月 1 08:00 boot.log

ファイルサイズが大きいものが上に、小さいものが下に表示されます。/var/logなどのログディレクトリで「何が容量を食っているか」をすぐに把握できます。

続きを読む "Linuxでファイルサイズが大きい順に表示するコマンド|ls -lSやdu・findの実践例"

ポストスクリプト形式ファイルをPDF形式に変換する

2013年1月11日

ポストスクリプト形式ファイルをPDF形式に変換するコマンドとして、
ps2pdfコマンドがあります。

ポストスクリプト形式ファイルについては下記ページを参照してください。
ポストスクリプト形式にファイルを変換する

ps2pdfコマンドを実行するには、引数にPDFに変換したいポストスクリプト形式ファイルを指定し、
更に、出力保存するPDF形式ファイル名を指定して実行します。

[pakira@Tiger ~]$ ps2pdf custom_install.ps custom_install.pdf
↑ポストスクリプト形式の「custom_install.ps」ファイルをPDF形式の「custom_install.pdf」ファイルとして変換します。
[pakira@Tiger ~]$ ls -l
合計 159480
-rw-rw-r-- 1 pakira pakira 40830438 1月 10 08:51 2013 custom_install.pdf
-rw-rw-r-- 1 pakira pakira 66680395 1月 10 08:37 2013 custom_install.ps
↑custom_install.pdfファイルが保存されます。

ポストスクリプト形式にファイルを変換する

2013年1月10日

昨今のLinuxでは、「CUPS」(Common UNIX Printing System)が使用できるようになっている為、
ポストスクリプトプリンタでなくても、綺麗な印刷ができます。
しかし、UNIXシステムでは伝統的にラインプリンタが使用されており、
容易に印刷するにはポストスクリプト対応のプリンタを使用します。

ポストスクリプト対応プリンタを使用するには、
文書をポストスクリプト形式に変換する必要があり、
これを行うコマンドがa2psコマンドになります。

引数にポストスクリプト形式に変換したいファイル名を指定し、
更にオプション「-o」を付けて、出力ファイル名を指定して実行します。

a2psコマンドがインストールされていない場合は、
rootにて下記コマンドを実行して事前にインストールをしてください。
[root@Tiger ~]# yum install -y a2ps

■ポストスクリプト形式にファイルを変換する
[pakira@Tiger ~]$ a2ps custom_install.doc -o custom_install.ps
↑「custom_install.doc」ファイルをポストスクリプト形式の「custom_install.ps」ファイルに変換します。
[custom_install.doc (プレーン): 50859ページ, 25430シート]
[合計: 50859ページ, 25
[pakira@Tiger ~]$ ls -l
合計 119604
-rw-r--r-- 1 pakira pakira 16452096 1月 10 08:22 2013 custom_install.doc
-rw-rw-r-- 1 pakira pakira 66680395 1月 10 08:37 2013 custom_install.ps
↑「custom_install.ps」ファイルが出力保存されます。

Linuxコマンドで画像を拡大、縮小する

2012年12月28日

画像フィアイルを拡大、縮小する場合は、
convertコマンドに、「-geometry」オプションを付けて実行します。

引数に、幅及び、高さを指定することもできますが、
縦横比率を保持したまま拡大、縮小したい場合は、比率を「%」で指定することも可能です。

シェルスクリプトを作成することで一括で画像の拡大、縮小処理も行えるので
大変便利なコマンドになります。

[pakira@Tiger ~]$ convert -geometry 640x480 server.jpg server_640x480.jpg
↑「server.jpg」を幅「640」ピクセル、高さ「480」ピクセルに変更して、
 「server_640x480.jpg」保存します。

[pakira@Tiger ~]$ convert -geometry "60%" server.jpg server_60.jpg
↑「server.jpg」を幅「60%」に縮小して 「server_60.jpg 」として保存します。

また、保存先ファイルの拡張子を別の画像のものに変更することで、
画像の拡大、縮小処理を行いながら、画像形式の変換も同時に行うことができます。
[pakira@Tiger ~]$ convert -geometry "60%" server.jpg server_60.PNG
↑「server.jpg」を幅「60%」に縮小して PNG形式の「server_60.PNG 」として保存します。

Linuxコマンドで画像を回転させる

2012年12月27日

Linuxのconvertコマンドは、画像を回転させることができます。

この方法を使用すると、シェルスクリプトを作成して、
多くの画像を一括で処理することができます。

画像を回転させるには、convertコマンドに「-rotate」オプションを付けて、
更に引数として回転角度を指定することで出来ます。

[pakira@Tiger ~]$ convert -rotate 90 server.jpg server_90.jpg
↑ファイル「server.jpg」を時計回りに90度回転させ、「server_90.jpg」ファイルとして保存しています。

※回転角度は基本的に時計回りに回転します。反時計回りに回転させるには、マイナス値を指定します。

Linuxで画像ファイル形式の変換をする

2012年12月26日

Linuxには、画像形式変換コマンドとして、convertコマンドがあります。
convertコマンドは、「ImageMagick」というパッケージに含まれるコマンドで、
様々な画像変換をコマンドで実行できます。
コマンドで画像変換できれば、シェルスクリプトを作成し、
多くの画像ファイルを一括変換することも可能です。

convertコマンドを実行するには、
引数に変換対象ファイル、変換後ファイルを指定して実行します。
ファイル形式は、ファイルの名称に含まれる拡張子により
自動的に判断されます。

[pakira@Tiger ~]$ ls  ←カレントディレクトリの内容を表示します。
server.jpg
[pakira@Tiger ~]$ convert server.jpg server.BMP
↑JPG形式ファイルの「server.jpg」をBMP形式ファイルの「server.BMP」に変換します。
[pakira@Tiger ~]$ ls  ←カレントディレクトリの内容を表示します。
server.BMP server.jpg  ←「server.BMP」ファイルが作成されます。
[pakira@Tiger ~]$ convert server.BMP server.PNG
↑BMP形式ファイルの「server.BMP」をPNG形式ファイルの「server.PNG」に変換します。
[pakira@Tiger ~]$ ls  ←カレントディレクトリの内容を表示します。
server.BMP server.PNG server.jpg ←「server.PNG」ファイルが作成されます。
[pakira@Tiger ~]$ convert server.PNG server.TIFF
↑PNG形式ファイルの「server.PNG」をTIFF形式ファイルの「server.TIFF」に変換します
[pakira@Tiger ~]$ ls  ←カレントディレクトリの内容を表示します。
server.BMP server.PNG server.TIFF server.jpg ←「server.TIFF」ファイルが作成されます。
[pakira@Tiger ~]$ ls -l  ←カレントディレクトリの内容を表示します。

合計 32300
-rw-rw-r-- 1 pakira pakira 14745654 12月 26 05:46 2012 server.BMP
-rw-rw-r-- 1 pakira pakira 7661465 12月 26 05:47 2012 server.PNG
-rw-rw-r-- 1 pakira pakira 8353071 12月 26 05:47 2012 server.TIFF
-rw-r--r-- 1 pakira pakira 2302349 12月 26 05:46 2012 server.jpg

↑変換後は、形式、ファイルサイズが異なる画像ファイルが作成されます。

Linuxで削除できないファイルをrmコマンドで削除する方法|ハイフンやスペース付きファイルの対処法

2012年12月20日
「rm コマンドでファイルを削除しようとしたら、オプションエラーが出て消せない」
「ファイル名にスペースやハイフンが入っていて、どう指定すればいいか分からない」
Linuxでは、ファイル名に特殊な文字(ハイフン、スペース、記号など)が含まれていると、通常の rm コマンドでは削除できないことがあります。

この記事では、通常の方法では削除できないファイルを安全に削除する方法を解説します。ハイフンで始まるファイル、スペースを含むファイル、さらに「Permission denied」や「Directory not empty」など、削除時によくあるエラーの対処法まで、実務で困らない知識をまとめました。

1. ハイフン(-)で始まるファイルを削除する

ファイル名がハイフン(-)で始まっていると、rm コマンドがファイル名をオプションとして解釈してしまい、エラーになります。

# rm -file.txt rm: invalid option -- 'l' Try 'rm ./-file.txt' to remove the file '-file.txt'.

対処法は2つあります。

方法1:「--」(ダブルハイフン)を使う

-- は「これ以降の文字列はオプションではない」とシェルに伝える特別な記号です。

# ls -file.txt # rm -- -file.txt # ls # (削除された)

方法2:「./」(ドットスラッシュ)を付ける

ファイル名の先頭に ./(カレントディレクトリの意味)を付けると、ハイフンがファイル名の一部として正しく認識されます。

# rm ./-file.txt

どちらの方法でも削除できますが、-- の方が汎用的で、他のコマンド(cpmv など)でも同じように使えるため覚えておくと便利です。

続きを読む "Linuxで削除できないファイルをrmコマンドで削除する方法|ハイフンやスペース付きファイルの対処法"

Linuxで一時的に管理者(root)にスイッチする

2012年12月19日

管理者(root)にスイッチする場合、suコマンドを実行して管理者パスワードを
入力する必要があります。

suコマンド:ユーザーを切り替える

しかし、複数のユーザーがrootを利用する環境だと、パスワード変更の度に
全員に伝えなければなりません。そうなると、第三者にrootパスワードが
漏れる危険性がありますし、運用上とても面倒です。

その為、sudoコマンドを利用して、これらの危険性を防ぐことができます。
sudoコマンドは、root権限を必要とするコマンドを実行する際、
ユーザーパスワードを入力することで、一時的にrootのシェルを
利用してコマンド実行が出来るようになるコマンドです。

また、sudoコマンドには、パスワードキャッシュという仕組みがあり、
一度コマンドを使用して、有効なパスワードを入力すれば
そのユーザーについては、次回以降パスワード入力が
求められなくなります。ただし、これを永久的に許可したのでは
意味が無いので、デフォルトでは5分間だけパスワード入力が不要になります。

sudoコマンドを利用するには、/etc/sudoersファイルの編集が必要になります。
このファイルを編集するには、visudoコマンドを実行します。
visudoは、事前に変数のEDITORに定義されているエディタが起動して
/etc/sudoersファイルの編集が行え、ファイルのロック
(編集中他人が編集できないようにする)や、構文チェックが使用できます。

1.事前準備 /etc/sudoersファイルの編集
[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# visudo  ←visudoコマンドで/etc/sudoersファイルを編集します。

編集箇所はCentOS6.3の場合、104~105行目あたりにあります。
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
%pakira ALL=(ALL) ALL  ←sudoコマンドが使用できるようpakiraを追加します。

※行頭のハッシュマーク(#)はコメントアウトを意味し、
 システム的にその行は無効になります。

上記の例では、pakiraグループに属するユーザーはsudoコマンドが
利用できるよう設定を行なっています。
特定のユーザーのみに許可したい場合は、「%」を付けずに
ユーザー名のみを記述します。

「%」はグループを意味しています。

また、下記の箇所を編集すると、
コマンド実行時にユーザーパスワードを求められなくなります。
編集箇所はCentOS6.3の場合、107~108行目あたりにあります。
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
%pakira ALL=(ALL) NOPASSWD: ALL

上記のどちらを設定するかは、
運用ルールやセキュリティ・ポリシーに則り決めることになります。
visudoを実行してviエディタが起動した場合は、
編集後、visudoを「:wq」で保存終了します。

viエディタの詳しい操作方法などは、下記ページで無料配布している
Linux無料マニュアルで習得できます。
Linuxサーバー構築マニュアル

2.sudoコマンド実行テスト
[root@Tiger ~]# logout  ←rootから一般ユーザー「pakira」に戻ります。
[pakira@Tiger ~]$ whoami  ←ユーザー名を表示します。
pakira   ←pakiraユーザーであることを確認します。
[pakira@Tiger ~]$ tail /var/log/messages ←messagesファイルを表示します。
tail: `/var/log/messages' を 読み込み用でオープンできません: 許可がありません
↑権限がないのでエラーになります。(パーミッションエラー)

[pakira@Tiger ~]$ sudo tail /var/log/messages ←sudoコマンドでrootシェル得て実行します。

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for pakira:     ←pakiraユーザーのコマンドを入力します。
Dec 19 03:14:24 Tiger kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts:
Dec 19 03:14:24 Tiger kernel: Adding 2064376k swap on /dev/mapper/vg_tiger-lv_swap. Priority:-1 extents:1 across:2064376k
Dec 19 03:14:24 Tiger kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Dec 19 03:14:24 Tiger kernel: NET: Registered protocol family 10
Dec 19 03:14:24 Tiger kernel: lo: Disabled Privacy Extensions
Dec 19 03:14:24 Tiger kernel: eth0: link up
Dec 19 03:14:29 Tiger abrtd: Init complete, entering main loop
Dec 19 03:14:31 Tiger kernel: warning: `proftpd' uses 32-bit capabilities (legacy support in use)
Dec 19 03:14:31 Tiger proftpd[1395]: 127.0.0.1 - ProFTPD 1.3.4b (maint) (built 火 8月 21 2012 17:12:41 JST) standalone mode STARTUP
Dec 19 03:14:31 Tiger kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
↑messagesファイルの内容が表示されます。

ファイル名データベースを更新する

2012年12月14日

Linuxで検索を行う場合、一般的に使用されるのはfindコマンドですが、
このコマンドは対象ディレクトリのパスを個別に検索するため、
検索対象ディレクトリに多くのサブディレクトリ、ファイルが存在すると
検索に時間が掛かります。

その為、予めファイル名データベースファイルを作成し、
そのファイルを対象としてlocateコマンドやslocateコマンドで
検索する方法が使われます。

ファイル名データベースは、デフォルトで毎日午前4時ごろ
自動更新されるようになっていますが、システムが稼働していない場合、
更新されないことになります。

そこで、更新を手動実行するには、updatedbコマンドを引数なしで実行します。
※実行にはroot権限が必要になります。

[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# updatedb & ←カタログデータベースをバックグラウンドで更新します。
[1] 1470   ←ジョブ番号が表示されます。

なお、この処理はコンピュータのスペックやディレクトリ、ファイル数によって
長い時間を要する場合があります。実際に実行する場合は、システム負荷の
少ない時間にバックグラウンドジョブとして実行するのが望ましいです。

使用量の高いディレクトリを表示する

2012年12月13日

システムを使い続けると、気づかないうちにファイル数が増加して
多くの容量を消費している場合があります。

そこで、システム運用では定期的に使用量が多い
ディレクトリのチェックを行います。

また、ディレクトリだけではなく、ファイルサイズのチェックも行い、
無用にシステムリソースの無駄遣いが無いかのチェックにもなります。

使用量の高いディレクトリを表示する場合は、
duコマンドの他に、sortコマンド、headコマンドを
パイプで並べて実行します。

duコマンドでディスク容量を抽出し、
sortコマンドにオプション「-r」を付けて
容量の多い順を降順に並び替え、
headコマンドで上位のもの10個までを表示させます。

※アクセス権限の無いディレクトリのチェックをした場合、
 エラーになるので注意が必要です。

[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# du -s /var/* | sort -rn | head -10 ←/var配下ディレクトリをチェック対象にします。
40236 /var/lib
33168 /var/cache
27912 /var/www
3888 /var/log
132 /var/spool
100 /var/run
16 /var/lock
12 /var/db
8 /var/empty
4 /var/yp

関連記事
duコマンド
sortコマンド
headコマンド

IPv6アドレスを確認する

2012年12月 8日

基本的にCentOSをインストールすると、従来のIPv4アドレスとIPv6アドレスが併用して割り当てられます。
IPv6のIPアドレスを確認するには、ifconfigコマンドを実行します。
IPv6のIPアドレスが表示される箇所は、eth0とloのinet6 addr:行になります。

[pakira@Tiger ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:2C:4C:AA
inet addr:192.168.0.36 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2001:c90:****:****:****:****:****:4caa/64 Scope:Global
inet6 addr: fe80::****:****:****:****/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:133 errors:0 dropped:0 overruns:0 frame:0
TX packets:77 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15654 (15.2 KiB) TX bytes:12553 (12.2 KiB)
Interrupt:19 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:240 (240.0 b) TX bytes:240 (240.0 b)

inet6 addr: 2001の行は固定で割り当てたIPv6アドレスになり、
inet6 addr: fe80の行は、自動で割り当てられたIPv6アドレスになります。

fe80で始まる自動構成されたIPv6アドレスは、リンクローカルアドレスと呼ばれ、
隣接したコンピュータと通信できますが、インターネットとは直接通信できません。
IPv6アドレスを使用してインターネットに接続するには、プロバイダーに申請する
必要があります。

また、loのinet6 addr: 行は、Ipv6のループバックアドレスが表示されており、
システム共通で「::1」となっています。

RPMパッケージの更新情報を表示する

2012年11月20日

RPMパッケージは、インストールやアップグレード、削除などを行うと、
RPMパッケージデータベースに操作日時を記録します。

その操作日時、つまり更新情報を表示するには、
rpmコマンドにオプション「-qa」をつけ、さらに「--last」を併用して実行します。

更新されたパッケージ情報が、新しい順に表示されます。

[pakira@Tiger ~]$ rpm -qa --last ←RPMパッケージの更新情報を表示します。
ftp-0.17-51.1.el6.i686 2012年08月24日 14時11分23秒
ImageMagick-perl-6.5.4.7-6.el6_2.i686 2012年08月24日 00時35分40秒
ImageMagick-6.5.4.7-6.el6_2.i686 2012年08月24日 00時34分27秒
librsvg2-2.26.0-5.el6_1.1.0.1.centos.i686 2012年08月24日 00時33分10秒
libgsf-1.14.15-5.el6.i686 2012年08月24日 00時32分02秒
libtool-ltdl-2.2.6-15.5.el6.i686 2012年08月24日 00時31分44秒
ghostscript-8.70-14.el6.i686 2012年08月24日 00時31分13秒
ghostscript-fonts-5.50-23.1.el6.noarch 2012年08月24日 00時31分09秒
libXt-1.0.7-1.el6.i686 2012年08月24日 00時28分07秒
xorg-x11-font-utils-7.2-11.el6.i686 2012年08月24日 00時27分50秒
libXfont-1.4.1-2.el6_1.i686 2012年08月24日 00時27分39秒
libfontenc-1.0.5-2.el6.i686 2012年08月24日 00時26分25秒
GConf2-2.28.0-6.el6.i686 2012年08月24日 00時26分09秒
sgml-common-0.6.3-32.el6.noarch 2012年08月24日 00時25分52秒
ORBit2-2.14.17-3.1.el6.i686 2012年08月24日 00時25分34秒
libIDL-0.8.13-2.1.el6.i686 2012年08月24日 00時25分10秒
perl-Archive-Zip-1.30-2.el6.noarch 2012年08月24日 00時24分59秒
libcroco-0.6.2-5.el6.i686 2012年08月23日 20時45分16秒
lcms-1.19-1.el6.i686 2012年08月23日 20時45分02秒
lcms-libs-1.19-1.el6.i686 2012年08月23日 20時44分42秒
libwmf-0.2.8.4-22.el6.centos.i686 2012年08月23日 20時44分25秒
urw-fonts-2.4-10.el6.noarch 2012年08月23日 20時44分07秒
libwmf-lite-0.2.8.4-22.el6.centos.i686 2012年08月23日 20時43分48秒
perl-GD-2.44-3.el6.i686 2012年08月23日 20時43分28秒
gd-2.0.35-10.el6.i686 2012年08月23日 20時43分11秒
libXpm-3.5.8-2.el6.i686 2012年08月23日 20時42分54秒
perl-DBD-MySQL-4.013-3.el6.i686 2012年08月23日 17時10分21秒
zlib-devel-1.2.3-27.el6.i686 2012年08月23日 16時55分15秒
readline-devel-6.0-4.el6.i686 2012年08月23日 16時55分04秒
ncurses-devel-5.7-3.20090208.el6.i686 2012年08月23日 16時54分55秒
ctags-5.8-2.el6.i686 2012年08月18日 18時33分27秒
diffstat-1.51-2.el6.i686 2012年08月18日 18時33分26秒
compat-libstdc++-296-2.96-144.el6.i686 2012年08月18日 18時33分26秒

RPMパッケージデータベースを新たに作成する

2012年11月20日

RPMパッケージデータベースを新たに作成するには、rpmコマンドに
「--initdb」オプションを付けて実行します。

このコマンドを実行するには、root権限が必要になります。

[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# rpm --initdb ←RPMパッケージデータベースを新たに作成します。

関連記事
RPMデータベースを再構築する

RPMデータベースを再構築する

2012年11月13日

RPMパッケージに関する情報は、RPMデータベースに保存されています。
パッケージの情報を検索する時は、このRPMデータベースが重要な役割を果たすのですが、
たまに壊れてしまう場合があります。

そのような場合には、rpmコマンドに「--rebuilddb」オプションを付けて実行することで
RPMデータベースを再構築できます。

このコマンドを実行するにはroot権限が必要で、インストールされているパッケージ数、
コンピューターのスペックによっては終了するまでかなり時間が掛かる場合があります。

[pakira@Tiger ~]$ su -  ←rootになります。
パスワード:
[root@Tiger ~]# rpm --rebuilddb  ←RPMデータベースを再構築します。
[root@Tiger ~]#

RPMパッケージの状態を表示する

2012年11月13日

インストールされているRPMパッケージが現在どのような状態にあるのかを
確認するには、rpmコマンドにオプション「-q」と「-s」を付け、
状態を確認したいRPMパッケージ名を指定して実行します。

コマンドを実行し、「normal」または、「通常」と表示されれば、正常な状態です。
この他に、
・インストールされていない(not installed)
・置き換えられている(replaced)
があります。

このコマンドを実行すると、多くの情報が表示されるため、lessコマンドや
moreコマンドでパイプするのが良いでしょう。

[pakira@Tiger ~]$ rpm -qs ghostscript | less ←RPMパッケージの状態を表示します。
通常 /etc/ghostscript
通常 /etc/ghostscript/8.70
通常 /etc/ghostscript/8.70/CIDFnmap.local
通常 /etc/ghostscript/8.70/Fontmap.local
通常 /etc/ghostscript/8.70/cidfmap.local
通常 /usr/bin/bdftops
通常 /usr/bin/dumphint
通常 /usr/bin/dvipdf
通常 /usr/bin/eps2eps
通常 /usr/bin/font2c
通常 /usr/bin/ghostscript
通常 /usr/bin/gs
通常 /usr/bin/gsbj
通常 /usr/bin/gsdj
通常 /usr/bin/gsdj500
通常 /usr/bin/gslj
通常 /usr/bin/gslp
通常 /usr/bin/gsnd
通常 /usr/bin/lprsetup.sh

所属しているグループをプライマリグループに戻す

2012年11月13日

所属しているグループ内で一時的にプライマリグループを変更する
一時、プライマリグループの変更を行いましたが、それを元に戻すには、
newgrpコマンドを実行します。

[pakira@Tiger ~]$ newgrp  ←newgrpコマンドを実行します。

所属しているグループ内で一時的にプライマリグループを変更する

2012年11月 9日

ユーザーが複数のグループに所属している場合、通常はプライマリグループの
メンバーとしてコマンドを実行します。しかし、プライマリグループ以外の権限を
必要とする処理を実行する場合は、ユーザーが所属しているグループ内で
一時的にプライマリグループを変更できます。

一時的にプライマリグループを変更するには、
newgrpコマンドにグループ名を付けて実行します。

[miyazaki@Tiger ~]$ whoami ←ユーザー名を確認します。
miyazaki
[miyazaki@Tiger ~]$ cat /etc/group | grep miyazaki
↑ユーザー「miyazaki」の所属グループを確認します。
nobody:x:99:miyazaki
miyazaki:x:601:
[miyazaki@Tiger ~]$ newgrp nobody ←グループ「nobody」に変更します。

ユーザーにプライマリグループ以外のグループを追加する

2012年11月 9日

ユーザーにプライマリグループ以外のグループを追加する場合には、
usermodコマンドにオプション「-G」を付け、追加するグループのグループ名、
またはGIDを指定します。
(カンマ「,」で区切ることで複数のグループを同時に設定することも可能です。)
そして、追加を行いたいユーザ名を付けて実行します。

このコマンドを実行するには、root権限が必要になります。

[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:
[root@Tiger ~]# cat /etc/group | grep miyazaki
↑ユーザー「miyzaki」のステータスを確認します。
miyazaki:x:601: ←プライマリグループのみ設定されています。
[root@Tiger ~]# usermod -G nobody miyazaki
↑ユーザー「miyzaki」にグループ「nobody」を追加します。
[root@Tiger ~]# cat /etc/group | grep miyazaki
nobody:x:99:miyazaki  ←グループ「nobody」が追加されます。
miyazaki:x:601:

ユーザーのプライマリグループを変更する

2012年11月 9日

ユーザーが複数のグループに所属している場合、プライマリグループを変更する場合は、
usermodコマンドにオプション「-g」を付けて、プライマリグループのグループ名、または
GID、そして変更するユーザー名を付けて実行します。

これらのパラメータは、既にシステムに登録済みである必要があるとともに、
実行するには、root権限が必要になります。

[pakira@Tiger ~]$ su -  ←root権限になります。
パスワード:
[root@Tiger ~]# cat /etc/passwd | grep miyazaki 
↑ユーザー「miyazaki」のプライマリグループを確認します。
miyazaki:x:502:601:Miyazaki,,03-333-3333:/home/miyazaki:/bin/bash
[root@Tiger ~]# usermod -g nobody miyazaki
↑ユーザー「miyazaki」のプライマリグループを「nobody」に変更します。
[root@Tiger ~]# cat /etc/group | grep nobody
↑ユーザー「miyazaki」のプライマリグループを確認します。
nobody:x:99:
[root@Tiger ~]# cat /etc/passwd | grep miyazaki
↑ユーザー「miyazaki」のプライマリグループを確認します。
miyazaki:x:502:99:Miyazaki,,03-333-3333:/home/miyazaki:/bin/bash

グループパスワードを削除する

2012年11月 7日

グループに設定したパスワードを削除するには、gpasswdコマンドに
オプション「-r」か、「-R」を付けて実行します。
引数にはパスワードを削除したいグループ名を指定します。
グループにパスワードを設定する

この処理は、root、またはグループ管理者に登録されているユーザーが実行できます。
グループに管理者を設定する

[pakira@Tiger ~]$ whoami  ←グループ管理者であることを確認します。
pakira
[pakira@Tiger ~]$ gpasswd -r unyo  ←グループ「unyo」のパスワードを削除します。
[pakira@Tiger ~]$ gpasswd -R unyo  ←グループ「unyo」のパスワードを削除します。

グループからメンバーを外す

2012年11月 7日

既存グループからメンバーを外すには、gpasswdコマンドに
オプション「-d」を付けて実行します。

引数には、追加するユーザー名、グループ名を指定して実行します。
この処理は、root、またはグループ管理者に登録されているユーザーが実行できます。

グループに管理者を設定する

■グループ管理者に登録されているユーザーがメンバーを外す
[pakira@Tiger ~]$ whoami ←グループ管理者であることを確認します。
pakira
[pakira@Tiger ~]$ cat /etc/group | grep miyazaki  ←グループに追加されていることを確認します。
unyo:x:600:miyazaki
miyazaki:x:601:
[pakira@Tiger ~]$ gpasswd -d miyazaki unyo  ←miyazakiをグループから外します。
Removing user miyazaki from group unyo
[pakira@Tiger ~]$ cat /etc/group | grep miyazaki ←グループから外れていることを確認します。
miyazaki:x:601:

グループにメンバーを追加する

2012年11月 6日

既存グループにメンバーを追加するには、gpasswdコマンドに
オプション「-a」を付けて実行します。

引数には、追加するユーザー名、グループ名を指定して実行します。
この処理は、root、またはグループ管理者に登録されているユーザーが実行できます。

グループに管理者を設定する

■グループ管理者に登録されているユーザーがメンバー追加する
[pakira@Tiger ~]$ whoami  ←グループ管理者であることを確認します。
pakira
[pakira@Tiger ~]$ gpasswd -a miyazaki unyo ←miyazakiをunyoグループに追加します。
Adding user miyazaki to group unyo
[pakira@Tiger ~]$ cat /etc/group | grep miyazaki ←グループに追加されていることを確認します。
unyo:x:600:miyazaki
miyazaki:x:601:

グループに管理者を設定する

2012年11月 6日

既存のグループに、root(特権ユーザー)とは別に管理者を設定することができます。
ここで設定された管理者は、グループに対して、メンバーの追加、削除、
グループパスワードの設定、削除などが行えます。

グループごとに管理者を設定するメリットは、特定のディレクトリ以下の
管理をその管理者に任せることができるので、root(特権ユーザー)である
システム管理者の負担を軽減することができます。

管理者を設定するには、gpasswdコマンドにオプション「-A」を付け、
引数にユーザー名、管理させるグループ名を指定します。
ユーザーはカンマ「,」で区切ることで複数指定することが可能です。

[pakira@Tiger ~]$ su -  ←root権限になります。
パスワード:
[root@Tiger ~]# cat /etc/group | grep unyo  ←unyoグループが存在することを確認します。
unyo:x:600:
[root@Tiger ~]# gpasswd -A pakira unyo  ←unyoグループの管理者としてpakiraを設定します。

グループにパスワードを設定する

2012年11月 6日

グループにパスワードを設定する場合には、gpasswdコマンドを使用します。
グループにユーザーを追加する場合や、グループに登録されていない
ユーザーの場合にパスワード入力が求められるようになります。

グループにパスワードを設定することで、
グループに勝手にメンバーを登録されることを防ぐことができます。

[pakira@Tiger ~]$ su -  ←root権限になります。
パスワード:
[root@Tiger ~]# gpasswd unyo  ←unyoグループにパスワードを設定します。
Changing the password for group unyo
New Password:             ←unyoグループのパスワードを入力します。
Re-enter new password:      ←もう一度、unyoグループのパスワードを入力します。

グループIDを指定してグループを追加する

2012年11月 2日

グループを追加すると、Linuxシステムは自動的にGID(グループID)を割り当てます。
このため、システム管理上、GIDの規則性を持たせて運用・管理したい場合には不都合に
なってしまいます。このような場合には、「-g」オプションを付けてGIDを指定して
groupaddコマンドを実行します。

このコマンドを実行するには、root権限が必要になります。

[pakira@Tiger ~]$ su -  ←rootになります。
パスワード:
[root@Tiger ~]# groupadd -g 600 unyo ←GIDを指定してグループを作成します。
[root@Tiger ~]# cat /etc/group | grep unyo ←追加したグループを確認します。
unyo:x:600:

グループを削除する

2012年11月 2日

グループを削除するには、groupdelコマンドを使用します。
引数には、削除したいグループ名をして実行します。

しかし、削除するグループをプライマリーグループとするユーザーがいる場合、
そのユーザを先に削除してからでないと、グループの削除ができないので注意が必要です。
たとえば、グループpakiraを削除するためには、ユーザーpakiraを削除してからでないと
グループ削除ができません。


このコマンドを実行するには、root権限が必要になります。

[pakira@Tiger ~]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# cat /etc/group | grep unyo ←unyoフループの確認をします。
unyo:x:503:
[root@Tiger ~]# groupdel unyo ←unyoグループを削除します。
[root@Tiger ~]# cat /etc/group | grep unyo ←unyoグループが削除されていることを確認します。

[pakira@Tiger pakira]$ su - ←rootユーザになります。
Password:
[root@Tiger root]# grep linuxuser /etc/group ←グループ「linuxuser」が存在することを確認します。
linuxuser:x:503:
[root@Tiger root]# groupdel linuxuser ←グループ「linuxuser」を削除します。
[root@Tiger root]# grep linuxuser /etc/group ←再度グループ「linuxuser」を確認します。
[root@Tiger root]#      ←削除されたのでなにも表示されません。

グループを追加する

2012年11月 2日

グループを作成するメリットは、複数人のプロジェクトなどで、メンバーをグループに
登録することでパーミッション管理が容易になる点です。
グループを作成するには、groupaddコマンドを使用します。
実行する際は、引数に追加するグループ名を指定します。

このコマンドを実行する際は、root権限が必要になります。

[pakira@Tiger ~]$ su -  ←root権限になります。
パスワード:
[root@Tiger ~]# groupadd unyo  ←新規グループを作成します。
[root@Tiger ~]# cat /etc/group | grep unyo ←作成したグループを確認します。
unyo:x:503:

所属グループを表示する

2012年11月 1日

特定のユーザーがどのグループに所属しているかを確認するには、groupsコマンドを使用します。
引数なしで実行した場合は、コマンドを実行したユーザーの所属グループが表示されます。
引数に所属グループを表示したいユーザー名を指定すると、そのユーザーの所属グループが表示されます。

■コマンドを実行したユーザーの所属グループを表示する
[pakira@Tiger ~]$ whoami  ←ユーザー名を表示します。
pakira
[pakira@Tiger ~]$ groups  ←所属グループを表示します。
pakira

■特定ユーザーの所属グループを表示する
[pakira@Tiger ~]$ groups nobody ←「nobody」ユーザーの所属グループを表示します。
nobody : nobody
[pakira@Tiger ~]$

ディレクトリの総使用量だけ表示する

2012年11月 1日

特定のディレクトリの総使用量だけ表示するには、duコマンドに「-s」オプションを付けて実行します。
「-h」オプションはわかりやすい単位を付けて表示します。

[pakira@Tiger ~]$ du -sh /var/www/ ←「/var/www」ディレクトリの総使用量だけ表示します。
36M /var/www/

ディレクトリの使用量を表示する

2012年11月 1日

ディレクトリの使用量を表示するには、duコマンドを使用します。
引数なしで実行した場合は、カレントディレクトリ以下のディレクトリ使用量を
1024バイト単位(1MB)で表示します。

ファイルの使用量も表示したい場合には、「-a」オプションを付けて実行します。
また、「-h」を付けて実行すると、わかりやすい単位を付けて表示します。
なお、特定のディレクトリを指定したい場合は、最後の引数にディレクトリを指定します。

■使用量を表示する
[pakira@Tiger ~]$ pwd ←カレントディレクトリを表示します。
/home/pakira
[pakira@Tiger ~]$ du -ah ←使用量を表示します。
4.0K ./.bashrc
4.0K ./.bash_profile
4.0K ./.bash_history
4.0K ./.bash_logout
20K .

■ディレクトリを指定して使用量を表示する
[pakira@Tiger ~]$ du -ah /var/www/ ←ディレクトリを指定して使用量を表示します。
4.0K /var/www/system/backup_all.sh
4.0K /var/www/system/ftp_send.sh
4.0K /var/www/system/check_process.pl
4.0K /var/www/system/db_my_backup.sh
20K /var/www/system
40K /var/www/backup/db_bak/mt_my_Tiger20120824.dump.gz
44K /var/www/backup/db_bak
4.3M /var/www/backup/www_bak/www_back_20120824.tar.gz
4.3M /var/www/backup/www_bak/www_back_20121005.tar.gz
4.3M /var/www/backup/www_bak/www_back_20121009.tar.gz
13M /var/www/backup/www_bak
13M /var/www/backup
4.0K /var/www/html/.passwds
4.0K /var/www/html/webstudy1.no-ip.info/index.html
8.0K /var/www/html/webstudy1.no-ip.info
4.0K /var/www/html/192.168.0.36/.htaccess
8.0K /var/www/html/192.168.0.36/archives.html
4.0K /var/www/html/192.168.0.36/mt/tmpl/cms/import_others.tmpl
12K /var/www/html/192.168.0.36/mt/tmpl/cms/view_log.tmpl
省略

Linuxユーザーのパスワードロックを解除する

2012年10月31日

Linuxユーザーのパスワードロックを解除するには、usermodコマンドにオプション「-U」を
付けてユーザー名を指定するか、passwdコマンドにオプション「-u」を付けて、
ユーザ名を指定して実行します。

■usermodコマンドでパスワードロックを解除する
[pakira@Tiger ~]$ su -  ←rootになります。
パスワード:
[root@Tiger ~]# usermod -U miyazaki ←miyazakiユーザーのパスワードロックを解除します。
[root@Tiger ~]# exit  ←rootから抜けます。
logout
[pakira@Tiger ~]$ su miyazaki ←miyazakiユーザーにスイッチします。
パスワード:            ←miyazakiユーザーのパスワードを入力します。
[miyazaki@Tiger pakira]$  ←ロックが解除されているため、スイッチできます。

■passwdコマンドでパスワードロックを解除する
[miyazaki@Tiger pakira]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# passwd -u miyazaki ←miyazakiユーザーのパスワードロックを解除します。
ユーザー miyazaki 用のパスワードをロック解除。
passwd: 成功
[root@Tiger ~]# exit  ←rootから抜けます。
logout
[miyazaki@Tiger pakira]$ su miyazaki ←miyazakiユーザーにスイッチします。
パスワード:             ←miyazakiユーザーのパスワードを入力します。
[miyazaki@Tiger pakira]$   ←ロックが解除されているため、スイッチできます。

Linuxユーザーのパスワードをロックする

2012年10月31日

あるユーザーがしばらくLinuxシステムを利用しない場合、システムを利用できないよう
ユーザーパスワードをロックするが理想的です。
パスワードをロックするには、usermodコマンドにオプション「-L」を付けてユーザー名を指定するか、
passwdコマンドに「-l」オプションを付けて、ユーザー名を指定して実行します。

■usermodコマンドでパスワードをロックする
[pakira@Tiger ~]$ su - ←rootになります。
パスワード:
[root@Tiger ~]# usermod -L miyazaki ←miyazakiユーザーのパスワードをロックします。
[root@Tiger ~]# exit  ←rootから抜けます。
logout
[pakira@Tiger ~]$ su miyazaki ←miyazakiユーザーにスイッチします。
パスワード:              ←miyazakiユーザーのパスワードを入力します。
su: パスワードが違います     ←ロックされているため、スイッチできません。

■passwdコマンドでパスワードをロックする
[miyazaki@Tiger pakira]$ su -  ←rootになります。
パスワード:
[root@Tiger ~]# passwd -l miyazaki ←miyazakiユーザーのパスワードをロックします。
ユーザー miyazaki 用のパスワードをロック。
passwd: 成功
[root@Tiger ~]# exit  ←rootから抜けます。
logout
[miyazaki@Tiger pakira]$ su miyazaki  ←miyazakiユーザーにスイッチします。
パスワード:              ←miyazakiユーザーのパスワードを入力します。
su: パスワードが違います    ←ロックされているため、スイッチできません。

特定のローダブルモジュールを表示する

2012年10月30日

ある特定のローダブルモジュールを表示したい場合には、
「modprobe -l」を実行しますが、さらに引数として、モジュール名を指定します。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# modprobe -l *cpufreq*
kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko
kernel/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.ko
kernel/drivers/cpufreq/cpufreq_stats.ko
kernel/drivers/cpufreq/cpufreq_powersave.ko
kernel/drivers/cpufreq/cpufreq_ondemand.ko
kernel/drivers/cpufreq/cpufreq_conservative.ko

また、下記のようにglepコマンドをパイプでつなげて実行しても同じ結果が得られます。
[root@Tiger ~]# modprobe -l | grep cpufreq
kernel/arch/x86/kernel/cpu/cpufreq/powernow-k8.ko
kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko
kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko
kernel/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.ko
kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko
kernel/drivers/cpufreq/cpufreq_stats.ko
kernel/drivers/cpufreq/cpufreq_powersave.ko
kernel/drivers/cpufreq/cpufreq_ondemand.ko
kernel/drivers/cpufreq/cpufreq_conservative.ko

ローダブルモジュールを表示する

2012年10月30日

システムに組み込まれていないが、ロード可能なモジュール(ローダブルモジュール)を
表示するには、modprobeコマンドにオプション「-l」を付けて実行します。
このコマンドを実行すると、多くのモジュールが表示されるので、パイプなどを使用して
moreやlessコマンドと併用すると良いです。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# modprobe -l
kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko
kernel/arch/x86/kernel/cpu/cpufreq/powernow-k8.ko
kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko
kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko
kernel/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.ko
kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko
kernel/arch/x86/kernel/test_nx.ko
kernel/arch/x86/kernel/microcode.ko
kernel/arch/x86/crypto/aes-i586.ko
kernel/arch/x86/crypto/twofish-i586.ko
kernel/arch/x86/crypto/salsa20-i586.ko
kernel/arch/x86/crypto/crc32c-intel.ko
kernel/kernel/trace/ring_buffer_benchmark.ko
kernel/fs/nfs_common/nfs_acl.ko
kernel/fs/nls/nls_cp737.ko
kernel/fs/nls/nls_cp775.ko
kernel/fs/nls/nls_cp850.ko

省略

kernel/net/9p/9pnet.ko
kernel/net/9p/9pnet_virtio.ko
kernel/net/9p/9pnet_rdma.ko
kernel/net/wimax/wimax.ko
kernel/lib/crc-ccitt.ko
kernel/lib/crc-t10dif.ko
kernel/lib/crc-itu-t.ko
kernel/lib/crc7.ko
kernel/lib/libcrc32c.ko
kernel/lib/zlib_deflate/zlib_deflate.ko
kernel/lib/reed_solomon/reed_solomon.ko
kernel/lib/lzo/lzo_compress.ko
kernel/lib/lzo/lzo_decompress.ko
kernel/lib/raid6/raid6_pq.ko
kernel/lib/ts_kmp.ko
kernel/lib/ts_bm.ko
kernel/lib/ts_fsm.ko

■moreコマンドとのパイプ併用
[root@Tiger ~]# modprobe -l | more
kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko
kernel/arch/x86/kernel/cpu/cpufreq/powernow-k8.ko
kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko
kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko
kernel/arch/x86/kernel/cpu/cpufreq/pcc-cpufreq.ko
kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko
kernel/arch/x86/kernel/test_nx.ko
kernel/arch/x86/kernel/microcode.ko
kernel/arch/x86/crypto/aes-i586.ko
kernel/arch/x86/crypto/twofish-i586.ko
kernel/arch/x86/crypto/salsa20-i586.ko
kernel/arch/x86/crypto/crc32c-intel.ko
kernel/kernel/trace/ring_buffer_benchmark.ko
kernel/fs/nfs_common/nfs_acl.ko
kernel/fs/nls/nls_cp737.ko
kernel/fs/nls/nls_cp775.ko
kernel/fs/nls/nls_cp850.ko
kernel/fs/nls/nls_cp852.ko
kernel/fs/nls/nls_cp855.ko
kernel/fs/nls/nls_cp857.ko
kernel/fs/nls/nls_cp860.ko
kernel/fs/nls/nls_cp861.ko
kernel/fs/nls/nls_cp862.ko
kernel/fs/nls/nls_cp863.ko
kernel/fs/nls/nls_cp864.ko
kernel/fs/nls/nls_cp865.ko
kernel/fs/nls/nls_cp866.ko
kernel/fs/nls/nls_cp869.ko
kernel/fs/nls/nls_cp874.ko
kernel/fs/nls/nls_cp932.ko
kernel/fs/nls/nls_euc-jp.ko
kernel/fs/nls/nls_cp936.ko
kernel/fs/nls/nls_cp949.ko
kernel/fs/nls/nls_cp950.ko
kernel/fs/nls/nls_cp1250.ko
kernel/fs/nls/nls_cp1251.ko
kernel/fs/nls/nls_iso8859-1.ko
kernel/fs/nls/nls_iso8859-2.ko
kernel/fs/nls/nls_iso8859-3.ko
--続ける--

カーネルモジュールの詳細情報を表示する

2012年10月30日

カーネルにロードされている各モジュールの詳細情報を表示するには、
modinfoコマンドを使用します。
引数に詳細情報を知りたいモジュールを指定して実行します。
また、オプション「-d」を指定すると、概要だけが表示されます。

■カーネルモジュールの詳細情報を表示する
[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# modinfo snd_pcm
filename: /lib/modules/2.6.32-279.el6.i686/kernel/sound/core/snd-pcm.ko
license: GPL
description: Midlevel PCM code for ALSA.
author: Jaroslav Kysela , Abramo Bagnara
srcversion: 9260DA35A52D5BDB19CA5B7
depends: snd,snd-page-alloc,snd-timer
vermagic: 2.6.32-279.el6.i686 SMP mod_unload modversions 686
parm: preallocate_dma:Preallocate DMA memory when the PCM devices are initialized. (int)
parm: maximum_substreams:Maximum substreams with preallocated DMA memory. (int)

■カーネルモジュールの概要を表示する
[root@Tiger ~]# modinfo -d snd_pcm
Midlevel PCM code for ALSA.

ロードされているカーネルモジュールを表示する

2012年10月29日

Linuxは、カーネルの肥大化を防ぐために、動作に最低限必要なプログラム以外は、
カーネルに含めず、環境に応じて追加や切り離しができるようになっています。
このように追加や切り離しができるものを「モジュール」と良い、代表的なものに
SCSIアダプタや、PCカード、デバイスドライバなどがあります。

このようなモジュールが現在組み込まれているかを表示するコマンドが「lsmod」コマンドになります。
このコマンドを実行するにはroot権限が必要になります。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# lsmod
Module Size Used by
iptable_filter 2173 1
ip_tables 9567 1 iptable_filter
ipv6 265153 15
ipt_LOG 4861 8
ppdev 7361 0
parport_pc 19342 0
parport 30853 2 ppdev,parport_pc
snd_ens1371 16915 0
snd_rawmidi 18283 1 snd_ens1371
snd_ac97_codec 95768 1 snd_ens1371
ac97_bus 968 1 snd_ac97_codec
snd_seq 45509 0
snd_seq_device 5220 2 snd_rawmidi,snd_seq
snd_pcm 67313 2 snd_ens1371,snd_ac97_codec
snd_timer 17758 2 snd_seq,snd_pcm
snd 52704 7 snd_ens1371,snd_rawmidi,snd_ac97_codec,snd_seq,snd_seq_device,snd_pcm,snd_timer
soundcore 6486 1 snd
snd_page_alloc 7042 1 snd_pcm
pcnet32 29202 0
mii 4443 1 pcnet32
microcode 12216 0
vmware_balloon 5811 0
i2c_piix4 11156 0
i2c_core 25825 1 i2c_piix4
sg 24612 0
ext4 337374 2
mbcache 5976 1 ext4
jbd2 77304 1 ext4
sr_mod 14245 0
cdrom 34094 1 sr_mod
sd_mod 35435 3
crc_t10dif 1217 1 sd_mod
pata_acpi 2513 0
ata_generic 2805 0
ata_piix 19202 0
mptspi 15015 2
mptscsih 31522 1 mptspi
mptbase 87046 2 mptspi,mptscsih
scsi_transport_spi 20334 1 mptspi
dm_mirror 11678 0
dm_region_hash 9737 1 dm_mirror
dm_log 8546 2 dm_mirror,dm_region_hash
dm_mod 67821 8 dm_mirror,dm_log

所有者名(ユーザ名)でファイル名を検索して、ディレクトリパスを表示する

2012年10月29日

所有者名(ユーザ名)をキーにして特定のファイルを検索することができます。
システム全体を検索する場合は、権限不足でパーミッションエラーになるので、
実行する際はroot権限が必要になります。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# find / -user pakira
/var/spool/mail/pakira
/proc/1570
/proc/1570/task
/proc/1570/task/1570
/proc/1570/task/1570/attr
/proc/1570/net
/proc/1570/attr
/proc/1571
/home/pakira
/home/pakira/.bashrc
/home/pakira/.bash_profile
/home/pakira/test_file.txt
/home/pakira/test_file2.txt
/home/pakira/.viminfo
/home/pakira/test_file1.txt
/home/pakira/.bash_history
/home/pakira/.bash_logout

特定のパーミッションのファイルを検索して、パーミッションを変更する

2012年10月29日

特定のパーミッションのファイルを検索して、別のパーミッションに置換できます。
引数に検索対象のディレクトリ名、「-perm」オプションと共にパーミッションの値を付けます。
さらに「-ok」オプションでパーミッションを変更するファイルを表示して、変更確認ができます。
また、「-exec」オプションを付けた場合は、確認なしで変更を実行します。

[pakira@Tiger ~]$ ls -l
合計 0
-rw-rw-r-- 1 pakira pakira 0 10月 29 01:08 2012 test_file.txt
-rw-rw-r-- 1 pakira pakira 0 10月 29 01:08 2012 test_file1.txt
-rw-rw-r-- 1 pakira pakira 0 10月 29 01:08 2012 test_file2.txt
[pakira@Tiger ~]$ find /home/pakira/ -perm 664 -ls -ok chmod 755 {} \;
↑ホームディレクトリ内にあるパーミッション「644」のファイルを「755」に変更します。
652811 0 -rw-rw-r-- 1 pakira pakira 0 10月 29 01:08 /home/pakira/test_file.txt
< chmod ... /home/pakira/test_file.txt > ? y
652813 0 -rw-rw-r-- 1 pakira pakira 0 10月 29 01:08 /home/pakira/test_file2.txt
< chmod ... /home/pakira/test_file2.txt > ? y
652812 0 -rw-rw-r-- 1 pakira pakira 0 10月 29 01:08 /home/pakira/test_file1.txt
< chmod ... /home/pakira/test_file1.txt > ? y
[pakira@Tiger ~]$ ls -l
合計 0
-rwxr-xr-x 1 pakira pakira 0 10月 29 01:08 2012 test_file.txt
-rwxr-xr-x 1 pakira pakira 0 10月 29 01:08 2012 test_file1.txt
-rwxr-xr-x 1 pakira pakira 0 10月 29 01:08 2012 test_file2.txt
[pakira@Tiger ~]$

タイムスタンプを条件にファイルを検索する

2012年10月26日

findコマンドでタイプスタンプをキーにファイル検索することができます。
検索条件としては、「何日以内に更新されたか」というのがキーになり、-atimeオプションを使用します。

■1日以内に更新されたファイルを検索する
[root@Tiger ~]# find /var/log -atime 1
/var/log/sa/sa24

■7日以内に更新されたファイルを検索する
[root@Tiger ~]# find /var/log -atime 7
/var/log/sa/sa18
/var/log/secure-20121023

特定のパーミッションのファイルを検索してディレクトリパスを表示する

2012年10月26日

findコマンドを使用して、パーミッションを検索キーにして、ファイル検索することができます。
パーミッションを検索キーにするには、-permオプションを使用します。
更にファイルタイプで条件を絞ることも可能です。

■パーミッション755のファイル、ディレクトリを表示する
[root@Tiger ~]# find /var/www/ -perm 755
/var/www/
/var/www/system
/var/www/system/backup_all.sh
/var/www/system/ftp_send.sh
/var/www/system/check_process.pl
/var/www/system/db_my_backup.sh
/var/www/backup

■パーミッション755のファイルのみを表示する
[root@Tiger ~]# find /var/www/ -perm 755 -type f
/var/www/system/backup_all.sh
/var/www/system/ftp_send.sh
/var/www/system/check_process.pl
/var/www/system/db_my_backup.sh
/var/www/html/192.168.0.36/mt/mt-ftsearch.cgi
/var/www/html/192.168.0.36/mt/mt-xmlrpc.cgi
/var/www/html/192.168.0.36/mt/mt-feed.cgi
/var/www/html/192.168.0.36/mt/mt-atom.cgi
/var/www/html/192.168.0.36/mt/mt-wizard.cgi

■パーミッション755のディレクトリのみを表示する
[root@Tiger ~]# find /var/www/ -perm 755 -type d
/var/www/
/var/www/system
/var/www/backup
/var/www/html
/var/www/html/192.168.0.36/mt
/var/www/html/192.168.0.36/mt/tmpl
/var/www/html/192.168.0.36/mt/tmpl/cms
/var/www/html/192.168.0.36/mt/tmpl/cms/widget
/var/www/html/192.168.0.36/mt/tmpl/cms/dialog
/var/www/html/192.168.0.36/mt/tmpl/cms/popup
/var/www/html/192.168.0.36/mt/tmpl/cms/include

dstatコマンドでシステムリソースをモニタリングする(リアルタイム)

2012年10月26日
dstatコマンドを使用すれば、
vmstat, iostat, ifstatなどのstat系コマンドを
これ1つで表示することができます。

例えば、
CPUやメモリ情報、ディスクI/OやネットワークI/Oを
リアルタイムでモニタリングできます。
表示を停止する場合は、「Ctrl+c」を実行します。

dstatコマンドがインストールされていない場合は、
下記コマンドでインストールしてください。

dstatコマンドのインストール

$ su -
パスワード:    ←rootパスワードを入力します。
# yum -y install dstat


dstatコマンドのオプション

-t 時間を表示します。
-c CPU使用時間の割合を表示します。
表示項目 usr ユーザ空間で使われたCPU使用時間の割合
sys システム空間で使われたCPU仕様時間の割合
idl アイドル状態のCPU時間の割合
wai 応答の待ち状態にあったCPU時間の割合
hiq ハードウェア割り込み処理に使われたCPU時間の割合
siq ソフトウェア割り込み処理に使われたCPU時間の割合
-m メモリの状態を表示します。
表示項目 used 物理メモリ全体での使用容量
buff バッファキャッシュで使っているメモリ使用容量
cach ページキャッシュからバッファキャッシュを引いたメモリ使用容量
free 未使用のメモリ使用容量
?vm バーチャルメモリの利用状態を表示します。
表示項目 majpf 物理メモリ上に該当データがロードされなかった回数
minpf 物理メモリに該当データがロードされた回数
alloc 空きメモリを探して割り当てた回数
free メモリを解放した回数
-s スワップの利用状態を表示します。
表示項目 used スワップ全体での使用容量
free 未使用のスワップ容量
-g ページの入出力数を表示します。
表示項目 in ディスクからメモリに読み込んだバイト数
out メモリ不足時にディスクに書き出したバイト数
-d ディスクの状態を表示します。
表示項目 read ディスクの読み込みバイト数
writ ディスクの書き込みバイト数
-r ディスクへの読み書きリクエスト数(IOPS)を表示します。
表示項目 read ディスクの読み込みリクエスト数
writ ディスクの書き込みリクエスト数
-i 割り込み処理の状態を表示します。
表示項目 interrupts 実行待ちのプロセス数
-l ロードアベレージの状態を表示します。
表示項目 1m 1分平均でのCPU時間の利用割合
5m 5分平均でのCPU時間の利用割合
15m 15分平均でのCPU時間の利用割合
-p プロセスの状態を表示します。
表示項目 run 実行中プロセス数
blk ブロック中のプロセス数
new 新しく実行されたプロセス数
-y システム状態を表示します。
表示項目 int 割り込み回数
csw コンテキストスイッチの回数
?lock ファイルロックの状態を表示します。
表示項目 pos posixロック数
lck flockロック数
rea 読み込みロック数
wri 書き込みロック数
-n ネットワーク状態を表示します。
recv ネットワーク全体の受信データ量
send ネットワーク全体の送信データ量
?ipc プロセス間通信の状態を表示します。
msg メッセージキュー
sem セマフォ
shm 共有メモリセグメント
?unix UNIXドメインソケットの状態を表示します。
表示項目 dgm Datagram通信の件数
str Stream通信の件数
lis listenな通信の件数
act activeな通信の件数
-tcp TCP通信のバイト数を表示します。
表示項目 lis 待ちうけ状態の数
act ACTIVE状態の数
syn SYN状態の数
tim TIME_WAIT状態の数
clo CLOSE状態の数
?udp UDP通信のバイト数を表示します。
表示項目 lis 待ちうけ状態の数
act ACTIVE状態の数
--float 小数点も含めて表示します。
--noheaders ヘッダ表示を一回だけにします。

続きを読む "dstatコマンドでシステムリソースをモニタリングする(リアルタイム)"

空ファイル(0バイト)やディレクトリを検索して削除する

2012年10月25日
空ファイル(0バイト)やディレクトリをfindコマンドで検索して削除することができます。
-sizeオプションを付けてファイル量を「0」に指定して実行します。
下記の例では単位を指定していませんが、ファイル容量を指定することも可能です。

[pakira@Tiger ~]$ ls -l
合計 0
-rw-rw-r-- 1 pakira pakira 0 10月 25 00:57 2012 index.htm
-rw-rw-r-- 1 pakira pakira 0 10月 25 00:57 2012 test_file.txt
[pakira@Tiger ~]$ find . -size 0 -ok rm {} \; ←0バイトファイルを削除します。
< rm ... ./index.htm > ? y
< rm ... ./test_file.txt > ? y
[pakira@Tiger ~]$ ls -l
合計 0

また、下記のように「-empty」オプションを付けて検索することも可能です。
[pakira@Tiger ~]$ ls -l
合計 0
-rw-rw-r-- 1 pakira pakira 0 10月 25 01:01 2012 index.htm
-rw-rw-r-- 1 pakira pakira 0 10月 25 01:01 2012 test_file.txt
[pakira@Tiger ~]$ find . -empty | xargs rm ←「-empty」オプションを付けて検索します。
[pakira@Tiger ~]$ ls -l
合計 0

ファイル容量の単位
空ファイルを指定する場合は、単位の指定は必要ありませんが、
単位を指定する際は、下記のものが使用できます。
b 512バイト
c バイト
k キロバイト
w 2バイト

特定のファイルを検索して削除する

2012年10月25日
findコマンドを利用して、特定の共通点を持つファイルを検索し、削除することができます。
引数として、検索するディレクトリ、検索するファイルの条件、-okオプション、
または-execオプションを指定し、削除コマンドのrmを使用します。
このrmコマンドの箇所を他のコマンドにして他の処理をさせる汎用性もあります。

---------------------------------------------------------------
■拡張子が「txt」のファイルを検索して削除する(削除確認あり)
---------------------------------------------------------------
[pakira@Tiger ~]$ ls -l
合計 16
-rw-rw-r-- 1 pakira pakira 0 10月 24 04:55 2012 index.htm
-rw-rw-r-- 1 pakira pakira 0 10月 24 04:55 2012 kouza.htm
-rw-rw-r-- 1 pakira pakira 28 10月 24 05:03 2012 test_file.txt
-rw-rw-r-- 1 pakira pakira 27 10月 24 05:05 2012 test_file1.txt
-rw-rw-r-- 1 pakira pakira 27 10月 24 05:06 2012 test_file2.txt
-rw-rw-r-- 1 pakira pakira 27 10月 24 05:09 2012 test_file3.txt

[pakira@Tiger ~]$ find . -name "*.txt" -ok rm {} \; ←ファイルを検索して削除します。
< rm ... ./test_file3.txt > ? y
< rm ... ./test_file.txt > ? y
< rm ... ./test_file2.txt > ? y
< rm ... ./test_file1.txt > ? y

[pakira@Tiger ~]$ ls -l
合計 0
-rw-rw-r-- 1 pakira pakira 0 10月 24 04:55 2012 index.htm
-rw-rw-r-- 1 pakira pakira 0 10月 24 04:55 2012 kouza.htm

find . -name "*.txt" -ok rm {} \;

上記の例では、カレントディレクトリ内にある拡張子が.txtのファイルを検索し、
削除しています。-okオプションを付けることで削除確認が表示されますが、
ここを-execオプションにすることで確認なしで削除できます。

---------------------------------------------------------------
■拡張子が「htm」のファイルを検索して削除する(削除確認なし)
---------------------------------------------------------------
[pakira@Tiger ~]$ ls -l
合計 0
-rw-rw-r-- 1 pakira pakira 0 10月 24 04:55 2012 index.htm
-rw-rw-r-- 1 pakira pakira 0 10月 24 04:55 2012 kouza.htm
[pakira@Tiger ~]$ find . -name "*.htm" -exec rm {} \; ←削除確認なしで削除します。
[pakira@Tiger ~]$ ls -l
合計 0

"*.txt" 拡張子が「.txt」のもの
"file*.*" ファイル名が「file」で始まっているもの
"????????" ファイル名が8文字のもの
"*~" バックアップファイル「~」で終わっているもの
"*" すべてのファイル

ファイル内のすべてのアルファベットを大文字、小文字変換する

2012年10月24日

ファイル内の大文字アルファベットを小文字に変更したい場合は、trコマンドを使用します。

tr 引数1 引数2 ファイル

引数1に対象とする文字を指定して、引数2に置換文字を指定します。
ファイルには、変換対象ファイル、
または、変換後の保存ファイル名を指定します。

■大文字アルファベットを小文字に変換する
[pakira@Tiger ~]$ echo "ABCDEFGHIJKLNMOPQRSTUVWXYZ" > test_file1.txt
↑テスト用ファイルを作成します。
[pakira@Tiger ~]$ cat test_file1.txt ←ファイルの内容を表示します。
ABCDEFGHIJKLNMOPQRSTUVWXYZ
[pakira@Tiger ~]$ tr '[A-Z]' '[a-z]' < test_file1.txt ←大文字を小文字に変換します。
abcdefghijklnmopqrstuvwxyz
[pakira@Tiger ~]$ tr '[A-Z]' '[a-z]' < test_file1.txt > test_file2.txt
↑test_file2.txtファイルに変換後の状態を保存します。
[pakira@Tiger ~]$ cat test_file2.txt ←変換後ファイルの内容を表示します。
abcdefghijklnmopqrstuvwxyz

■小文字アルファベットを大文字に変換する
[pakira@Tiger ~]$ cat test_file2.txt
abcdefghijklnmopqrstuvwxyz
[pakira@Tiger ~]$ tr '[a-z]' '[A-Z]' < test_file2.txt ←小文字を大文字に変換します。
ABCDEFGHIJKLNMOPQRSTUVWXYZ
[pakira@Tiger ~]$ tr '[a-z]' '[A-Z]' < test_file2.txt > test_file3.txt
[pakira@Tiger ~]$ cat test_file3.txt
ABCDEFGHIJKLNMOPQRSTUVWXYZ

複数ファイルの拡張子を一度に変更する

2012年10月24日

同じ拡張子のファイルを別の拡張子に一度に変更する場合には、シェルスクリプトで変更可能です。
例えば、「html」という拡張子のファイルを「htm」にする場合にはfor文を使用して下記の様に実行します。

[pakira@Tiger ~]$ touch index.html ←テスト用のhtmlファイルを作成します。
[pakira@Tiger ~]$ touch kouza.html
[pakira@Tiger ~]$ touch profile.html
[pakira@Tiger ~]$ touch campany.html
[pakira@Tiger ~]$ ls  ←テスト用ファイルを表示します。
campany.html index.html kouza.html profile.html
[pakira@Tiger ~]$ for name in *.html; do ←拡張子を「.html」から「.htm」に変更します。
> mv $name ${name%.html}.htm;
> done
[pakira@Tiger ~]$ ls  ←ファイルの拡張子を確認します。
campany.htm index.htm kouza.htm profile.htm


Linuxでマウント中のディスクを確認するコマンド|fstabの設定まで

2012年10月24日
「Linuxに新しく追加したディスクがマウントされているか確認したい」
「Linuxの再起動したらマウントが外れてしまった」
サーバーの容量追加や運用管理の現場では、こうしたディスク周りの確認・設定が日常的に発生します。

この記事では、Linuxで現在マウントされているディスクを確認する最適なコマンドと、再起動後も設定を維持するための「/etc/fstab」の書き方を体系的に解説します。手動マウントの手順からfstabのUUID指定、よくあるエラーへの対処まで、現場ですぐに使える実践的な内容です。

マウント中のディスクを確認するコマンド

単に mount コマンドを引数なしで実行すると、システムが裏側で使用している仮想的なファイルシステム(cgroupやtmpfsなど)が大量に表示されてしまい、知りたい情報が埋もれてしまいます。

現代のLinux運用では、以下の2つのコマンドを使い分けるのが一般的です。

続きを読む "Linuxでマウント中のディスクを確認するコマンド|fstabの設定まで"

Linuxにセットされているディスクを取り出す

2012年10月23日

ドライブにセットされているディスクを取り出すには、ドライブのイジェクトボタンを押すか、
ejectコマンドを実行します。ejectコマンドは引数なしで実行でき、

基本的にこのコマンドを実行する場合は、事前にumontコマンドで
アンマウントしておく必要があります。
※アンマウントしなくても、ejectコマンドが実行できるディストリビューションもあります。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# eject

LinuxでCD-ROMをアンマウントする

2012年10月23日

既にマウントされているディスクをLinuxシステムから切り離すには、
umountコマンドを使用します。
引数として、デバイス名または、マウントポイントを指定します。

デバイス名は「/dev/cdrom」になり、マウントポイントは一般的に
「/mnt/cdrom」または、「/cdrom」になります。

■デバイス名を指定した場合
[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# umount /dev/cdrom

■マウントポイントを指定した場合
[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# umount /mnt/cdrom

LinuxでCD-ROMをマウントする

2012年10月23日

LinuxでCD-ROMを使用する場合は、マウント操作が必要です。
マウントするには、mountコマンドを使用します。
このmountコマンドは、ディレクトリツリーにディスクやボリュームを組み込む為に
使用されるコマンドで、CD-ROMを使用する場合にも使います。

一般的にCD-ROMは「/dev/cdrom」というデバイス名で存在しており、
マウントポイントとして使用されるのは「/mnt/cdrom」または、「/cdrom」になります。
Redhat系のディレクトリビューションでmountコマンドを実行するにはroot権限が必要になります。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# mkdir /mnt/cdrom ←/mnt/cdromが存在しない場合のみ実行します。
[root@Tiger ~]# mount /dev/cdrom /mnt/cdrom ←CD-ROMをマウントします。
[root@Tiger ~]# cd /mnt/cdrom
[root@Tiger cdrom]# ls -l  ←CD-ROMの内容を表示します。
合計 82
drwxr-xr-x 2 root root 61440 4月 30 09:29 2010 CentOS
-rw-r--r-- 8 root root 212 6月 15 07:32 2008 EULA
-rw-r--r-- 8 root root 18009 6月 15 07:32 2008 GPL
-rw-r--r-- 8 root root 1512 6月 15 07:32 2008 RPM-GPG-KEY-beta
-r--r--r-- 1 root root 1098 4月 30 09:34 2010 TRANS.TBL

Linuxの時刻同期を確認するコマンド|chronyとntpのステータス確認

2012年10月22日
「サーバーの時刻がズレていて、ログの調査ができない」
「chrony と ntp、どっちを使えばいいの?」
Linuxサーバーの時刻同期(NTP)は、システムの安定運用に欠かせない重要な要素です。

この記事では、Linuxで時刻同期のステータスを確認するコマンドを解説します。現代のLinux(RHEL 7/8/9、AlmaLinuxなど)で標準の chrony と、古いシステムで使われる ntp の両方に対応した確認手順をまとめました。

1. 【現代の標準】chronyの同期状態を確認する

CentOS 7やRHEL 7以降、Ubuntu 20.04以降など、近年のLinuxディストリビューションでは chrony(クロニー) が標準のNTPクライアントとして採用されています。

まずchronydの起動状態を確認する

chronyc コマンドを実行する前に、まず chrony のサービス(デーモン)が動いているかを確認しましょう。

# systemctl status chronyd * chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled) Active: active (running) since Mon 2026-02-24 10:00:00 JST; 3 days ago

Active: active (running) であれば正常です。停止している場合は以下のコマンドで起動してください。

# systemctl start chronyd

続きを読む "Linuxの時刻同期を確認するコマンド|chronyとntpのステータス確認"

ターミナルエミュレータのデバイス名を確認する

2012年10月22日

プロセスの状況を表示した場合などに、どのターミナルエミュレータ(仮想端末)で
コマンドを実行したのかというデバイス名が表示されます。
ターミナルエミュレータのデバイス名を表示するには、引数なしでttyコマンドを実行します。

[pakira@Tiger ~]$ tty
/dev/pts/0

DMAチャンネル情報を表示する

2012年10月19日

コンピュータのマザーボードに搭載された各種機器が、CPUを介さずに、
データ転送を行うことができるようにする規格に、DMA(Direct Memory Access)があります。

DMAコントローラーに転送要求をする通信経路のDMAチャンネル情報は、
/proc/dmaファイルで表示できます。

moreやlessコマンドで/proc/dmaファイルを参照できます。

------------------------------------
[pakira@Tiger ~]$ more /proc/dma  ←DMAチャンネル情報を表示します。
4: cascade
------------------------------------

pidofコマンドでプロセス番号を表示する

2012年10月18日

プロセスを操作する場合、プロセスを特定するためにプロセス番号使用する必要があります。
一般的にpsコマンドで調べることが多いのですが、表示される情報が多いため、表示情報を
絞り込む条件を行う必要があったりしますので、何かと面倒な場合があります。

そのような場合は、pidofコマンドを利用します。

[root@Tiger ~]# pidof init ←「init」のプロセス番号を表示します。
1     ←「init」のプロセス番号は必ず「1」なので1と表示されます。

[root@Tiger ~]# pidof httpd ←「httpd」のプロセス番号を表示します。
1227 1226 1225 1224 1223 1141

pidofコマンドは/sbin配下に格納されていますが、ディストリビューションによっては
パスが取っていないことがありますので、その場合はフルパス「/sbin/pidof」で指定してください。
[root@Tiger ~]# /sbin/pidof postmaster
1276 1275 1274 1273 1189

システムの稼働時間と負荷状況を確認する

2012年10月18日

CPUの負荷状況を確認するコマンドにuptimeコマンドがあります。
また、wコマンドのヘッダー情報でもuptimeコマンドを実行した時と同じ情報が表示されます。

[root@Tiger ~]# uptime
15:33:00 up 50 min, 1 user, load average: 0.00, 0.00, 0.00

[root@Tiger ~]# w
15:33:03 up 50 min, 1 user, load average: 0.08, 0.02, 0.01  ←uptimeコマンドを実行した時と同じ情報
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
pakira pts/0 192.168.0.162 14:44 0.00s 0.16s 0.13s sshd: pakira [priv]

左から
15:33:03 : コマンドを実行した時刻
up 50 min : システム起動後の稼働時間
1 user : ログインユーザー数
load average: 0.08, 0.02, 0.01 : アクティブプロセスの平均数を意味し、直前1分、直前5分、直前15分

この中でCPU負荷情報として最も重要なのはload average(ロードアベレージ)になります。
これは一定時間におけるアクティブプロセスの平均数で、この値が高いということは
CPUの負荷が高いという事になります。


nmapでポートスキャンを実施する

2012年10月18日

Linuxサーバーのポートの使用状況を外部ネットワークから確認するには
ポートスキャン用ツールnmapを使用します。
nmapがインストールされていない場合は、インストールしてから実行します。

[root@Tiger ~]# yum install nmap ←nmapをインストールします。
[root@Tiger ~]# nmap -p 1-99 192.168.0.36 ←ポート1~99までをポートスキャン

Starting Nmap 5.51 ( http://nmap.org ) at 2012-10-18 14:46 JST
Nmap scan report for 192.168.0.36
Host is up (0.00065s latency).
Not shown: 96 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
MAC Address: 00:0C:29:2C:4C:AA (VMware)

Nmap done: 1 IP address (1 host up) scanned in 14.36 seconds

上記の例では、ホスト192.168.0.36のポート番号1〜99に対してポートスキャンを実施しています。
デフォルトではTCPプロトコルがスキャン対象になりますが、「-sU」オプションを指定することで
UDPプロトコルが対象になります。

またTCPプロトコルのオプションは「-sT」になります。
「-p」オプションはポート範囲を指定できます。
上記の例では、ポート21、22、80が開いていることが分かります。

※ポートスキャンは自分が管理しているサーバーに実施してください。
 他人が管理しているサーバーに無断で行うとハッキング行為と見なされる事があるのでご注意ください。

名前解決の参照順を変更する(/etc/host.conf)

2012年10月17日

名前解決システムを参照する設定は、/etc/host.confファイルでも行えます。
但し、このファイルは古いライブラリで使用されるため、最近のlibc6では、
/etc/nsswitch.confファイルが使用されます。

名前解決の参照順を変更する(/etc/nsswitch.conf)

通常は、編集する必要はありませんが、何らかの古いアプリケーションを使用する場合に
その必要性が出てくることも考えられます。

[root@Tiger ~]# vi /etc/host.conf
order hosts,bind

項目は、order だけでhosts,bindと並んでいます。
hostsは「/etc/hosts」ファイルを意味し、これを参照後、bind、つまりDNSサーバーを参照します。


名前解決の参照順を変更する(/etc/nsswitch.conf)

2012年10月17日

名前解決システムを参照する設定は、/etc/nsswitch.confファイルになります。
古いライブラリでは、/etc/host.confファイルで参照順を設定しますが、
現在において/etc/nsswitch.confファイルを編集することがほとんどです。

[root@Tiger ~]# vi /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns

上記は/etc/nsswitch.confファイルの抜粋ですが、「hosts:」行に参照順位が
設定されています。左からfiles、dnsとされており、filesは/etc/hostsファイルを
dnsは、DNSサーバーを意味します。

デフォルトでは、hostsファイルを参照後、名前が解決できない場合、
DNSサーバーを参照します。

参照項目としては、LDAPサーバーの場合、「ldap」、NISの場合「nis」と記述します。

プロトコル番号を確認する

2012年10月17日

ネットワーク上を流れるデータには、送信元情報や、宛先IPアドレス情報を格納した
IPヘッダが付加されています。
このIPヘッダには、プロトコル番号も含まれており、
Linuxもプロトコルとプロトコル番号の情報を対応表として
「/etc/protocols」ファイルに保持しています。

moreコマンドを使用して/etc/protocolsを参照することができます。
通常、/etc/protocolsファイルを編集する機会はありません。

[root@Tiger ~]# more /etc/protocols
/etc/protocols:
# $Id: protocols,v 1.9 2009/09/29 15:11:55 ovasik Exp $
#
# Internet (IP) protocols
#
# from: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
# Last IANA update included dated 2009-06-18
#
# See also http://www.iana.org/assignments/protocol-numbers

ip 0 IP # internet protocol, pseudo protocol number
hopopt 0 HOPOPT # hop-by-hop options for ipv6
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group management protocol
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
cbt 7 CBT # CBT, Tony Ballardie
egp 8 EGP # exterior gateway protocol
igp 9 IGP # any private interior gateway (Cisco: for IGRP)
bbn-rcc 10 BBN-RCC-MON # BBN RCC Monitoring
nvp 11 NVP-II # Network Voice Protocol
pup 12 PUP # PARC universal packet protocol
argus 13 ARGUS # ARGUS
emcon 14 EMCON # EMCON
xnet 15 XNET # Cross Net Debugger
chaos 16 CHAOS # Chaos
udp 17 UDP # user datagram protocol
mux 18 MUX # Multiplexing protocol
dcn 19 DCN-MEAS # DCN Measurement Subsystems
hmp 20 HMP # host monitoring protocol
prm 21 PRM # packet radio measurement protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
trunk-1 23 TRUNK-1 # Trunk-1
trunk-2 24 TRUNK-2 # Trunk-2
leaf-1 25 LEAF-1 # Leaf-1

I/Oアドレスの情報を表示する

2012年10月16日

Linuxシステムでは、入出力デバイスに予約されたCPUのメモリマップを表示出来ます。
情報を表示するには/proc/ioportsファイルを参照します。
参照する場合は、moreやlessコマンドを使用すると良いでしょう。

■PCIデバイスの情報を表示する
------------------------------------------------------------------------------
$ more /proc/ioports   ←I/Oアドレス情報を表示します。
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0071 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2

(中略)

0d00-feff : PCI Bus 0000:00
1000-103f : 0000:00:07.3
1000-103f : pnp 00:01
1000-1003 : ACPI PM1a_EVT_BLK
1004-1005 : ACPI PM1a_CNT_BLK
1008-100b : ACPI PM_TMR
100c-100f : ACPI GPE0_BLK
1010-1015 : ACPI CPU throttle
1040-104f : 0000:00:07.3
1040-104f : pnp 00:01
1060-107f : pnp 00:0d
1080-10bf : 0000:00:07.7
10c0-10cf : 0000:00:07.1
--続ける--(0%)    ←スペースキーを押すと次ページが表示されます。
------------------------------------------------------------------------------

PCIデバイスの情報を表示する

2012年10月16日

LinuxでPCIデバイスの情報を確認するにはlspciコマンドを使用します。
このlspciコマンドはオプションとして「-v」を付けて実行すると、更に詳細な情報を表示することができます。

このコマンドを実行するには、スーパーユーザー(root)権限が必要になります。

■PCIデバイスの情報を表示する
------------------------------------------------------------------------------
$ su -      ←root権限にスイッチします。
パスワード:    ←rootパスワードを入力します。
# lspci      ←lspciコマンドを実行します。
00:00.0 Host bridge: Intel Corporation E7230/3000/3010 Memory Controller Hub
00:01.0 PCI bridge: Intel Corporation E7230/3000/3010 PCI Express Root Port
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 PCI Express Port 1 (rev 01)
00:1c.4 PCI bridge: Intel Corporation 82801GR/GH/GHM Express Port 5 (rev 01)
00:1c.5 PCI bridge: Intel Corporation 82801GR/GH/GHM Express Port 6 (rev 01)
00:1d.0 USB Controller: Intel N10/ICH7 Family USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel N10/ICH 7 Family USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel N10/ICH 7 Family USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel N10/ICH 7 Family USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel 82801GB/GR (ICH7 Family) Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation /ICH7 SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01)
02:00.0 PCI bridge: Intel Corporation 6702PXH PCI Express-to-PCI Bridge(rev 09)
04:00.0 Ethernet controller: Broadcom NetXtreme Gigabit Ethernet PCI (rev 11)
06:05.0 VGA compatible controller: XGI Inc. (eXtreme Graphics ) Z7/Z9 (XG20)
------------------------------------------------------------------------------

■PCIデバイスの詳細情報を表示する
------------------------------------------------------------------------------
# lspci -v ←lspciコマンドをオプション「-v」を付けて実行します。
00:00.0 Host bridge: Intel Corporation E7230/3000/3010 Memory Controller Hub
Subsystem: Dell Unknown device 01b7
Flags: bus master, fast devsel, latency 0
Capabilities: [e0] Vendor Specific Information

00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) Bridge (rev 01)
Subsystem: Dell Unknown device 01b7
Flags: bus master, medium devsel, latency 0
Capabilities: [e0] Vendor Specific Information

(以下省略)

------------------------------------------------------------------------------

接続デバイスのIRQを表示する

2012年10月16日

/proc/interruptsファイルは、IRQ(InterruptReQuest:割り込み要求)情報を表示出来ます。
機器の増設をする前準備として、現在のサーバーの情報収集をする場合に重宝します。

IRQは、0〜15の16種類用意されており、/proc/interruptsファイルには
使用されているものに関する情報を記録されています。

■接続デバイスのIRQを表示する
# cat /proc/interrupts ←割り込み要求の情報を表示します。
CPU0 CPU1
0: 1578631102 0 IO-APIC-edge timer
1: 3 0 IO-APIC-edge i8042
6: 3 0 IO-APIC-edge floppy
8: 3 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-level acpi
12: 4 0 IO-APIC-edge i8042
14: 118 0 IO-APIC-edge ide0
50: 41424552 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2, ata_piix
169: 19056578 0 IO-APIC-level eth0
177: 0 0 IO-APIC-level uhci_hcd:usb3
185: 0 0 IO-APIC-level uhci_hcd:usb4
NMI: 0 0
LOC: 1576647381 1576668242
ERR: 0
MIS: 0

SCSIホストアダプタの状況を確認する

2012年10月15日

SCSIカードを装着しているシステムでSCSIカードのメーカーや機種名、型番、接続状況を知るには、
「/proc/scsi/scsi」ファイルの情報を表示することでSCSIカードの状態を確認することができます。

■SCSIホストアダプタの状況を確認する

[root@Tiger ~]# cat /proc/scsi/scsi ←SCSIホストアダプタの状況を確認する
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: Maxtor 6L160M0 Rev: BACE
Type: Direct-Access ANSI SCSI revision: 05

稼働中のコンピュータのケースを開けて確認するのは危険なので、この方法で確認するのが便利でスマートです。

ファイル名に日付を付けてリネームする

2012年10月15日

サーバー管理していると、ファイルをバックアップする場合や、
ファイル名を別名保存する時、いつ、その作業を行ったのかを
記録したい場合があります。

私が過去経験した現場では、設定ファイルを変更する際、
変更前ファイルは削除せず、必ず保存する運用ルールになっていました。

それは、設定を変更した事によって何かトラブルが起きても、
すぐ元に戻せるようにする為です。
その時の決まりとして、変更前の設定ファイルには、
変更当日日付を付加して管理するという決まりになっていました。

具体的に言うと、『 ファイル名 + 日付 』という形式で、
ファイルをバックアップしていました。

従って、過去に何度も設定変更しているファイルは、
ファイル名の日付部分の違うファイルがいくつもあり、
歴管理されることになります。

これは、後から何年何月何日に設定ファイルの
どこを変更したのかを一目瞭然にしておく為です。

今回はその日付をファイル名に付加する方法を紹介します。
日付を表示するコマンドは「 date 」コマンドを使います。
----------------------------------------------------------
$ date
2011年 12月 17日 土曜日 00:11:21 JST
----------------------------------------------------------
日付が表示されました。

では↓のように実行してください。
----------------------------------------------------------
$ date +%Y%m%d
20111217
----------------------------------------------------------

「2011年 12月 17日」が「20111217」と表示されました。
ファイル名に付ける日付は「20111217」を使用します。

それではファイル名に日付を付けて保存します。
----------------------------------------------------------
$ touch file_test.txt ←touchコマンドで「file_test.txt」ファイルを作る。
$ ls -l         ←ファイルの情報を表示する。
-rw-rw-r-- 1 pakira pakira 0 12月 17 00:16 file_test.txt
$ mv file_test.txt file_test.txt_`date +%Y%m%d` ←dateコマンドを実行する。

$ ls -l file_test.txt*     ←ファイル名が変わっていることを確認する。
-rw-rw-r-- 1 pakira pakira 0 12月 17 00:18 file_test.txt_20111217
----------------------------------------------------------

`date +%Y%m%d`をファイル名の後ろ、もしくは前に付けてmvやcpコマンドなどを実行すれば
日付付きのファイル名でファイルを保存することができます。

「`」はバッククォート、またはアクサングラーブと言い、[Shift]+[@]キーで入力します。
「`」で括った変数はコマンドとして実行されます。

また、「`」ではなく、$()で括って実行しても同じ結果が得られます。
----------------------------------------------------------
$ touch file_test2.txt_$(date +%Y%m%d)
$ ls -l file_test2.txt*
-rw-rw-r-- 1 pakira pakira 0 12月 17 00:31 file_test2.txt_20111217
----------------------------------------------------------

今回は、「%Y%m%d」と記述して年月日をファイル名に付けましたが、
この箇所を変更することで分や秒を付けることも可能です。
詳しくは下記を確認してください。
-------------------------
書式 説明
-------------------------
%Y 年(4桁表記)
%y 年(2桁表記)
%m 月(01〜12)
%d 日(01〜31)
%H 時(00〜23)
%I 時(00〜12)
%M 分(00〜59)
%S 秒(00〜59)
%a 曜日(Sun〜Sat)
%b 月名(Jan〜Dec)
-------------------------

上記を参考に「date +%Y%m%d%H%M%S」と実行すれば、「年月日時分秒」まで表示できます。

上記を参考に「date +%Y%m%d%H%M%S」と実行すれば、
「年月日時分秒」まで表示できます。
この表記を使うと、一日に同じファイル名でいくつもバックアップする場合、
ファイル名の重複を避ける事ができます。

ログインシェルを変更するには

2012年10月15日

ログイン時に起動するログインシェルは、ユーザーごとに変更できます。
変更を行うには、chshコマンドを使用します。

システムで指定できるシェルは/etc/shellsファイルに記述されています。
もし、新しいシェルをシステムに追加した場合には、
このファイルにシェルへのパスを記述しておく必要があります。

管理者は、他のユーザーのシェルを変更することができますが、
一般ユーザーは、自分が使用するシェルのみ変更できます。
変更の反映は、次回ログイン時にから有効になります。

■ログインシェルを変更する
----------------------------------------------------------
$ cat /etc/shells ←使用できるシェルを確認する
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
$ chsh  ←chshコマンドでログインシェルを変更する
pakira のシェルを変更します。
パスワード:   ←ユーザーのパスワードを入力する
新しいシェル [/bin/bash]: /bin/ksh  ←新しく使用したいシェルを入力
シェルを変更しました。


■管理者(root)がユーザー(pakira)のログインシェルを変更する
--------------------------------------------------------------
$ su -      ←「su -」でrootになる
パスワード:    ←rootパスワードを入力する
# chsh pakira   ←chshの後ろにユーザー名を指定する
pakira のシェルを変更します。
新しいシェル [/bin/bash]: /bin/csh ←新しく使用したいシェルを入力
シェルを変更しました。
----------------------------------------------------------

ログを記録する際のパフォーマンスを上げる

2012年10月13日

ログの記録先は、/etc/rsyslog.confファイルのアクションにフルパスを設定します。
mailファシリティのアクションには、/var/log/maillogが設定されていますが、
先頭に「-」が付加されています。

# Log all the mail messages in one place.
mail.*                    -/var/log/maillog

このようにログの記録先に「-」を付けると、ログのパフォーマンスが上がります。
ただしログを頻繁にハードディスクに書き込まないため、システムクラッシュの際には、
記録中のログが消失する可能性が高くなります。
「-」の記述はパフォーマンスを優先するか、ログの記録を優先するかよく検討を行った上で
設定する必要があります。


ログのレベルや出力先を設定する

2012年10月12日

Linuxシステムのログのレベルや出力先を設定するには、/etc/rsyslog.confファイルを編集します。
このファイルで「プライオリティ」や「アクション」を設定します。
また、ログのカテゴリを設定するには、「ファシリティ」を設定します。

[root@Tiger ~]# vi /etc/rsyslog.conf
#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.
authpriv.* /var/log/secure

# Log all the mail messages in one place.
mail.* -/var/log/maillog


# Log cron stuff
cron.* /var/log/cron

# Everybody gets emergency messages
*.emerg *

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log
local7.* /var/log/boot.log

下記の設定を例に説明をします。
local7.* /var/log/boot.log
ファシリティとは、ログを出力するカテゴリーです。上記の例では、local7になります。

プライオリティは、ログの重要度を指定するものになります。
プライオリティを指定するには「=」を使用します。
例えば、debugのみを指定する場合は、「=debug」と指定します。
上記例では「*」がプライオリティになり、意味としてはワイルドカードとして
すべてのプライオリティを出力します。

また、ファシリティとプライオリティを合わせてセレクタと呼びます。
なお、プライオリティに「none」を指定すると、そのファシリティを除く事ができます。

アクションは、出力先になり、上記例では、「/var/log/boot.log」になります。
出力先はファイルの他に、別のコンピューターを指定することもできます。
@ホスト名や@IPアドレスにより別のコンピューターへUDPプロトコルを使い、
ログを転送できます。

/etc/rsyslog.confファイルを編集した後は、設定を反映させるため、rsyslogを再起動します。
[root@Tiger ~]# /etc/rc.d/init.d/rsyslog restart
システムロガーを停止中: [ OK ]
システムロガーを起動中: [ OK ]

■ファシリティ
auth    認証メッセージ
authpriv 認証メッセージ
cron    cronメッセージ
daemon デーモンメッセージ
kern    カーネルメッセージ
lpr     プリンタメッセージ
mail    メールメッセージ
news   ニュースメッセージ
syslog  syslogメッセージ

■プライオリティ
debug   デバッグ
info     情報
notice   通知
warning  警告
err     エラー
crit     致命的な問題
alert    すぐに修正すべき問題
emerg   システム不能の非常事態

Linuxのホスト名をファイルで変更する

2012年10月11日

Linuxのホスト名をファイルで変更するには、/etc/sysconfig/networkファイルを編集します。

[root@Tiger ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Tiger
GATEWAY=192.168.0.1

「HOSTNAME」の箇所を変更したいホスト名に変更します。
続いて、/etc/hostsファイルを編集します。
[root@Tiger ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 Tiger

設定したホスト名を反映するには、システムの再起動を行います。
ファイルでホスト名を変更する場合には、/etc/sysconfig/networkファイルと、
/etc/hostsファイルの両方を必ず編集してください。

ホスト名設定は、/etc/rc.sysinitスクリプトで実行されるため、システムの再起動が必要です。
ネットワークの再起動では反映されませんので、注意してください。

Linuxのホスト名をコマンドで変更する

Linuxのホスト名をコマンドで変更する

2012年10月11日

Linuxのホスト名を一時的に変更する場合、/bin/hostnameコマンドを実行します。
変更したいホスト名を、hostnameコマンドの引数として指定して実行します。

[root@Tiger ~]# hostname Leo
[root@Tiger ~]# hostname
Leo

しかし、hostnameコマンドでの変更は、あくまで一時的なものであり、
システムを再起動すると消えてしまいます。
また、ホスト名とIPアドレスとの対応表である/etc/hostsファイルにも反映されません。

恒久的にホスト名を変更する場合は、下記ページを参照してください。
Linuxのホスト名をファイルで変更する

Linuxシステム起動時の情報を表示する

2012年10月11日

Linuxシステムを起動すると、バージョンによってはシステムに関連した各種情報が表示されます。
※CentOS6からは、スプラッシュ画面が表示されます。
 CentOS6の起動時に詳細情報を表示する

これらの情報は、/var/log/dmesgファイルに出力されています。
このファイルは、tailやless、moreコマンドで参照することができますが、
/bin/dmesgコマンドでも参照可能です。

[root@Tiger ~]# dmesg
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-279.el6.i686 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Fri Jun 22 10:59:55 UTC 2012
KERNEL supported cpus:
Intel GenuineIntel
AMD AuthenticAMD
NSC Geode by NSC
Cyrix CyrixInstead
Centaur CentaurHauls
Transmeta GenuineTMx86
Transmeta TransmetaCPU
UMC UMC UMC UMC
Disabled fast string operations
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003fef0000 (usable)
BIOS-e820: 000000003fef0000 - 000000003feff000 (ACPI data)
BIOS-e820: 000000003feff000 - 000000003ff00000 (ACPI NVS)
BIOS-e820: 000000003ff00000 - 0000000040000000 (usable)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved)

〜以下省略〜


dmesgで取得できる情報には、CPUやメモリ、認識されたデバイスに関するものになりますが、
表示される情報量が多いため、↓のようにgrepコマンドなどを使用して情報を絞って生じすると良いでしょう。

[root@Tiger ~]# dmesg | grep CPU
Transmeta TransmetaCPU
SMP: Allowing 1 CPUs, 0 hotplug CPUs
NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1
PERCPU: Embedded 14 pages/cpu @c2400000 s35928 r0 d21416 u2097152
Initializing CPU#0
CPU: Physical Processor ID: 0
mce: CPU supports 0 MCE banks
CPU0: Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz stepping 02
Brought up 1 CPUs
microcode: CPU0 sig=0x20652, pf=0x1, revision=0xc

ユーザーのログイン履歴を確認する

2012年10月10日

ユーザーのログイン履歴は、/var/run/utmp、/var/log/wtmpファイルに出力されます。
このファイルは、/var/log/lastlog、/var/log/btmpファイルと同様に
バイナリファイルな為、lessコマンドやcatコマンド、tailコマンドで表示できません。
表示するには、専用の/usr/bin/lastコマンドを使用します。

[root@Tiger ~]# last
pakira pts/0 192.168.0.162 Wed Oct 10 12:21 still logged in
reboot system boot 2.6.32-279.el6.i Wed Oct 10 12:20 - 12:37 (00:17)
root tty1 Fri Aug 24 13:45 - down (00:00)
pakira ftpd1456 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1455 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1446 192.168.0.162 Fri Aug 24 13:42 - down (00:03)

■ユーザー名を指定してログイン履歴を表示する
 引数にユーザー名を指定して実行すると、特定ユーザーのログイン履歴が表示できます。
[root@Tiger ~]# last pakira
pakira pts/0 192.168.0.162 Wed Oct 10 12:21 still logged in
pakira ftpd1456 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1455 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01)
pakira ftpd1446 192.168.0.162 Fri Aug 24 13:42 - down (00:03)
pakira pts/0 192.168.0.162 Fri Aug 24 13:20 - down (00:15)
pakira pts/0 192.168.0.162 Fri Aug 24 12:35 - 13:03 (00:28)
pakira ftpd1586 192.168.0.162 Fri Aug 24 11:54 - 11:55 (00:01)

ユーザーがログインに失敗した記録を確認する

2012年10月10日

ユーザーがログインに失敗した記録は、/var/log/btmpファイルに出力されます。
このファイルは、/var/log/lastlog、/var/log/wtmpファイルと同様にバイナリファイルなので、
tailコマンドで確認できません。

確認するには、/usr/bin/lastbコマンドを使用します。

[root@Tiger ~]# lastb
pakira ssh:notty 192.168.0.162 Wed Oct 10 12:34 - 12:34 (00:00)
pakira ssh:notty 192.168.0.162 Wed Oct 10 12:33 - 12:33 (00:00)

上記の例では、pakiraユーザーがログインに失敗していることがわかります。

ユーザーの最後のログイン記録を確認する

2012年10月10日

Linuxシステムでユーザーが最後にログインした記録は、/var/log/lastlogファイルに出力されます。
このファイルはバイナリファイルなので、
/var/log/wtmp、/var/log/btmpファイル同様にtailコマンドでは表示できません。
ファイルを読むには、/usr/bin/lastlogコマンドを使用します。

[root@Tiger ~]# lastlog
ユーザ名 ポート 場所 最近のログイン
root tty1 金 8月 24 13:45:27 +0900 2012
bin **一度もログインしていません**
daemon **一度もログインしていません**
adm **一度もログインしていません**
lp **一度もログインしていません**
sync **一度もログインしていません**
shutdown **一度もログインしていません**
〜中略〜
sshd **一度もログインしていません**
tcpdump **一度もログインしていません**
pakira pts/0 192.168.0.162 水 10月 10 12:21:19 +0900 2012

■特定ユーザーのログイン記録を表示する

 lastlogコマンドに、オプション「-u」を付けてユーザー名を指定します。
[root@Tiger ~]# lastlog -u pakira
ユーザ名 ポート 場所 最近のログイン
pakira pts/0 192.168.0.162 水 10月 10 12:21:19 +0900 2012

セキュリティ関連のログを表示する

2012年10月10日

Linuxシステムの認証メッセージは、/var/log/secureファイルに出力します。
セキュリティ関連のログを把握する場合は、/var/log/secureファイルを確認します。

[root@Tiger ~]# tail /var/log/secure
Aug 24 13:45:27 Tiger login: ROOT LOGIN ON tty1
Aug 24 13:45:30 Tiger login: pam_unix(login:session): session closed for user root
Aug 24 13:45:32 Tiger sshd[1157]: Received signal 15; terminating.
Oct 10 12:20:17 Tiger su: pam_unix(su-l:session): session opened for user postgres by (uid=0)
Oct 10 12:20:17 Tiger su: pam_unix(su-l:session): session closed for user postgres
Oct 10 12:21:19 Tiger sshd[1350]: Accepted password for pakira from 192.168.0.162 port 54751 ssh2
Oct 10 12:21:19 Tiger sshd[1350]: pam_unix(sshd:session): session opened for user pakira by (uid=0)
Oct 10 12:21:22 Tiger su: pam_unix(su-l:auth): authentication failure; logname=pakira uid=500 euid=0 tty=pts/0 ruser=pakira rhost= user=root

上記の例では、pakiraユーザーがroot認証に失敗していることがわかります。

ログをリアルタイムで表示するには

2012年10月 9日

Linuxのシステムログをリアルタイムで把握、表示するには、
tailコマンドに「-f」オプションを付けて、/var/log/messagesファイルを表示します。

実行すると、10件分のログが表示され、
その後リアルタイムでログが更新されて表示されます。

[root@Tiger ~]# tail -f /var/log/messages
Oct 9 02:03:49 Tiger kernel: imklog 5.8.10, log source = /proc/kmsg started.
Oct 9 02:03:49 Tiger rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1673" x-info="http://www.rsyslog.com"] start
Oct 9 02:04:01 Tiger kernel: Kernel logging (proc) stopped.
Oct 9 02:04:01 Tiger rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1673" x-info="http://www.rsyslog.com"] exiting on signal 15.
Oct 9 02:04:01 Tiger kernel: imklog 5.8.10, log source = /proc/kmsg started.
Oct 9 02:04:01 Tiger rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1686" x-info="http://www.rsyslog.com"] start
Oct 9 02:06:43 Tiger kernel: Kernel logging (proc) stopped.
Oct 9 02:06:43 Tiger rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1686" x-info="http://www.rsyslog.com"] exiting on signal 15.
Oct 9 02:07:01 Tiger kernel: imklog 5.8.10, log source = /proc/kmsg started.
Oct 9 02:07:01 Tiger rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1723" x-info="http://www.rsyslog.com"] start

上記例では、rsyslog関連のログが表示されています。

rsyslogを起動、停止するには

2012年10月 9日

rsyslogは、RHEL6、CentOS6から新たに採用された
syslogの信頼性を向上させたシステムロガーです。

syslogとrsyslogの違いとしては、次の点が挙げられます。

・ログ転送にTCPが使える
・ログの転送先にMySQLなどのDBを指定できる
・暗号化転送が可能
・syslogd 互換

■rsyslogのステータスを確認する
[root@Tiger ~]# /etc/init.d/rsyslog status
rsyslogd (pid 1121) を実行中...

■rsyslogのステータスを停止する
[root@Tiger ~]# /etc/init.d/rsyslog stop
システムロガーを停止中: [ OK ]

■rsyslogのステータスを起動する
[root@Tiger ~]# /etc/init.d/rsyslog start
システムロガーを起動中: [ OK ]

■rsyslogのステータスを再起動する
[root@Tiger ~]# /etc/init.d/rsyslog restart
システムロガーを停止中: [ OK ]
システムロガーを起動中: [ OK ]

■rsyslogのステータスを条件付き再起動する
[root@Tiger ~]# /etc/init.d/rsyslog condrestart
システムロガーを停止中: [ OK ]
システムロガーを起動中: [ OK ]


condrestartとは、
condrestartは、conditional restartを意味し、起動しているかどうかをチェックを行い、
起動していた場合は、stopとstartを実行して再起動します。
また、停止していた場合は、何もせず、停止したままになります。

restartは、起動しているかどうかに関わらずstopとstartを実行するので、
停止している状態でも起動を実行します。

すべてのサービスの状態を把握する

2012年10月 9日

すべてのサービスの状態を把握するには、
/sbin/serviceコマンドに--status-allオプションを指定して実行します。

# /sbin/service --status-all
NetworkManager は停止しています
acpid は停止しています
anacron は停止しています
atd (pid 1518) を実行中...
auditd (pid 1195) を実行中...
automount (pid 1280) を実行中...
Avahi デーモンは実行中ではありません
Avahi DNS デーモンは実行していません

一般ユーザーでも実行できますが、すべてのサービスの状態は表示されません。

サービスの状態を把握する

2012年10月 9日

各種サービスの状態を把握するには、
serviceコマンド、または各種サービススクリプトの引数にstatusを指定します。

■サービススクリプトの引数にstatusを指定した場合
$ /etc/init.d/ntpd status
ntpd (pid 1320) を実行中...

$ /etc/init.d/network status
設定されたデバイス:
lo eth0 eth1
現在活動中のデバイス:
lo eth0 eth1

■serviceコマンドの引数にstatusを指定した場合
$ /sbin/service ntpd status
ntpd (pid 1320) を実行中...

$ /sbin/service network status
設定されたデバイス:
lo eth0 eth1
現在活動中のデバイス:
lo eth0 eth1

サービスのステータス確認は、一般ユーザーでも行えます。

Linuxでパケットをキャプチャ(ダンプ)する

2012年10月 5日

Linuxでパケットをキャプチャするには、/usr/sbin/tcpdumpコマンドを利用します。
tcpdumpのみを実行するだけで、キャプチャされたパケットが表示されます。
tcpdumpコマンドを終了するには、「Ctrl」+「c」キーを入力します。

[root@Tiger ~]# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
04:22:05.749445 IP6 fe80::da5:6247:e055:19.51436 > fe80::b116:235a:44ef:e0c2.microsoft-ds: Flags [S], seq 2271766518, win 8192, options [mss 1440,nop,wscale 2,nop,nop,sackOK], length 0
〜以下省略〜

下記の例は、eth0を指定し、192.168.0.162宛てのパケットをキャプチャしている例です。
[root@Tiger ~]# tcpdump -i eth0 dst 192.168.0.162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
04:19:31.162101 IP 192.168.0.150.hostmon > 192.168.0.162.62483: UDP, length 56

ファイルへキャプチャの結果を保存する場合には、下記コマンドを実行します。
[root@Tiger ~]# tcpdump > ファイル名
[root@Tiger ~]# tcpdump -i eth0 dst 192.168.0.162 > ファイル名
ファイル名には任意の名前をつけてください。
上記を実行することで、任意の名前を付けたファイルにキャプチャ結果が保存されます。

設定ファイルでIPアドレスを設定するには

2012年10月 5日

コマンドでIPアドレスを設定するにはでは、コマンドを利用してIPアドレスを設定しましたが、
設定ファイルでもIPアドレスの設定が行えます。
コマンドでの設定は反映が一時的でしたが、設定ファイルの場合、
恒久的にIPアドレスの設定反映が行えます。
(システムやネットワークの再起動を行なっても設定は元に戻りません。)

設定するファイルと箇所は、/etc/sysconfig/network-scripts/ifcfg-eth0のIPADDR項目になります。
このIPADDRにIPアドレスを設定します。

設定後は、「/etc/init.d/network restart」や、「service network restart」などで
ネットワークの再起動を行い設定を反映をさせます。

[root@Tiger ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="192.168.0.255"
DNS1="192.168.0.1"
GATEWAY="192.168.0.1"
HWADDR="00:0C:29:EF:7C:51"
IPADDR="192.168.0.36"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="7bff9c7e-05b3-4619-a0bf-2ce1dd32e473"

[root@Tiger ~]# service network restart
インターフェース eth0 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: [ OK ]

コマンドでIPアドレスを設定するには

2012年10月 5日

IPアドレスの設定を行うには、/sbin/ifconfigコマンドを実行します。

ifconfigコマンドで設定したIPアドレスは、一時的に設定されるだけで、
システムの再起動やネットワークサービスを再起動すると、
設定したIPアドレスは消えてしまいますので注意が必要です。

主に機能や動作検証する際に利用するケースが多いです。

[root@Tiger ~]# ifconfig eth0 192.168.0.38 ←IPアドレスを192.168.0.38に設定

[root@Tiger ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0C:29:EF:7C:51
inet addr:192.168.0.38 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2001:c90:8247:6dd4:20c:29ff:feef:7c51/64 Scope:Global
inet6 addr: fe80::20c:29ff:feef:7c51/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11573 errors:0 dropped:0 overruns:0 frame:0
TX packets:552 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1415240 (1.3 MiB) TX bytes:59891 (58.4 KiB)
Interrupt:19 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@Tiger ~]# /etc/init.d/network restart ←ネットワークを再起動
インターフェース eth0 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: [ OK ]
[root@Tiger ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0C:29:EF:7C:51
inet addr:192.168.0.36 Bcast:192.168.0.255 Mask:255.255.255.0  ←IPアドレスが元に戻っています。
inet6 addr: 2001:c90:8247:6dd4:20c:29ff:feef:7c51/64 Scope:Global
inet6 addr: fe80::20c:29ff:feef:7c51/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11783 errors:0 dropped:0 overruns:0 frame:0
TX packets:682 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1438904 (1.3 MiB) TX bytes:76888 (75.0 KiB)
Interrupt:19 Base address:0x2000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

[root@Tiger ~]#

恒久的にIPアドレスの設定を行いたい場合は、
設定ファイルでIPアドレスを設定するにはを参照してください。

LinuxのDNS設定方法|resolv.confが元に戻る原因とnmcliの手順

2012年10月 4日
「/etc/resolv.conf を編集してDNSを設定したのに、サーバーを再起動したら元に戻ってしまった...」
現代のLinuxを触り始めたエンジニアが、かなりの確率でハマるネットワーク設定の罠です。

この記事では、LinuxにおけるDNSサーバー(参照先)の設定・変更方法を解説します。古い記事にある「設定ファイルを直接書き換える方法」が現代では非推奨となっている理由と、最新の環境(AlmaLinux 9やRHEL 9など)で再起動しても消えない正しいDNS設定の手順を現場目線でまとめました。

「設定したはずなのに反映されない...」というトラブルの原因と対処法もあわせて解説していますので、ぜひ最後まで読んでみてください。

なぜ /etc/resolv.conf を直接編集してはいけないのか?

かつてのLinux(CentOS 6など)では、/etc/resolv.conf というファイルに nameserver 8.8.8.8 のように記述するのが当たり前でした。

しかし、現代のLinux環境では「NetworkManager」というシステムがネットワーク設定を一元管理しています。

NetworkManager(ネットワークマネージャー)とは、RHEL 7以降のRed Hat系ディストリビューションで標準搭載されているネットワーク管理デーモン(サービス)です。IPアドレス、ルーティング、DNSなどのネットワーク設定を自動で制御しています。

そのため、人間が手動で /etc/resolv.conf を書き換えても、ネットワークの再起動やOSの再起動のタイミングでNetworkManagerによって上書き(初期化)されてしまいます。

実際に /etc/resolv.conf の中身を見てみると、一番上に「Generated by NetworkManager(ネットワークマネージャーによって自動生成されました)」という警告文が書かれているはずです。

# cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 192.168.1.1

この警告文こそが「このファイルを直接編集しても無駄ですよ」という、NetworkManagerからのメッセージです。つまり、現代のLinuxでDNSを恒久設定するにはNetworkManagerに対して設定を行う必要があるということです。

続きを読む "LinuxのDNS設定方法|resolv.confが元に戻る原因とnmcliの手順"

サービスのポート番号を確認する

2012年10月 4日

Linuxで稼働するサービスは、デフォルトでサービス固有のポート番号が使用されます。
例えば、httpならTCPポートの80番、httpsなら443番などです。

これらのポート番号を把握するには、サービス独自の設定ファイルを確認しなければなりませんが、
一般的に想定されているポート番号は、/etc/servicesファイルに記載されています。

/etc/servicesファイルには、各行ごとにサービス名とポート番号/プロトコル名が記載されています。
[root@Tiger ~]# view /etc/services
# /etc/services:
# $Id: services,v 1.48 2009/11/11 14:32:31 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2009-11-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
# http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name port/protocol [aliases ...] [# comment]

tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null

〜中略〜

ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
telnet 23/tcp
telnet 23/udp
# 24 - private mail system
lmtp 24/tcp # LMTP Mail Delivery
lmtp 24/udp # LMTP Mail Delivery
smtp 25/tcp mail
smtp 25/udp mail

〜中略〜

http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
kerberos 88/tcp kerberos5 krb5 # Kerberos v5
kerberos 88/udp kerberos5 krb5 # Kerberos v5
supdup 95/tcp
supdup 95/udp
hostname 101/tcp hostnames # usually from sri-nic
hostname 101/udp hostnames # usually from sri-nic
iso-tsap 102/tcp tsap # part of ISODE.
csnet-ns 105/tcp cso # also used by CSO name server
csnet-ns 105/udp cso

以下省略

※但し、各種サービスの設定ファイルでポート番号を任意に変更できるため、
 ここに記載されているポートで実際にサービスが動いているとは限りません。
 そのため注意が必要です。

CentOS6の起動時に詳細情報を表示する

2012年10月 3日

CentOS6になり、起動時の詳細情報が表示されなくなり、
進捗バー表示(スプラッシュ画面)になりました。
起動時に詳細情報を表示するには、下記のように操作します。

1.CentOS6を起動時に下図進捗バーが表示されたら「→」キーか、「Esc」キーを押下します。
centos6_boot01.jpg
(スプラッシュ画面)

2.起動時の詳細情報が表示されます。
centos6_boot02.jpg

進捗バーに戻す時は、「←」キーを押下します。


また、恒久的に起動時に詳細情報を表示させたい場合は、
「/etc/grub.conf」ファイルを編集します。

[root@Tiger ~]# vi /etc/grub.conf

kernel /vmlinuz-2.6.32-279.el6.i686 ro root=/dev/mapper/vg_tiger-lv_root rd_LVM_LV=vg_tiger/lv_swap rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_tiger/lv_root crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet

上記の行の行末にある「rhgb quiet」を削除して保存します。
この設定を行うことで、次回起動時から詳細情報が表示されるようになります。

公開鍵をインポートするには

2012年10月 3日

rpmコマンドでパッケージをインストールする際、
下記のような警告メッセージが表示される場合があります。

警告: ncurses-devel-5.7-3.20090208.el6.i686.rpm: ヘッダ V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY

これは、公開鍵がないというメッセージになり、
このメッセージを表示させないようにするには公開鍵をインポートします。

公開鍵は、/etc/pki/rpm-gpg/ディレクトリにありますので、
rpmコマンドに「--import」オプションを付けて下記の様に実行します。

[root@Tiger ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

上記コマンドを実行することで、警告メッセージが表示されなくなります。

rootパスワードを忘れた場合の再設定方法

2012年10月 3日

インストール時に設定したrootパスワードを忘れてしまった場合、
シングルユーザーモードでLinuxを起動すれば、パスワードの再設定ができます。

※例ではCentOS6.3を使用しています。

1.シングルユーザーモードでLinuxを起動します。
 起動方法は下記ページを参照してください。
 Linuxをシングルユーザーモードで起動する

2.passwdコマンドでrootパスワードを再設定します。
  passwdコマンドを実行し、「New password」で新しいrootパスワードを入力します。
  「Retype new password」で再度rootパスワードを入力します。
  最後に「successfully」が表示されれば成功したことになります。

root_password01.jpg

Linuxをシングルユーザーモードで起動する

2012年10月 2日

シングルユーザーモードとは、必要最小限のデーモンを起動し、
パスワード入力することなく、rootアカウントでログインするモードになります。

主にメンテンスや、障害時の調査に使用するモードになります。
※例ではCentOS6.3を使用しています。

1.「Press any key・・・」の画面で「ESC」キーを押下します。
linux_single_user_mode001.jpg

2.「CentOS・・・」と表示されるので、そのまま「e」キーを押下します。
linux_single_user_mode002.jpg

3.「kernel・・・」で始まる行にカーソルを合わせ、「e」キーを押下します。
linux_single_user_mode003.jpg

4.行末に「single」を追記して、「Enter」キーを押下します。
linux_single_user_mode004.jpg

5.画面が戻るので、ここで「b」キーを押下します。
linux_single_user_mode005.jpg

6.下図のようにコマンドプロンプトが表示されれば、シングルユーザーモードで起動しています。
linux_single_user_mode006.jpg

シングルユーザーモードを終了する場合は、rebootコマンドでシステムを再起動します。

Linuxをレキューモードで起動する

2012年10月 2日

Linuxの設定変更に失敗した場合や、OSが何らかの不具合で起動しなくなった場合、
レスキューモードを起動することで、システムの復旧や設定の修正が行えます。

まず、CentOSのDVD-ROMをドライブにセットし、コンピューターを起動します。

※例ではCentOS6.3を使用しています。
※コンピューターブードモードはDVD-ROMになっている必要があります。

1.ブートオプションモードを起動します。
ブートオプション画面の表示方法は↓を参照してください。
CentOS6でブートオプション画面を表示する

2.ブートオプション画面で「linux rescue」と入力します。
linux_recue_mode001.jpg

3.「English」を選択して、「OK」を押下します。
 カーソル移動は「tab」キー、決定は「Enter」キーでできます。
linux_recue_mode002.jpg

4.「jp106」を選択して、「OK」を押下します。
 ※「j」キーを押すと一発で「jp106」が選択できます。
linux_recue_mode003.jpg

5.「Local CD/DVD」を選択して、「OK」を押下します。
linux_recue_mode004.jpg

6.「Setup Networking」で「No」を押下します。(ネットワーク設定が不要の場合)
linux_recue_mode005.jpg

7.「Rescue」で「Continue」を押下します。
linux_recue_mode006.jpg

8.「Rescue」で「OK」を押下します。
linux_recue_mode007.jpg

9.「Rescue」で「OK」を押下します。
linux_recue_mode008.jpg

10.「shell start shell」を選択し、「OK」を押下します。
linux_recue_mode009.jpg

11.画面下部に「bash-4.1#」と表示されれば、レキューモードになっています。
linux_recue_mode010.jpg

レスキューモードを終了するには「exit」と入力して実行します。

ブートオプションでメモリテストを行うには

2012年10月 1日

ブートオプションで、コンピュータに搭載されたメモリのテストが実施できます。
ブートオプション画面を起動して下記オプションを入力します。

boot: memtest86

ブートオプション画面の表示方法は↓を参照してください。
CentOS6でブートオプション画面を表示する

1.memtest86を入力します。
boot_option04.jpg

2.PassやTestなどの進行状況が表示されます。
  メモリテストを終了するには「ESC」キーを入力します。
boot_option05.jpg

インストール時にディスプレイの解像度を変更するには

2012年10月 1日

グラフィカルモードでインストールを行う場合、ディスプレイの解像度が低くなり、
画面の一部が表示できない場合があります。

このような場合、マウスで次画面へ遷移できず、操作が行えません。
その場合、Linuxのインストール時にブートオプションを設定することで
解像度を指定することができます。

ブートオプション画面の表示方法は↓を参照してください。
CentOS6でブートオプション画面を表示する

boot: linux resolution = 横解像度x縦解像度

下図の例では、1024x768の解像度を指定します。

boot_option03.jpg

※ブートオプション画面の場合、キーボードの配列が外字設定になるので、
 「=」の入力は「へ」キーを使用します。
※「x」はアルファベットのxになります。

CentOS6でブートオプション画面を表示する

2012年10月 1日

Linuxのインストールシステムには、管理者用の各種の機能とオプションが含まれています。

そのブートオプションを使用するには、 boot: プロンプト画面で入力しますが、
グラフィカルインストールの場合、そのプロンプトをユーザーが操作を行なって
表示させる必要があります。

CentOS6でブートオプション画面を表示する手順を紹介します。
※今回使用しているLinuxは、CentOS6.3になります。

1.インストールディスクをセットし、下図の画面になったら、「ESC」キーを押下します。
boot_option01.jpg

2.下図画面に遷移したら、ブートオプションが入力できます。
boot_option02.jpg

ブートオプションは、「linux option」の形式で入力を行います。

インストールログを確認する

2012年9月29日

Linuxのインストールが完了すると、インストール時のログは、
/root/install.logに保存されます。

install.logファイルの内容を確認するには、viewやmoreコマンドを使用して参照します。

# view /root/install.log
Installing libgcc-4.1.2-50.el5.x86_64
warning: libgcc-4.1.2-50.el5: Header V3 DSA signature: NOKEY, key ID e8562897
Installing setup-2.5.58-7.el5.noarch
Installing filesystem-2.4.0-3.el5.x86_64
Installing basesystem-8.0-5.1.1.el5.centos.noarch
Installing cracklib-dicts-2.8.9-3.3.x86_64
Installing nash-5.1.19.6-68.el5.x86_64
Installing 1:termcap-5.5-1.20060701.1.noarch
Installing tzdata-2010l-1.el5.x86_64
Installing glibc-common-2.5-58.x86_64
Installing glibc-2.5-58.x86_64


# more /root/install.log
Installing libgcc-4.1.2-50.el5.x86_64
warning: libgcc-4.1.2-50.el5: Header V3 DSA signature: NOKEY, key ID e8562897
Installing setup-2.5.58-7.el5.noarch
Installing filesystem-2.4.0-3.el5.x86_64
Installing basesystem-8.0-5.1.1.el5.centos.noarch
Installing cracklib-dicts-2.8.9-3.3.x86_64
Installing nash-5.1.19.6-68.el5.x86_64
Installing 1:termcap-5.5-1.20060701.1.noarch
Installing tzdata-2010l-1.el5.x86_64
Installing glibc-common-2.5-58.x86_64
Installing glibc-2.5-58.x86_64

【関連記事】
viewコマンド
moreコマンド

LinuxのOS種類とバージョンを確認する

2011年8月18日
Linuxサーバーを運用していると、
担当者の引継ぎのような場面が必ず訪れます。

そのような時、引き継いだ人間は仕様を理解するために、
仕様書や構築手順書などのドキュメントに目を通します。

しかし、長い間運用されてきたシステムでは、
ドキュメントのメンテナンスがされていない、
または、一部が紛失しているケースがあります。

そんな時は、実際に稼動しているサーバーの
状態を確認するしかありません。

今回紹介するLinuxのOS種類とバージョンを確認する方法も、
サーバーの状態を確認するのに役立ちます。

続きを読む "LinuxのOS種類とバージョンを確認する"

Perlモジュールを一覧表示する

2011年8月17日

LinuxにインストールされているPerlモジュールをサーバー上で確認するには、
findコマンドを利用します。

--------------------------------------------
$ find `perl -e 'print "@INC"'` -name '*.pm' -print
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Bundle/DBD/mysql.pm
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/Compress/Raw/Zlib.pm
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBD/mysql.pm
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBD/mysql/GetInfo.pm
--------------------------------------------

また、findコマンドの次に指定しているperl -e 'print "@INC"'は、検索対象ディレクトリを
指定しており、このまま実行すると、Perlモジュールがインストールされている
ディレクトリ一覧が表示できます。
--------------------------------------------
$ perl -e 'print "@INC"
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/site_perl /usr/lib/perl5/5.8.8
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi
--------------------------------------------
perl -e 'print "@INC"だけでPerlモジュールがインストールされている
ディレクトリを指定して検索することができます。

Linuxでファイルコンテンツの検索をする

2011年3月 6日

Linuxには、ファイルを検索するコマンドとして、
findコマンドやgrepコマンドが用意されています。

これらのコマンドはLinuxシステム内からユーザが指定する条件
(ファイル名やファイルタイプなど)でファイル検索、
ファイル内文字列検索を行えますが、それ単体だとシステム全体に
対してファイル内文字列検索するには不便です。

そこで今回は、Windowsでいう、「ファイルコンテンツの検索」を
Linuxで行う方法を紹介します。

Linuxでファイル内文字列検索をするには、
次のコマンドを実行します。

----------------------------------------------------------------------
find 検索したいディレクトリ -type f -print | xargs grep 検索文字列
----------------------------------------------------------------------


例えば、/home/pakiraディレクトリ内で「pakira」という文字列が
記載されてるファイルを検索したい場合には次のように実行します。
----------------------------------------------------------------------
$ find /home/pakira -type f -print | xargs grep pakira
/home/pakira/.gtkrc-1.2-gnome2:include "/home/pakira/.gtkrc.mine"
/home/pakira/.bash_history:cd /home/pakira/work/
----------------------------------------------------------------------
結果として検索文字列を含むファイル名と検索文字列の箇所が同時に表示されます。

また、システム全体をファイル内文字列検索できるので、
下記のようにサーバーのIPアドレスが記述されているファイルを
検索する事も可能です。
----------------------------------------------------------------------
$ su -     ←「su -」でrootになる
パスワード:   ←rootパスワードを入力(表示されません)
# find /etc -type f -print | xargs grep 192.168.1.36
/etc/sysconfig/network-scripts/ifcfg-eth0:IPADDR=192.168.1.36
----------------------------------------------------------------------

ある文字列を含むファイルを検索したい場合に、このコマンドは
便利ですのでぜひこのまま覚えてください。

Linuxのシステムクロック、ハードウェアクロック

2010年8月 5日

コンピュータやサーバーに内蔵された時計は、電源がオフの状態でも
常に動作しています。これをハードウェアクロックと呼びます。
また、ハードウェアクロックとは別にLinuxカーネル内に存在する
システムクロックというものも存在ます。

システムクロックは、Linux起動時にハードウェアクロックを参照し、
設定を行いますが、その後は別々に動作します。
そのため起動してから時間の経過とともにハードウェアクロックと
システムクロックに差が生じてしまいます。

そこで重宝するのが、ネットワーク経由でクロックを同期する
NTP(Network Time Protocol)を使った時刻合わせです。

NTPはネットワーク経由でインターネット上にあるタイムサーバー
(NTPサーバー)から正確な時刻を取得します。
Linuxでは、ntpdateコマンドを使用してNTPサーバーから
正確な時刻を取得できます。

下記の例では「clock.nc.fukuoka-u.ac.jp」から
現在の時刻を取得しています。

# ntpdate -s clock.nc.fukuoka-u.ac.jp

■他のNTPサーバー
・東京大学 eric.nc.u-tokyo.ac.jp
・東京理科大学 ntp.sut.ac.jp
・東北大学 ntp1.tohoku.ac.jp
・広島大学 ns.hiroshima-u.ac.jp
・大阪府立大学 eagle.center.osakafu-u.ac.jp

ただし、ntpdateコマンドで同期できるのはシステムクロックになります。
ハードウェアクロックも同期させるには、clockコマンドにオプション
「-w」を付けて実行します。

# clock -w

また、hwclockでもシステムクロックの時刻をハードウェアクロックに
書き込み同期させることができます。その場合もオプション「-w」を
付けて実行します。

# hwclock -w

Linuxシステムで正確な時刻設定を行う場合には、cronを使用して
一定時間毎に時刻合わせをさせるのが良い方法です。
例えば、↓のように毎日0時にシステムクロックを同期し、
0時1分にハードウェアクロックを同期する設定を行います。

0 0 * * * /usr/sbin/ntpdate -s clock.nc.fukuoka-u.ac.jp > /dev/null 2>& 1
1 0 * * * /sbin/clock -w

上記の設定をcronに行う事で毎日決まった時間に正確な時刻を
同期することができます。

crontabコマンド 定期的にコマンドを自動実行する

これら時刻合わせ処理の流れをまとめると下記の様になります。

1.ntpdateコマンドでNTPサーバーから正確な時刻を取得し、システムクロックと同期
2.clockまたは、hwclockコマンドでシステムクロックとハードウェアクロックを同期


時刻管理はLinuxシステムを管理する上でとても重要なものになります。
ログ管理で言えば、いつどんな処理を行ったか、または、エラーや障害は
いつ発生したのかなど、サーバーの状態を時系列で追う必要がある場合に
重要になります。

なので、常に正確な時刻を刻むようこれらの内容をマスターし、
Linuxに設定するようにしてください。

Linuxログの調査をする

2010年7月30日

Linuxログを調べることで、システムの利用状況やソフトウェアの動作に
異常がないかを確認する事が出来ます。
また、問題が起こりそうな場合、その兆候を発見することもあります。

Linuxのログファイルで主になるのが「/var/log/messages」になります。

↓はmessagesファイルに記述されている内容を切り出したものになります。

Jun 29 17:38:11 Tiger shutdown[30243]: shutting down for system halt


ログの内容としては、

日時 ・・・・・・・・ Jun 29 17:38:11
出力元ホスト名 ・・・ Tiger
メッセージ出力元 ・・ shutdown
メッセージ ・・・・・ shutting down for system halt

になります。

このログファイルをリアルタイムで監視したい場合には、
tailコマンドにオプション「-f」を付けて実行すると
非常に便利です。

ログファイルが更新されると、更新された時点で
内容がリアルタイムに表示されます。

[root@Tiger log]# tail -f /var/log/messages
このリアルタイム監視を中止したい場合には、
キーボードの「Ctrl」+「c」キーを入力します。


また、ログファイルから特定のメッセージのみを調査したい場合には
grepコマンドが便利です。

下記の例はshutdownを行った時のログのみを表示させています。

[root@Tiger log]# grep shutdown /var/log/messages
Jun 28 23:36:33 Tiger shutdown[3341]: shutting down for system halt
Jun 29 03:10:39 Tiger shutdown[10217]: shutting down for system reboot
Jun 29 03:29:37 Tiger shutdown[3142]: shutting down for system halt
Jun 29 16:00:55 Tiger shutdown[2492]: shutting down for system reboot
Jun 29 16:08:08 Tiger shutdown[2615]: shutting down for system halt


/var/log/ディレクトリにはLinuxのログファイルが多く保存されますが、
「/var/log/secure」ファイルには認証などのセキュリティに関するログが
保存されます。

例えば、
下記はSSHでの接続に失敗した際のログになります。

[root@Tiger log]# tail /var/log/secure
Jul 15 15:00:53 Tiger sshd[10051]: Failed password for pakira from
192.168.1.97 port 51449 ssh2

また、ユーザー毎に最近ログインしたかどうかを確認するコマンドに
lastlogコマンドがあります。

このコマンドはrootしか実行できませんが、どのユーザーが
いつログインしたかを一覧で確認することができますので
非常に便利です。

[root@Tiger log]# lastlog
ユーザ名 ポート 場所 最近のログイン
root tty1 水 6月 30 14:06:21 +0900 2010
bin **一度もログインはありません**
daemon **一度もログインはありません**
adm **一度もログインはありません**
lp **一度もログインはありません**

(中略)

pakira pts/0 192.168.1.97 木 7月 15 13:35:23 +0900 2010
postgres **一度もログインはありません**
mysql **一度もログインはありません**
[root@Tiger log]#

インストール済みのRPMパッケージを検証する

2010年6月26日

既にインストールしてあるRPMパッケージに対して、検査を行い問題がある場合には
問題点を表示する事が出来ます。
インストール済みのRPMパッケージを検証するには、rpmコマンドに「-V」オプションを
指定して実行します。

検査する項目は8種類になり、正の情報をオリジナルパッケージから抽出し、
RPMデータベースとの比較を行います。
検証結果は「.」(ドット)または記号8文字で表示され、ドットが表示された
項目については、検証結果に問題がないことを意味し、記号が表示された
箇所については問題があることを意味します。

[root@Tiger src]# rpm -V dovecot-1.2.3-1vl5.i386 ←RPMパッケージを検証する
S.5....T c /etc/dovecot.conf

■検証項目
記号
5:MD5和
S:ファイルサイズ
L:シンボリックリンク
T:改変時間
D:デバイス
U:ユーザ
G:グループ
M:モード(パーミッションやファイルの種類など)

RPMパッケージをインストールする

2010年6月25日

rpmパッケージをインストールするには、rpmコマンドにオプション「-i」を
付けてコマンドを実行します。また一般的に「-i」オプションと同時に使用される
サブオプションにはパッケージ名を表示する「-v」オプション、インストールの
進行状況を50個のハッシュ(#)で表示する「-h」オプションがあります。

このrpmは必ずしもroot権限を必要としませんが、インストールの過程で
root権限を必要とする処理がある場合、エラーが表示されるので注意が
必要です。

[root@Tiger src]# rpm -ivh krb5-devel-1.6.1-36.el5.i386.rpm ←rpmパッケージをインストールします。
警告: krb5-devel-1.6.1-36.el5.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID e8562897
準備中... ########################################### [100%]
1:krb5-devel ########################################### [100%]

※上記のRPM実行例で表示されている「警告(warning)」について
 rpmコマンドを実行した際、上記の実行例のように「警告」、
 またはwarningが表示される場合があります。
 これはrpm4.1以降採用されたGPG署名のチェックが
 行われていない事を意味します。

 このメッセージが表示されても、インストールやアップグレードに
 影響することはありませんが、警告メッセージを表示させないように
 するには「RPM-GPG-KEY」ファイルを下記実行例のように
 インポートする必要があります。

 # rpm --import RPM-GPG-KEY

 ○CentOS5.5の場合
 # rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

■ 関連記事
rpmコマンドの詳細はこちら
RPMパッケージの情報を表示する
インストール済みのRPMパッケージを確認する
特定のプログラムがどのRPMパッケージに含まれているかを確認する
RPMパッケージがインストールされたディレクトリを表示する
依存パッケージを表示する
RPMパッケージのインストールテストを行う

依存パッケージを表示する

2010年6月24日

RPMパッケージのインストール、アップグレード、削除などパッケージを
操作する場合には依存関係や競合が問題になることが多いです。
そこでこれらトラブルを避けるために、事前に依存関係のチェックを行う事が
重要になります。

特定のパッケージがどのようなパッケージに依存しているかを確認するには、
問い合わせを行う「-q」オプションに依存パッケージ名を表示する「-R」オプションを
併用してrpmコマンドを実行します。

[root@Tiger src]# rpm -qR dovecot ←依存パッケージを表示します。
initscripts
/usr/sbin/useradd
/sbin/chkconfig
/usr/sbin/useradd
/usr/sbin/userdel
/usr/sbin/groupdel
/sbin/chkconfig
/sbin/service
/sbin/service
/bin/sh
/bin/sh
/bin/sh
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/bash
/bin/sh
libbz2.so.1
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.2)
libc.so.6(GLIBC_2.3.3)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
libc.so.6(GLIBC_2.7)
libcap.so.2
libcrypt.so.1
libcrypt.so.1(GLIBC_2.0)
libcrypto.so.6
libdl.so.2
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libpam.so.0
librt.so.1
librt.so.1(GLIBC_2.2)
libssl.so.6
libz.so.1

■ 関連記事
rpmコマンドの詳細はこちら
RPMパッケージの情報を表示する
インストール済みのRPMパッケージを確認する
特定のプログラムがどのRPMパッケージに含まれているかを確認する
RPMパッケージがインストールされたディレクトリを表示する
依存パッケージを表示する
RPMパッケージのインストールテストを行う

RPMパッケージのインストールテストを行う

2010年6月23日

rpmパッケージはその管理がとても容易で便利なものですが、
全くトラブルがないかと言えばそうでもありません。
依存関係や競合などの問題によりインストールコマンドを実行しても
エラーが表示されインストールできないこともあります。

しかし、インストール前にこうした問題が発生することがないかを
テストする事が出来ます。
テストを行うには、rpmコマンドに「--test」オプションを付けてインストールを
実行します。

このrpmは必ずしもroot権限を必要としませんが、インストールの過程で
root権限を必要とする処理がある場合、エラーが表示されるので注意が
必要です。

[root@Tiger src]# rpm -ivh --test zlib-devel-1.2.3-4vl5.i386.rpm ←rpmパッケージのインストールテストを行います。

※RPMの依存と競合
RPMパッケージはその管理がとても容易で便利なものですが、
全くトラブルがないかと言えばそうでもありません。
そのエラーの多くは、依存パッケージの不足と競合になります。

依存とは、インストールしようとしているパッケージを使用する上で、
必要となるパッケージがインストールされていないことでライブラリ不足が
発生しエラーになるケースです。依存エラーの場合、依存パッケージを先に
インストールする事で多くの場合エラー回避できます。

また、競合は同様の機能を提供するパッケージが
既にインストールされていることにより衝突が発生して
エラーになるケースです。

競合は、衝突しているパッケージを削除する事で
多く場合エラーを回避できます。

■ 関連記事
rpmコマンドの詳細はこちら
RPMパッケージの情報を表示する
インストール済みのRPMパッケージを確認する
特定のプログラムがどのRPMパッケージに含まれているかを確認する
RPMパッケージがインストールされたディレクトリを表示する
依存パッケージを表示する
RPMパッケージのインストールテストを行う

特定のプログラムがどのRPMパッケージに含まれているかを確認する

2010年6月20日

特定のプログラムからそのプログラムがどのRPMパッケージに
含まれているのかを確認するには、rpmコマンドに「-qf」オプションを付け、
引数にプログラム(実行ファイル)を指定します。

なお、下記の例にあるように、実行ファイルへのパスが環境変数$PATH、
またはシェル変数で定義されていないディレクトリに保存されている場合は
フルパス(絶対パス)で指定します。

[root@Tiger ~]# rpm -qf /usr/sbin/postmap ←実行ファイル/usr/sbin/postmapを含んでいるRPMパッケージを表示します。
postfix-2.3.3-2.1.el5_2


■ 関連記事
rpmコマンドの詳細はこちら
RPMパッケージの情報を表示する
インストール済みのRPMパッケージを確認する
特定のプログラムがどのRPMパッケージに含まれているかを確認する
RPMパッケージがインストールされたディレクトリを表示する
依存パッケージを表示する
RPMパッケージのインストールテストを行う

RPMパッケージがインストールされたディレクトリを表示する

2010年6月20日

特定のパッケージをインストールした際、関連ファイルがどこにあるのかを
確認するには、rpmコマンドに「-ql」オプションを付けて実行します。
引数としてはパッケージ名を指定します。

[root@Tiger ~]# rpm -ql postfix ←「postfix」の関連ファイル保存場所を表示
/etc/pam.d/smtp.postfix
/etc/postfix
/etc/postfix/LICENSE
/etc/postfix/TLS_LICENSE
/etc/postfix/access
/etc/postfix/bounce.cf.default
/etc/postfix/canonical
/etc/postfix/generic
/etc/postfix/header_checks
/etc/postfix/main.cf
/etc/postfix/main.cf.default
/etc/postfix/makedefs.out
/etc/postfix/master.cf
/etc/postfix/post-install
/etc/postfix/postfix-files
/etc/postfix/postfix-script
/etc/postfix/relocated
/etc/postfix/transport
/etc/postfix/virtual

(省略)

/var/spool/postfix/pid
/var/spool/postfix/private
/var/spool/postfix/public
/var/spool/postfix/saved
/var/spool/postfix/trace

■ 関連記事
rpmコマンドの詳細はこちら
RPMパッケージの情報を表示する
インストール済みのRPMパッケージを確認する
特定のプログラムがどのRPMパッケージに含まれているかを確認する
RPMパッケージがインストールされたディレクトリを表示する
依存パッケージを表示する
RPMパッケージのインストールテストを行う

RPMパッケージの情報を表示する

2010年6月19日

特定のパッケージがどのような機能を提供するものなのかを
調べるためには、問い合わせを行う-qオプションを使用し、
-iサブオプションを併用することにより、その情報を表示します。
引数として情報を表示したいパッケージのパッケージ名を指定します。

[root@Tiger ~]# rpm -qi nmap-4.11-1.1 ←rpmコマンドに「-qi」を付けて実行します。
Name : nmap Relocations: (not relocatable)
Version : 4.11 Vendor: CentOS
Release : 1.1 Build Date: 2007年01月06日 15時03分49秒
Install Date: 2010年01月08日 11時13分42秒 Build Host: builder1.centos.org
Group : Applications/System Source RPM: nmap-4.11-1.1.src.rpm
Size : 2365314 License: GPL
Signature : DSA/SHA1, 2007年04月04日 09時25分16秒, Key ID a8a447dce8562897
URL : http://www.insecure.org/nmap/
Summary : ネットワーク調査ツールおよびセキュリティスキャナ
Description :
Nmap is a utility for network exploration or security auditing. It supports
ping scanning (determine which hosts are up), many port scanning techniques
(determine what services the hosts are offering), and TCP/IP fingerprinting
(remote host operating system identification). Nmap also offers flexible target
and port specification, decoy scanning, determination of TCP sequence
predictability characteristics, reverse-identd scanning, and more.

■ 関連記事
rpmコマンドの詳細はこちら
RPMパッケージの情報を表示する
インストール済みのRPMパッケージを確認する
特定のプログラムがどのRPMパッケージに含まれているかを確認する
RPMパッケージがインストールされたディレクトリを表示する
依存パッケージを表示する
RPMパッケージのインストールテストを行う

ファイルシステムの一貫性をチェックする

2010年6月18日

ext2(Linux第2拡張ファイルシステム)及び、ext3(ジャーナル、自動記録保存つきLinux第2拡張ファイルシステム)
を対象にファイルシステムの一貫性をチェックするにはe2fsckコマンドを使用します。
引数としてはチェック対象のボリュームのデバイス名を指定します。

注意事項として検査が行われている途中でディスクアクセスがあると
システムが破壊される恐れがあるので、e2fsckコマンドを実行する場合には
アンマウントできるボリュームはアンマウントし、/が置かれたボリュームを
含む場合は、シングルユーザモードで実行するのが安全です。

また、このe2fsckコマンドを実行するには、root権限が必要になります。

[pakira@Tiger ~]$ su -  ←rootにスイッチします。
パスワード:    ←rootパスワードは表示されません。
[root@Tiger ~]# e2fsck -cfpv /dev/hda1 ←ボリューム「/dev/hda1」のファイルシステムの一貫性をチェックします。
/dev/hda1 is mounted.

WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? yes ←対象ボリュームをアンマウントかシングルユーザモードで起動しているなら「y」を入力します

/boot: recovering journal

35 inodes used (0.13%)
2 non-contiguous inodes (5.7%)
# of inodes with ind/dind/tind blocks: 8/3/0
15397 blocks used (14.75%)
0 bad blocks
0 large files

22 regular files
3 directories
0 character device files
0 block device files
0 fifos
0 links
1 symbolic link (1 fast symbolic link)
0 sockets
--------

特定のファイルシステムを検査する

2010年6月17日

複数のファイルシステムがあり、特定のファイルシステムに問題があることが
分かっている場合、そのファイルシステムだけを対象に検査する事が出来ます。

fsckコマンドに「-t」オプションを付けて引数にファイルタイプを指定して実行します。

注意事項として検査が行われている途中でディスクアクセスがあると
システムが破壊される恐れがあるので、fsckコマンドを実行する場合には
アンマウントできるボリュームはアンマウントし、/が置かれたボリュームを
含む場合は、シングルユーザモードで実行するのが安全です。

fsckコマンドを実行するにはroot権限が必要になります。

[pakira@Tiger ~]$ su - ←rootにスイッチします。
パスワード:
[root@Tiger ~]# fsck -t vfat /dev/hda1 ←デバイス「/dev/hda1」に含まれるファイル形式「vfat」のボリューム検査します。
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/hda1 is mounted.

WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? yes ←対象ボリュームをアンマウントかシングルユーザモードで起動しているなら「y」を入力します

/boot: clean, 35/26104 files, 15397/104388 blocks ←異常がなければ「clean」と表示されます。

■ fsckコマンドで異常が発見された場合の返り値
1:ファイルシステムの異常が修復された
2:システムを再起動する必要がある
4:ファイルシステムの異常が修復されないで残っている
8:操作エラー
16:利用法、または文法エラー
32:ユーザの操作によりキャンセル
128:共有ライブラリエラー


■ 関連記事
fsckコマンドの詳細はこちら
suコマンドの詳細はこちら
umountコマンドの詳細はこちら
システムの再起動を高速に行う
ファイルシステムを検査する
特定のファイルシステムを検査する

ファイルシステムを検査する

2010年6月17日

ファイルシステムに問題が疑われる場合、fsckコマンドを使用して
ファイルシステムの検査を行います。

fsckコマンドを実行するとファイルシステムに異常がないかを検査し、
異常があると、その内容により返り値を表示します。
また、以上が発見されない場合には、ディスクに含まれるファイル数、
使用しているブロック数、使用可能なブロック数を表示します。

引数なしでコマンドを実行した倍には、/etc/fstabに記述されている
すべてのデバイスを検査の対象とします。
また引数にデバイス名を指定するして実行した場合には、
指定したデバイスのみを検査します。

注意事項として検査が行われている途中でディスクアクセスがあると
システムが破壊される恐れがあるので、fsckコマンドを実行する場合には
アンマウントできるボリュームはアンマウントし、/が置かれたボリュームを
含む場合は、シングルユーザモードで実行するのが安全です。

fsckコマンドを実行するにはroot権限が必要になります。

[pakira@Tiger ~]$ su - ←rootにスイッチします。
パスワード:
[root@Tiger ~]# fsck /dev/hda1  ←デバイス「/dev/hda1」を検査します。
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/hda1 is mounted.

WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? yes ←対象ボリュームをアンマウントかシングルユーザモードで起動しているなら「y」を入力します。

/boot: recovering journal
/boot: clean, 35/26104 files, 15397/104388 blocks  ←異常がなければ「clean」と表示されます。


■ fsckコマンドで異常が発見された場合の返り値
1:ファイルシステムの異常が修復された
2:システムを再起動する必要がある
4:ファイルシステムの異常が修復されないで残っている
8:操作エラー
16:利用法、または文法エラー
32:ユーザの操作によりキャンセル
128:共有ライブラリエラー


■ 関連記事
fsckコマンドの詳細はこちら
suコマンドの詳細はこちら
umountコマンドの詳細はこちら
システムの再起動を高速に行う
ファイルシステムを検査する
特定のファイルシステムを検査する

使用できるフォーマット形式を表示する

2010年6月16日

Linuxは複数のファイル形式をサポートしており、これはバージョンアップするごとに
増加する傾向にあります。

そこで、どのようなファイル形式がサポートされているのかを
確認したい場合、fdiskコマンドに引数としてデバイスを指定して実行し、
対話型コマンドの「l」を実行すると、サポートしているファイル一覧を表示できます。

[root@Tiger ~]# fdisk /dev/hda ←fdiskコマンドにデバイスを指定して実行します。

コマンド (m でヘルプ): l ←対話型コマンド「l」を実行します。

0 空 1e Hidden W95 FAT1 80 古い Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / 古い Li c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 隠し C: ド c7 Syrinx
5 拡張領域 41 PPC PReP Boot 85 Linux 拡張領域 da 非 FS データ
6 FAT16 42 SFS 86 NTFS ボリューム db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS ボリューム de Dell ユーティリ
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX ブート可能 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 ブートマネ 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad ハ ee EFI GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC
11 隠し FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq 診断 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 隠し FAT16 <32M 61 SpeedStor a9 NetBSD f2 DOS セカンダリ
16 隠し FAT16 63 GNU HURD または ab Darwin boot fb VMware VMFS
17 隠し HPFS/NTFS 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI スワップ fd Linux raid 自動
1b Hidden W95 FAT3 70 DiskSecure Mult bb 隠し Boot Wizar fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT


■ 関連記事
使用できるフォーマット形式を表示する
パーティションテーブルを表示する
fdiskコマンドの詳細はこちら

パーティションテーブルを表示する

2010年6月16日

パーティションがどのように設定されているか確認するには
パーティションテーブルを表示すると確認できます。

パーティションテーブルを表示するにはfdiskコマンドに「-l」オプションを
付けてコマンドを実行します。「-u」オプションを付けて実行すると、
表示単位が「シリンダ」ではなく、「セクタ」で表示できます。

fdiskコマンドを実行するには、root権限が必要になります。

[pakira@Tiger ~]$ su - ←suコマンドでrootにスイッチします。
パスワード:
[root@Tiger ~]# fdisk -l ←オプション「-l」を付けて実行します。

Disk /dev/hda: 7516 MB, 7516192768 bytes
255 heads, 63 sectors/track, 913 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 913 7229250 8e Linux LVM


■ 関連記事
使用できるフォーマット形式を表示する
パーティションテーブルを表示する
fdiskコマンドの詳細はこちら

システム終了を中止する

2010年6月12日

システム終了を実行してもhalt処理が始まる前であれば
終了を中止する事が出来ます。

中止するには、コンソールであれば「Enter」キーを入力して
プロンプトを表示してからshutdownコマンドに「-c」オプションを
つけて実行するか、「Cntl」+「c」キーを入力します。

[root@Tiger ~]# shutdown -h +3 ←システム停止処理を実行します。

Broadcast message from root (pts/0) (Sat Jun 12 20:49:38 2010):

The system is going DOWN for system halt in 3 minutes!

(「Cntl」+「c」キーを入力)
Shutdown cancelled.


または、
[root@Tiger ~]# shutdown -c

■ 関連記事
システムを指定時間に終了する
システムをすぐに終了する
システムを停止する
システムをすぐに再起動する
システムの再起動を高速に行う
指定時間後にシステムを再起動する
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら
syncコマンドの詳細はこちら

システム終了時に接続ユーザにメッセージを送る

2010年6月12日

システム終了時には「The system is going down for system halt NOW!」という
メッセージが表示されますが、これとは別にオリジナルのメッセージを表示することが
できます。

オリジナルの終了メッセージを表示するには、shutdownコマンドに
「-h」オプションを付け、スペースで区切ってメッセージを入力します。

[root@Tiger ~]# shutdown -h +3 Goodbye! ←メッセージ「Goodbye!」を付けてシステム終了します。

Broadcast message from root (pts/0) (Sat Jun 12 20:42:39 2010):

Goodbye! ←メッセージが表示されます。
The system is going DOWN for system halt in 3 minutes!

■ 関連記事
システムを指定時間に終了する
システムをすぐに終了する
システムを停止する
システムをすぐに再起動する
システムの再起動を高速に行う
指定時間後にシステムを再起動する
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら
syncコマンドの詳細はこちら

システムを指定時間後に終了する

2010年6月12日

システムを指定時間に終了するでは終了時間を時刻で指定しましたが、
何分後に終了するのかというのを設定して終了する事も出来ます。

実行するには、shutdownコマンドに「-h」オプションを付けて、
引数としていつ終了するのかを分で指定します。

▼ 3分後に終了する
[root@Tiger ~]# shutdown -h +3 ←3分後に終了します。

Broadcast message from root (pts/0) (Sat Jun 12 20:35:48 2010):

The system is going DOWN for system halt in 3 minutes!

Broadcast message from root (pts/0) (Sat Jun 12 20:36:48 2010):

The system is going DOWN for system halt in 2 minutes! ←1分後ごとにカウントダウンします。

▼ 15分後に終了する
[root@Tiger ~]# shutdown -h +15


■ 関連記事
システムを指定時間に終了する
システムをすぐに終了する
システムを停止する
システムをすぐに再起動する
システムの再起動を高速に行う
指定時間後にシステムを再起動する
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら

システムを指定時間に終了する

2010年6月11日

コマンド実行後にすぐシステムを終了するのではなく、時間を指定して
その時間になったらシステムを終了することも出来ます。
時間を指定してシステムを終了するには、shutdownコマンドに「-h」オプションを
付け、さらに引数として「hh:mm(時:分)」形式の24時間表記で指定を行います。

shutdownコマンドを実行するにはroot権限が必要になります。

<b>▼午後5:30に終了する
[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# shutdown -h 17:30 ←17:30を指定して午後5時30にシステムが終了するようにしています。

Broadcast message from root (pts/0) (Thu Jun 10 17:20:10 2010):

The system is going DOWN for system halt in 10 minutes!

Broadcast message from root (pts/0) (Thu Jun 10 17:29:10 2010):

The system is going DOWN for system halt in 9 minutes! ←1分ごとにカウントダウンされます。

(省略)

The system is going DOWN for system halt in 1 minutes! ←1分ごとにカウントダウンされます。


<b>▼午前8:30に終了する場合
[root@Tiger ~]# shutdown -h 08:30


■ 関連記事
システムをすぐに再起動する
システムの再起動を高速に行う
指定時間後にシステムを再起動する
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
suコマンドの詳細はこちら
haltコマンドの詳細はこちら

システムをすぐに終了する

2010年6月11日

システムを終了させるにはいくつかのコマンドがあります。
有名なものではshutdownコマンド、haltコマンドなどになり、
それぞれオプションを付けて実行することでシステムを
すぐに終了する事が出来ます。

■ shutdownコマンド
shutdownコマンドにオプション「-h」を付け、引数にnowを指定します。
[root@Tiger ~]# shutdown -h now

■haltコマンド
haltコマンドにオプション「-p」を付けて実行します。
[root@Tiger ~]# halt -p

■paweroffコマンド
[root@Tiger ~]# poweroff

poweroffでもシステムを終了する事ができますが、ディストリビューションによって
下記のように動作が異なります。

■poweroffの各ディストリビューションの動作
RedHat Linux系:一般ユーザアカウント実行可
Vine Linux:rootパスワードを入力して停止プロセスを実行
Turbolinux:rootパスワードを入力して停止プロセスを実行
Debian GNU/Linux:一般ユーザでの実行不可


■ 関連記事
システムをすぐに再起動する
システムの再起動を高速に行う
指定時間後にシステムを再起動する
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら

システムを停止する

2010年6月11日

システムを停止するにはいくつか方法がありますが、haltコマンドを実行すると
接続しているユーザすべてにシステム停止メッセージを送り、ランレベルが
「0」に移行し停止プロセスを開始します。

通常はrootユーザになって実行しますが、haltコマンドは一般ユーザでも
実行可能です。但し、一般ユーザで実行する場合、ディストリビューションにより
動作が下記のように異なります。

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

[root@Tiger ~]# halt ←システムを停止します。

Broadcast message from root (pts/0) (Thu Jun 10 17:05:51 2010):

The system is going down for system halt NOW!


■関連記事
システムをすぐに再起動する
システムの再起動を高速に行う
指定時間後にシステムを再起動する
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら

指定時間後にシステムを再起動する

2010年6月10日

システムの再起動を行う場合の多くはすぐに再起動を行うことが多いと思いますが、
まれに何らかの処理が終了するのを待って実行する場合もあります。
こうした場合、再起動の実行を予約することができます。

これを実行するにはshutdownコマンドに「-r」オプションを付けて、何分後に
再起動するのか分で時間指定します。

[pakira@Tiger ~]$ su - ←rootになります。
パスワード:   ←パスワードを入力します。
[root@Tiger ~]# shutdown -r +3 ←3分後に再起動するよう指定します。

Broadcast message from root (pts/0) (Thu Jun 10 14:18:20 2010):

The system is going DOWN for reboot in 3 minutes!

Broadcast message from root (pts/0) (Thu Jun 10 14:19:20 2010):

The system is going DOWN for reboot in 2 minutes! ←1分ごとにカウントダウンされます。
Broadcast message from root (pts/0) (Thu Jun 10 14:20:20 2010):

The system is going DOWN for reboot in 1 minute! ←1分ごとにカウントダウンされます。

Broadcast message from root (pts/0) (Thu Jun 10 14:21:20 2010):

The system is going down for reboot NOW!


■関連記事
システムをすぐに再起動する
システムの再起動を高速に行う
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら

システムの再起動を高速に行う

2010年6月10日

Linuxが起動する時には「fsck」というファイルシステムのチェック処理が
実行がされます。再起動時もこの処理が行われるため、その分起動時間が
長くなります。

そのfsck処理を省略して再起動することで短時間に再起動を行うことができます。
短時間に再起動を行うにはshutdownコマンドに「-f」オプションを付けて
実行します。

[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:   ←パスワードを入力します。
[root@Tiger ~]# shutdown -rf now ←shutdownコマンドを実行します。

Broadcast message from root (pts/0) (Thu Jun 10 14:13:33 2010):

The system is going down for reboot NOW!


■関連記事
システムをすぐに再起動する
指定時間後にシステムを再起動する
shutdownコマンドの詳細はこちら
rebootコマンドの詳細はこちら
haltコマンドの詳細はこちら

サービスの起動、停止状況を初期設定(デフォルト)に戻す

2010年6月 9日

chkconfigコマンドでサービスの起動、停止の設定を行った後に
初期設定に戻すには引数にサービス名とresetオプションを指定します。
ちなみに実行ユーザはrootで行う必要があります。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# chkconfig --list ntpd ←ntpdの起動状況を確認します。
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:on
[root@Tiger ~]# chkconfig ntpd reset ←ntpdの起動状況を初期設定に戻します。
[root@Tiger ~]# chkconfig --list ntpd ←再度ntpdの起動状況を確認します。
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ←ntpdの起動状況が初期設定に戻ります。

■ 関連記事
ランレベルごとのサービス起動と停止状況を表示する
不要サービスを停止するには
システム起動時に特定のサービスを起動する
chkconfigコマンドの詳細はこちら
suコマンドの詳細はこちら

システム起動時に特定のサービスを起動する

2010年6月 9日

停止状況の中で停止(off)となっているサービスを起動するには
chkconfigコマンドに引数としてサービス名を指定し、onを指定して
実行します。

このように指定することで、次回起動時から自動的にそのサービスが
起動するようになります。また、ランレベルをオプションとして指定することで
指定したランレベルで起動、停止の指定を行うことができます。

ちなみに、chkconfigコマンドはroot権限で実行する必要があります。

[pakira@Tiger ~]$ su -
パスワード:
[root@Tiger ~]# chkconfig --list ntpd ←ntpdの起動状況を表示します。
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@Tiger ~]# chkconfig ntpd on ←ntpdのサービスを起動します。
[root@Tiger ~]# chkconfig --list ntpd ←ランレベル2345においてonになります。
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@Tiger ~]# chkconfig --level 6 ntpd on ←ランレベル6を指定して起動します。
[root@Tiger ~]# chkconfig --list ntpd ←ntpdの起動状況を再度表示します。
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:on ←ランレベル6がonになります。


関連記事
ランレベルごとのサービス起動と停止状況を表示する
不要サービスを停止するには
サービスの起動、停止状況を初期設定(デフォルト)に戻す
chkconfigコマンドの詳細はこちら
suコマンドの詳細はこちら

ランレベルごとのサービス起動と停止状況を表示する

2010年6月 8日

Linuxがシステム起動時に起動するサービスを一覧表示するには、
chkconfigコマンドに「--list」をオプションを付けて実行します。
また、引数に特定のサービスを指定するとで、そのサービスだけの状況を
表示することができます。

chkconfigコマンドを実行するにはroot権限が必要になります。

[pakira@Tiger ~]$ su - ←root権限になります。
パスワード:  ←rootパスワードを入力します。(パスワードは表示されません)
[root@Tiger ~]# chkconfig --list  ←サービスを一覧表示します。
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
apmd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
avahi-daemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off

(省略)

xinetd ベースのサービス:
chargen-dgram: off
chargen-stream: off
cvs: off
daytime-dgram: off
daytime-stream: off
discard-dgram: off
discard-stream: off
echo-dgram: off
echo-stream: off
eklogin: off
ekrb5-telnet: off
gssftp: off
klogin: off
krb5-telnet: off
kshell: off
rmcp: off
rsync: off
tcpmux-server: off
time-dgram: off
time-stream: off

■関連記事
不要サービスを停止するには
システム起動時に特定のサービスを起動する
サービスの起動、停止状況を初期設定(デフォルト)に戻す
chkconfigコマンドの詳細はこちら
suコマンドの詳細はこちら

ランレベルを切り替える

2010年6月 7日

ランレベルは必要に応じて切り替えることが出来ます。
ランレベルを切り替えるには、telinitコマンドかinitコマンドを使用します。
telinitコマンドに設定したいランレベルを引数として指定して実行します。

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

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

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

ランレベルを表示する

2010年6月 6日

UNIXやLinuxのシステムにはいくつかの動作モードがあり、
これを「ランレベル(RunLevel)」と呼びます。
現在システムで有効になっているランレベルを確認するには
runlevelコマンドを引数なしで実行します。

ちなみにランレベルは/etc/inittabに記述されており、
runlevelコマンドを実行する場合にはrootでなければなりません。

[root@Tiger ~]# runlevel ←ランレベルを表示します。
N 3  ←現在のランレベルは「3」です。

行頭の「N」は現在のランレベルにするまえのランレベルが表示されます。

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

■関連記事
ランレベルを切り替える
runlevelコマンドの詳細はこちら

起動ディスクを作成する

2010年6月 6日

Linuxは多くの場合、ハードディスクのMBR(マスターブートレコード)から
起動するようになっています。
なんらかの障害が発生した場合、ハードディスクから起動出来なく場合もあります。
そのような自体に備えるため、多くのディストリビューションでは、インストール手順の
行程でフロッピーディスクによる起動ディスクの作成というステップが設けられています。

しかし、インストール作業の段階で起動ディスクを作成していない場合、または
作成したディスクが使用できない場合、別のLinuxシステムがあればddコマンドを
使用することで起動ディスクを作成する事が出来ます。

ddコマンドはふぃあるをコピーを行うコマンドですが、コピーの際ファイルを
変換できる点がcpコマンドと異なり、ifオプションとして起動イメージである
「/boot/vmlinuz」、ofオプションとしてフロッピーディスクのディバイス名
「/dev/fd0」を指定します。

なお、このコマンドを実行する場合には、事前にフロッピーディスクを
ドライブにセットしておく必要があります。

[root@Tiger ~]# dd if=/boot/vmlinuz of=/dev/fd0


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

killallコマンドで使用できるkillシグナルを表示する

2010年6月 5日

killallコマンドもkillコマンド同様にプロセスの制御ができますが、
シグナル名はkillコマンドと異なります。
killallコマンドで使用できるシグナル名を確認するには、オプション「-l」を
指定してkillallコマンドを実行します。

また、killallコマンドはディストリビューションに収録されている
バージョンが異なり、シグナル名は同じでも機能が異なる場合があるので
使用する場合には、このコマンドで使用できるシグナルを確認する必要が
あります。

[root@Tiger ~]# killall -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED


■ 関連記事
pstree コマンドの詳細ついてはこちら
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

killコマンドで使用できるkillシグナルを表示する

2010年6月 5日

killコマンドはプロセスを終了するだけではなく、様々な制御をする事が出来ます。
この制御にしようされるのがシグナルと呼ばれるものなのですが、シグナルには
番号と名前、略称が用意されており、そのどれを使っても制御する事が出来ます。

このようなkillコマンドで使用できるシグナルを確認するには、オプション「-l」を
指定してkillコマンドを実行します。

[root@Tiger ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[root@Tiger ~]#

■よく使用されるkillシグナル
・シグナル番号:1 シグナル名:SIGHUP 略称:HUP
ハングアップ(再起動):制御端末がハングアップしたときと
同様の信号で、設定ファイルの更新後に使用される

・シグナル番号:2 シグナル名:SIGINT 略称:INT
割り込み:「Ctrl」+「c」キーなどが押されたときと同様の信号

・シグナル番号:9 シグナル名:SIGKILL 略称:KILL
強制終了

・シグナル番号:15 シグナル名:SIGTERM 略称:TERM
終了(デフォルト):引数なしで実行したのと同様

・シグナル番号:17 シグナル名:SIGSTOP 略称:STOP
中断

・シグナル番号:19 シグナル名:SIGCONT 略称:CONT
再開


■ 関連記事
pstree コマンドの詳細ついてはこちら
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

プロセスをハングアップさせる

2010年6月 5日

ハングアップシグナルは、ターミナルエミュレーターが終了する時に
送られる信号で、デーモンがこの信号を受け取ると、プログラムを
再起動します。

起動時に設定ファイルを読み出すプログラムの場合には
再度設定ファイルを読み出すので、設定ファイルを更新した
後にこのハングアップを利用することで新設定でデーモンを
起動することができます。

[root@Tiger ~]# ps ax ←プロセスを表示します。
2054 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2055 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2056 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2057 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2081 ? Ss 0:00 sshd: pakira [priv]
2083 ? S 0:00 sshd: pakira@pts/0
2084 pts/0 Ss 0:00 -bash
2112 pts/0 S 0:00 su -
2113 pts/0 S 0:00 -bash
2154 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2160 pts/0 R+ 0:00 ps ax
[root@Tiger ~]# kill -HUP 2053 ←「PID2053」のapache2を再起動します。
root@Tiger ~]# ps ax
2054 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2055 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2056 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2057 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2081 ? Ss 0:00 sshd: pakira [priv]
2083 ? S 0:00 sshd: pakira@pts/0
2084 pts/0 Ss 0:00 -bash
2112 pts/0 S 0:00 su -
2113 pts/0 S 0:00 -bash
2154 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL  ←apache2が再起動して、PIDが変更されます。
2160 pts/0 R+ 0:00 ps ax

■よく使用されるkillシグナル
・シグナル番号:1 シグナル名:SIGHUP 略称:HUP
ハングアップ(再起動):制御端末がハングアップしたときと
同様の信号で、設定ファイルの更新後に使用される

・シグナル番号:2 シグナル名:SIGINT 略称:INT
割り込み:「Ctrl」+「c」キーなどが押されたときと同様の信号

・シグナル番号:9 シグナル名:SIGKILL 略称:KILL
強制終了

・シグナル番号:15 シグナル名:SIGTERM 略称:TERM
終了(デフォルト):引数なしで実行したのと同様

・シグナル番号:17 シグナル名:SIGSTOP 略称:STOP
中断

・シグナル番号:19 シグナル名:SIGCONT 略称:CONT
再開


■ 関連記事
pstree コマンドの詳細ついてはこちら
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

特定コマンドのプロセスをすべて終了する

2010年6月 4日

同じコマンドを使用して複数の処理を行い、それらすべてを終了させたい場合は
killallコマンドを使用します。

[root@Tiger system]# ps -acx ←プロセスを表示します。
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init
2 ? S< 0:00 migration/0
3 ? SN 0:00 ksoftirqd/0
4 ? S< 0:00 watchdog/0

(省略)

1818 ? S 0:00 postmaster
1840 ? Ss 0:00 atd
1847 ? S 0:00 postmaster
1848 ? S 0:00 postmaster
1849 ? S 0:00 postmaster

1979 ? Ss 0:00 httpd
1980 ? S 0:00 rotatelogs
1981 ? S 0:00 rotatelogs
1982 ? S 0:00 rotatelogs
1983 ? S 0:00 rotatelogs
1984 ? S 0:00 rotatelogs
[root@Tiger system]# killall postmaster ←postmasterを終了します。
[root@Tiger system]# ps -acx ←プロセスを表示します。
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init
2 ? S< 0:00 migration/0
3 ? SN 0:00 ksoftirqd/0
4 ? S< 0:00 watchdog/0

(省略)
                             ←postmasterが終了しています。
1979 ? Ss 0:00 httpd
1980 ? S 0:00 rotatelogs
1981 ? S 0:00 rotatelogs
1982 ? S 0:00 rotatelogs
1983 ? S 0:00 rotatelogs
1984 ? S 0:00 rotatelogs

■ 関連記事
pstree コマンドの詳細ついてはこちら
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

プロセスを強制終了する

2010年6月 4日

通常のkillコマンドでプロセスを終了出来ない場合、強制終了させる方法があります。
killコマンドにはシグナルというオプションがあり、これによりプロセスをコントロールでき、
シグナル番号「9」が「SIGKILL」として割り当てられており、このシグナル番号、または
シグナルをオプションとして指定し、引数としてPID(プロセスID)を指定して実行する
ことで強制終了することができます。

[root@Tiger ~]# ps -a ←プロセスをすべて表示する
PID TTY TIME CMD
10086 pts/0 00:00:00 su
10087 pts/0 00:00:00 bash
10279 pts/1 00:00:00 su
10280 pts/1 00:00:00 bash
10315 pts/1 00:00:00 top
10316 pts/0 00:00:00 ps
[root@Tiger ~]# kill -9 10315 ←シグナル番号をオプションとして強制終了します。

■ 他の記述方法
[root@Tiger ~]# kill -SIGKILL 10315
[root@Tiger ~]# kill -kill 10315

■よく使用されるkillシグナル
・シグナル番号:1 シグナル名:SIGHUP 略称:HUP
ハングアップ(再起動):制御端末がハングアップしたときと
同様の信号で、設定ファイルの更新後に使用される

・シグナル番号:2 シグナル名:SIGINT 略称:INT
割り込み:「Ctrl」+「c」キーなどが押されたときと同様の信号

・シグナル番号:9 シグナル名:SIGKILL 略称:KILL
強制終了

・シグナル番号:15 シグナル名:SIGTERM 略称:TERM
終了(デフォルト):引数なしで実行したのと同様

・シグナル番号:17 シグナル名:SIGSTOP 略称:STOP
中断

・シグナル番号:19 シグナル名:SIGCONT 略称:CONT
再開

■ 関連記事
pstree コマンドの詳細ついてはこちら
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

実行中のプロセスを終了する

2010年6月 4日

実行中のプロセスを終了するには、killコマンドを使用します。
引数としてPID(プロセスID)を指定する必要があり、killコマンドを
実行するまえにpsコマンドを使用して終了させるプロセスのPIDを確認します。

[root@Tiger ~]# ps -a ←すべてのプロセスを表示します。
PID TTY TIME CMD
10086 pts/0 00:00:00 su
10087 pts/0 00:00:00 bash
10148 pts/1 00:00:00 su
10149 pts/1 00:00:00 bash
10188 pts/0 00:00:00 ps
[root@Tiger ~]# kill 10148 ←killコマンドでPID10148「su」を終了します。
[root@Tiger ~]# ps 10148 ←PID10148「su」の状態を表示します。
PID TTY STAT TIME COMMAND
                              ←PID10148「su」が停止したため表示されません。


■ 関連記事
pstree コマンドの詳細ついてはこちら
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

実行中のプロセスを強調表示してグラフィカルに表示する

2010年6月 3日

psコマンドでは、基本的に起動しているプロセスをすべて表示するため、
停止中のプロセスも表示されてしまいます。
そうした場合、現在どのプロセスが実行中で、どのプロセスが停止中なのか
見分けがつきません。

そのような場合、pstreeに「-h」オプションを付けて実行することで
実行中のプロセスが強調されて表示されます。

[pakira@Tiger ~]$ pstree -h
pstree_h.jpg

また、「-h」オプションはグラフィカル表示の「-G」オプションとの併用もできます。
[pakira@Tiger ~]$ pstree -Gh


■ 関連記事
pstree コマンドの詳細ついてはこちら
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

プロセスツリーをグラフィカルに表示する

プロセスをツリー状に表示する

2010年6月 3日

一般的にコマンドを実行すると、プログラムは処理を分岐(folk)して実行します。
このような時プロセスがどのように分岐して実行されているかを知るには
ツリー状に表示させると容易に把握できます。

プロセスをツリー状に表示するにはpstreeコマンドを使用します。

[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

pstreeコマンドの詳細ついてはこちら


特定のプロセスの状態のみを表示する

2010年6月 2日

psコマンドを通常すべてのプロセスを表示しますが、
特定のプロセスを表示させることもできます。

その場合、psコマンドにオプション「-C」を付けて実行します。
また、PID(プロセスID)が分かっている場合、引数にPIDを指定することで
特定のプロセスの状態だけを表示する事が出来ます。

[root@Tiger ~]# ps -lC crond ←「crond」プロセスだけを表示する
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
5 S 0 1770 1 0 78 0 - 1323 - ? 00:00:00 crond

※Linuxは大文字と小文字を別文字として扱いますので注意してください。

[root@Tiger ~]# ps 2063 ←「PID」で特定のプロセスを表示する
PID TTY STAT TIME COMMAND
2063 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL

■ 関連記事
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

実行中のプロセスのみ表示する

2010年6月 2日

psコマンドは基本的にプロセスが完了していないすべてのものを表示するため、
停止状態のプロセスも表示されます。

実行されているプロセスのみを表示するにはpsコマンドにオプション「-r」を
付けて実行します。


[root@Tiger ~]# ps -axr
PID TTY STAT TIME COMMAND
2379 pts/1 D+ 0:00 /bin/tar vfcz /var/www/backup/www_bak/www_back_20100602.tar.gz
2381 pts/0 R+ 0:00 ps -axr

■ 表示される情報
PID:プロセスごとに自動的に割り当てられる番号
TTY:プロセスを実行している制御端末
STAT:状態
  ・第1フィールド
    R:実行可能
    T:停止中かトレース中
    D:休眠中で割り込み不可
    S:休眠中
    Z:ゾンビ(削除されていないが停止中)
  ・第2フィールド
    W:スワップアウト(常駐ページなし)
  ・第3フィールド
    N:正のナイス値
TIME:CPU消費時間
COMMAND:実行コマンド

■ 関連記事
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

プロセスの親子関係を含めて表示する

2010年6月 2日

プロセスの親子関係を表示させるには、psコマンドに
オプション「-f」を付けて実行します。

親子関係にあるプロセスは、階層表示されます。

[root@Tiger ~]# ps -axf
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 init [3]
    2 ?        S<     0:00 [migration/0]
    3 ?        SN     0:00 [ksoftirqd/0]
    4 ?        S<     0:00 [watchdog/0]
    5 ?        S<     0:00 [events/0]
    6 ?        S<     0:00 [khelper]
    7 ?        S<     0:00 [kthread]
   10 ?        S<     0:00  \_ [kblockd/0]
   11 ?        S<     0:00  \_ [kacpid]
   68 ?        S<     0:00  \_ [cqueue/0]
   71 ?        S<     0:00  \_ [khubd]
   73 ?        S<     0:00  \_ [kseriod]
  136 ?        S      0:00  \_ [pdflush]
  137 ?        S      0:00  \_ [pdflush]
  138 ?        S<     0:00  \_ [kswapd0]
  139 ?        S<     0:00  \_ [aio/0]
  297 ?        S<     0:00  \_ [kpsmoused]
  321 ?        S<     0:00  \_ [ata/0]
  322 ?        S<     0:00  \_ [ata_aux]
  327 ?        S<     0:00  \_ [kstriped]
  336 ?        S<     0:00  \_ [ksnapd]
  347 ?        S<     0:00  \_ [kjournald]
  369 ?        S<     0:00  \_ [kauditd]
 1001 ?        S<     0:00  \_ [kgameportd]
 1131 ?        S<     0:00  \_ [kmpathd/0]
 1132 ?        S<     0:00  \_ [kmpath_handlerd]
 1154 ?        S<     0:00  \_ [kjournald]
 1648 ?        Ss     0:00 /usr/sbin/sshd
 2074 ?        Ss     0:00  \_ sshd: pakira [priv]
 2076 ?        R      0:00      \_ sshd: pakira@pts/0
 2077 pts/0    Ss     0:00          \_ -bash
 2105 pts/0    S      0:00              \_ su -
 2106 pts/0    S      0:00                  \_ -bash
 2149 pts/0    R+     0:00                      \_ ps -axf
 1663 ?        Ss     0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid

(省略)

 2065 ?        S      0:00  \_ /usr/local/apache2/bin/httpd -k start -DSSL
 2002 ?        S      0:00 /usr/sbin/smartd -q never
 2005 tty1     Ss+    0:00 /sbin/mingetty tty1
 2006 tty2     Ss+    0:00 /sbin/mingetty tty2
 2007 tty3     Ss+    0:00 /sbin/mingetty tty3
 2008 tty4     Ss+    0:00 /sbin/mingetty tty4
 2009 tty5     Ss+    0:00 /sbin/mingetty tty5
 2030 tty6     Ss+    0:00 /sbin/mingetty tty6


※デーモンプロセス(制御端末を持たないプロセス)も表示させるため、
 オプション「-x」を付けて実行しています。

デーモンプロセスの表示についてはこちらを確認してください。

■ 表示される情報
PID:プロセスごとに自動的に割り当てられる番号
TTY:プロセスを実行している制御端末
STAT:状態
  ・第1フィールド
    R:実行可能
    T:停止中かトレース中
    D:休眠中で割り込み不可
    S:休眠中
    Z:ゾンビ(削除されていないが停止中)
  ・第2フィールド
    W:スワップアウト(常駐ページなし)
  ・第3フィールド
    N:正のナイス値
TIME:CPU消費時間
COMMAND:実行コマンド

psコマンドの詳細はこちら

デーモンプロセスも含めて表示する

2010年6月 1日

コンピュータは一般的に何らかの命令を与えないと動作しませんが、
LinuxやUNIXなどの場合、システム維持の為に命令を与えなくても
特別に動作しているプロセスがあります。

これらのプロセスはデーモンと呼ばれ、ユーザからの要求が
あるまで待ち続け、要求があると新たにプロセスを作成し、
処理を実行します。

ここで作成されたプロセスを子プロセスと言い、また予め一定の
日時になった時点で動作するように設定が行われていると、
予約された日時に予約された処理を行います。

これらのデーモンは基本的にユーザの設定に従って
処理が実行されますが、中にはデフォルト(標準設定)に
なっているものも存在ます。

こうしたデーモンは、ユーザがコンソールやターミナルエミュレータといった
制御端末で操作して実行するものではないので、psコマンドを実行しても
制御端末は表示されませんが、オプション「-x」を付けることで
これらのプロセスも表示できるようになります。

[pakira@Tiger ~]$ ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init [3]
2 ? S< 0:00 [migration/0]
3 ? SN 0:00 [ksoftirqd/0]
4 ? S< 0:00 [watchdog/0]
5 ? S< 0:00 [events/0]
6 ? S< 0:00 [khelper]

(省略)

1993 ? S 0:00 /usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/webst
1994 ? S 0:00 /usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/192.1
2004 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2005 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2006 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2007 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2008 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
2009 ? S 0:00 postgres: writer process
2010 ? S 0:00 postgres: stats buffer process
2011 ? S 0:00 postgres: stats collector process
2013 ? S 0:00 /usr/sbin/smartd -q never
2016 tty1 Ss+ 0:00 /sbin/mingetty tty1
2017 tty2 Ss+ 0:00 /sbin/mingetty tty2
2018 tty3 Ss+ 0:00 /sbin/mingetty tty3
2019 tty4 Ss+ 0:00 /sbin/mingetty tty4
2020 tty5 Ss+ 0:00 /sbin/mingetty tty5
2021 tty6 Ss+ 0:00 /sbin/mingetty tty6
2098 ? Ss 0:00 sshd: pakira [priv]
2100 ? S 0:00 sshd: pakira@pts/0
2101 pts/0 Ss 0:00 -bash
2129 pts/0 S 0:00 su -
2130 pts/0 S+ 0:00 -bash
2173 ? Ss 0:00 sshd: pakira [priv]
2175 ? S 0:00 sshd: pakira@pts/1
2176 pts/1 Ss 0:00 -bash
2408 ? S 0:00 /usr/local/apache2/bin/httpd -k start -DSSL
8765 pts/1 R+ 0:00 ps ax

TTYの箇所が「?」のプロセスは制御端末を持っていません。

■ 表示される情報
PID:プロセスごとに自動的に割り当てられる番号
TTY:プロセスを実行している制御端末
STAT:状態
  ・第1フィールド
    R:実行可能
    T:停止中かトレース中
    D:休眠中で割り込み不可
    S:休眠中
    Z:ゾンビ(削除されていないが停止中)
  ・第2フィールド
    W:スワップアウト(常駐ページなし)
  ・第3フィールド
    N:正のナイス値
TIME:CPU消費時間
COMMAND:実行コマンド

■ 関連記事
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

すべてのプロセスを表示する

2010年6月 1日

すべてのプロセスを表示するには「-a」オプションをつけてpsコマンドを実行します。

自分自身が実行したプロセスを確認する場合には、オプション「-a」に
引数なしで確認できますが、他のユーザがどのプロセスを
実行しているのかを確認するには、オプション「-u」も付けて実行します。

[root@Tiger ~]# ps -a
PID TTY TIME CMD
2129 pts/0 00:00:00 su
2130 pts/0 00:00:00 bash
2419 pts/0 00:00:00 ps

[root@Tiger ~]# ps -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2016 0.0 0.1 1660 424 tty1 Ss+ 12:42 0:00 /sbin/mingetty tty1
root 2017 0.0 0.1 1660 416 tty2 Ss+ 12:42 0:00 /sbin/mingetty tty2
root 2018 0.0 0.1 1660 424 tty3 Ss+ 12:42 0:00 /sbin/mingetty tty3
root 2019 0.0 0.1 1660 420 tty4 Ss+ 12:42 0:00 /sbin/mingetty tty4
root 2020 0.0 0.1 1660 420 tty5 Ss+ 12:42 0:00 /sbin/mingetty tty5
root 2021 0.0 0.1 1660 424 tty6 Ss+ 12:42 0:00 /sbin/mingetty tty6
pakira 2101 0.0 0.5 5556 1412 pts/0 Ss 12:47 0:00 -bash
root 2129 0.0 0.5 5948 1352 pts/0 S 12:47 0:00 su -
root 2130 0.0 0.5 5688 1440 pts/0 S 12:47 0:00 -bash
pakira 2176 0.0 0.5 5556 1416 pts/1 Ss+ 12:50 0:00 -bash
root 2420 0.0 0.3 5128 880 pts/0 R+ 13:29 0:00 ps -au

■ 表示される情報
USER:実行ユーザ名
PID:プロセスごとに自動的に割り当てられる番号
%CPU:CPU使用率
%MEM:実メモリ使用率
VSZ:データセグメントとスタックセグメントの和(単位:KB)
STAT:状態
  ・第1フィールド
    R:実行可能
    T:停止中かトレース中
    D:休眠中で割り込み不可
    S:休眠中
    Z:ゾンビ(削除されていないが停止中)
  ・第2フィールド
    W:スワップアウト(常駐ページなし)
  ・第3フィールド
    N:正のナイス値
START:開始時刻
TIME:CPU消費時間
COMMAND:実行コマンド

■ 関連記事
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

ユーザ名を含めて実行プロセスを表示する

2010年6月 1日

実行中のプロセスにユーザ名を含めて表示するには、
psコマンドにオプション「-u」を付けて実行します。

[pakira@Tiger ~]$ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
pakira 2101 0.0 0.5 5556 1412 pts/0 Ss 12:47 0:00 -bash
pakira 2176 0.5 0.5 5556 1416 pts/1 Ss 12:50 0:00 -bash
pakira 2204 0.0 0.3 5128 884 pts/1 R+ 12:50 0:00 ps -u

[root@Tiger ~]# ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2016 0.0 0.1 1660 424 tty1 Ss+ 12:42 0:00 /sbin/mingetty tty1
root 2017 0.0 0.1 1660 416 tty2 Ss+ 12:42 0:00 /sbin/mingetty tty2
root 2018 0.0 0.1 1660 424 tty3 Ss+ 12:42 0:00 /sbin/mingetty tty3
root 2019 0.0 0.1 1660 420 tty4 Ss+ 12:42 0:00 /sbin/mingetty tty4
root 2020 0.0 0.1 1660 420 tty5 Ss+ 12:42 0:00 /sbin/mingetty tty5
root 2021 0.0 0.1 1660 424 tty6 Ss+ 12:42 0:00 /sbin/mingetty tty6
root 2129 0.0 0.5 5948 1352 pts/0 S 12:47 0:00 su -
root 2130 0.0 0.5 5688 1440 pts/0 S 12:47 0:00 -bash
root 2213 0.0 0.3 5128 880 pts/0 R+ 12:51 0:00 ps u

■ 表示される情報
USER:実行ユーザ名
PID:プロセスごとに自動的に割り当てられる番号
%CPU:CPU使用率
%MEM:実メモリ使用率
VSZ:データセグメントとスタックセグメントの和(単位:KB)
STAT:状態
  ・第1フィールド
    R:実行可能
    T:停止中かトレース中
    D:休眠中で割り込み不可
    S:休眠中
    Z:ゾンビ(削除されていないが停止中)
  ・第2フィールド
    W:スワップアウト(常駐ページなし)
  ・第3フィールド
    N:正のナイス値
START:開始時刻
TIME:CPU消費時間
COMMAND:実行コマンド


■ 関連記事
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

プロセスの状態を詳細に表示する

2010年5月31日

プロセスの状態を詳細表示させるにはpsコマンドに
オプション「-l」を付けて実行します。

[pakira@Tiger ~]$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 3127 3126 0 75 0 - 1370 wait pts/1 00:00:00 bash
0 R 500 3217 3127 0 77 0 - 1289 - pts/1 00:00:00 ps

■ 表示される情報

S:状態
  ・第1フィールド
    R:実行可能
    T:停止中かトレース中
    D:休眠中で割り込み不可
    S:休眠中
    Z:ゾンビ(削除されていないが停止中)
  ・第2フィールド
    W:スワップアウト(常駐ページなし)
  ・第3フィールド
    N:正のナイス値
UID:実行ユーザのユーザ番号
PID:プロセスごとに自動的に割り当てられる番号
PPID:親プロセスのプロセスID
PRI:プロセスの優先度
NI:プロセスのナイス値
SZ:仮想メモリイメージのサイズ
RSS:使用中の物理メモリ量
WCHAN:プロセス休眠時のカーネル関数
PAGEIN:主要なページフォルト数
TRS:常駐テキスト量
TTY:プロセスを実行している制御端末
TIME:CPU消費時間
CMD:実行コマンド
SWAP:スワップ・デバイスの量
SHARE:使用中の共有メモリ量

■ 関連記事
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

プロセスの状態を表示する

2010年5月31日

プロセスを表示するには、psコマンドを使用します。
psコマンドを実行すると、/proc以下の情報を基にプロセスの情報を表示します。

psコマンドをオプションなしで実行した場合、コマンドを実行した
ユーザのプロセス状態が表示されます。

[pakira@Tiger ~]$ whoami ←ユーザ名を表示します。
pakira
[pakira@Tiger ~]$ ps ←pakiraユーザの実行中のプロセスを表示します。
PID TTY TIME CMD
3127 pts/1 00:00:00 bash
3173 pts/1 00:00:00 ps
[pakira@Tiger ~]$ su - ←rootになります。
パスワード :    ←root用パスワードを入力します。(パスワードは表示されません)
[root@Tiger ~]# ps ←rootの実行中プロセスを表示します。
PID TTY TIME CMD
3174 pts/1 00:00:00 su
3175 pts/1 00:00:00 bash
3199 pts/1 00:00:00 ps
[root@Tiger ~]#

■ 表示される情報
PID:プロセスごとに自動的に割り当てられる番号
TTY:プロセスを実行している制御端末
TIME:CPU消費時間
CMD:実行コマンド

■ 関連記事
psコマンドの詳細はこちら
killコマンドの詳細はこちら
killallコマンドの詳細はこちら
すべてのプロセスを表示する
デーモンプロセスも含めて表示する
プロセスの状態を詳細に表示する
プロセスの状態を表示する
プロセスの親子関係を含めて表示する
プロセスをツリー状に表示する
プロセスをハングアップさせる
プロセスを強制終了する
プロセスをハングアップさせる
プロセスツリーをグラフィカルに表示する
ユーザ名を含めて実行プロセスを表示する
実行中のプロセスのみ表示する
実行中のプロセスを終了する
特定のプロセスの状態のみを表示する
特定コマンドのプロセスをすべて終了する

一定時間ごとに仮想メモリの統計情報を更新して表示する

2010年5月31日

システムの全体的な稼働状況を継続的に表示させたい場合には、
vmstatコマンドに引数として秒数を指定します。

指定した秒数ごとにシステムの統計情報が表示されます。
表示を中止する場合には、「Ctrl」+「c」キーを入力します。

[pakira@Tiger ~]$ vmstat 5 ←5秒ごとに表示する
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 650812 24972 286384 0 0 596 37 752 87 2 3 88 7 0
0 0 0 650812 24972 286412 0 0 0 0 698 22 0 0 100 0 0
0 0 0 650812 24980 286412 0 0 0 6 704 25 0 0 100 0 0
0 0 0 650812 24980 286412 0 0 0 0 701 22 0 0 100 0 0
0 0 0 650812 24980 286412 0 0 0 0 685 23 0 0 100 0 0
0 0 0 650812 24988 286412 0 0 0 2 700 24 0 0 100 0 0
0 0 0 650812 24988 286412 0 0 0 0 704 22 0 0 100 0 0
0 0 0 650812 24988 286412 0 0 0 0 699 23 0 0 100 0 0
0 0 0 650812 24988 286412 0 0 0 7 699 24 0 0 100 0 0
(「Ctrl」+「c」キーを入力して停止する)
[pakira@Tiger ~]$

vmstatコマンドの表示項目
・procs
   r  実行待ちプロセス数
   b  スリープ状態にあるプロセス数
   w  スワップアウトされているが、実行可能なプロセス数

・memory
   swpd:仮想メモリ総量(kB)
   free:空きメモリ(kB)
   buff:バッファ用メモリ(kB)
   cache:キャッシュ用メモリ(kB)

・swap
   si:ディスクからスワップインされているメモリ
   so:ディスクからスワップアウトされているメモリ

・io
   bi:ブロックデバイスに送られたブロック
   bo:ブロックデバイスから受け取ったブロック

・system
   in:1秒あたりの割り込み回数
   cs:1秒あたりのコンテキストスイッチの回数

・cpu
   us:CPUの総時間に対するユーザ時間のパーセンテージ
   sy:CPUの総時間に対するシステム時間のパーセンテージ
   id:CPUの総時間に対するアイドル時間のパーセンテージ
   wa:CPUの総時間に対するIO 待ち時間のパーセンテージ
   st:仮想マシンから盗まれた時間

vmstatコマンドの詳細はこちら

一定時間ごとにメモリ使用状況を更新して表示する

2010年5月29日

メモリを大量に消費するプロセスを実行した場合など、メモリの使用状況を
継続的にモニターしなければならいない場合、一定時間ごとにメモリの使用状況を
更新して表示することができます。

freeコマンドにオプション「-s」を付けて引数に更新時間を指定して実行します。
なお、表示を停止する場合には、「Ctrl」+「c」キーを入力して停止します。


[root@Tiger ~]# free -s5
total used free shared buffers cached
Mem: 1035140 385080 650060 0 24856 286260
-/+ buffers/cache: 73964 961176
Swap: 2097144 0 2097144

↓5秒経過

total used free shared buffers cached
Mem: 1035140 385080 650060 0 24856 286268
-/+ buffers/cache: 73956 961184
Swap: 2097144 0 2097144


↓5秒経過

total used free shared buffers cached
Mem: 1035140 385080 650060 0 24864 286260
-/+ buffers/cache: 73956 961184
Swap: 2097144 0 2097144

(「Ctrl」+「c」キーを入力して停止する)

[root@Tiger ~]#

freeコマンドの詳細はこちら

メモリの使用状況を表示する

2010年5月29日

メモリの使用状況を確認するには、freeコマンドを使用します。
オプションなし、または、-kオプションを付けて実行した場合には、
キロバイト単位での表示になり、-dオプションを付けて実行した場合には
バイト単位、-mオプションを付けて実行した場合にはメガバイト単位で
表示されます。

[pakira@Tiger ~]$ free
total used free shared buffers cached
Mem: 1035140 544736 490404 0 47868 401036
-/+ buffers/cache: 95832 939308
Swap: 2097144 0 2097144

■ freeコマンドの表示項目
total:全メモリ容量
used:使用中のメモリ容量
free:空きメモリ容量
shared:共有メモリ容量
buffers:カーネルが使用するディスクバッファ容量
cached:キャッシュメモリ容量

freeコマンドの詳細はこちら

メモリの情報を表示する

2010年5月29日

メモリに関する情報を取得するには、/proc/meminfoファイルを参照します。
このファイルはtopコマンド、freeコマンド、vmstatコマンドで表示される
メモリ情報として使用されます。

[pakira@Tiger ~]$ cat /proc/meminfo
MemTotal: 1035140 kB
MemFree: 648896 kB
Buffers: 26076 kB
Cached: 286904 kB
SwapCached: 0 kB
Active: 88932 kB
Inactive: 274256 kB
HighTotal: 131008 kB
HighFree: 256 kB
LowTotal: 904132 kB
LowFree: 648640 kB
SwapTotal: 2097144 kB
SwapFree: 2097144 kB
Dirty: 12 kB
Writeback: 0 kB
AnonPages: 50212 kB
Mapped: 19624 kB
Slab: 13892 kB
PageTables: 1644 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 2614712 kB
Committed_AS: 144988 kB
VmallocTotal: 114680 kB
VmallocUsed: 4980 kB
VmallocChunk: 109548 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 4096 kB

catコマンドの詳細はこちら
topコマンドの詳細はこちら
freeコマンドの詳細はこちら
vmstatコマンドの詳細はこちら

更新間隔を指定してCPUの負荷を表示する

2010年5月28日

topコマンドを実行すると、自動的に5秒ごとに情報が更新されますが、
自分で更新間隔を指定することも可能です。

更新間隔を自分で指定する場合は、topコマンドを実行する際、
オプションとして、「-d」を指定し、その後ろに更新間隔の秒数を
指定します。

■1秒間隔に更新
[pakira@Tiger ~]$ top -d1

■10秒間隔に更新
[pakira@Tiger ~]$ top -d10

CPU負荷を表示する(実行プロセスを表示する)

2010年5月28日

自分が実行したプロセスの処理が遅い場合、システムがどんな他のプロセスによって
負荷が掛かっているのかを調べたい場合にはtopコマンドを使用して、CPUの負荷情報を
取得します。

[pakira@Tiger ~]$ top
top - 13:34:36 up 8 min, 1 user, load average: 0.01, 0.21, 0.14
Tasks: 83 total, 1 running, 82 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.9%us, 3.3%sy, 0.0%ni, 86.7%id, 7.7%wa, 0.0%hi, 0.4%si, 0.0%st
Mem: 1035140k total, 385192k used, 649948k free, 25008k buffers
Swap: 2097144k total, 0k used, 2097144k free, 286872k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 18 0 2072 624 532 S 0.0 0.1 0:00.98 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/0
6 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
7 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
10 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
11 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
175 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0
178 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
180 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
243 root 22 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
244 root 15 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
245 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0
246 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
464 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
493 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 mpt_poll_0
494 root 19 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
497 root 19 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
498 root 19 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux
503 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kstriped
512 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 ksnapd
523 root 17 -5 0 0 0 S 0.0 0.0 0:00.17 kjournald
549 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kauditd
582 root 19 -4 2472 936 388 S 0.0 0.1 0:00.69 udevd
1323 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 kgameportd
1998 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kmpathd/0

これらの情報は初期設定で5秒ごとに自動更新されますが、
「スペースキー」を押すことですぐに更新することができます。
表示を中止する場合は「Ctrl」+「c」キーを入力します。

■ topコマンドで表示される情報
------------------------------------
PID プロセス番号
------------------------------------
USER プロセス実行ユーザ
------------------------------------
PR プロセスの優先順位
------------------------------------
NI プロセスのナイス値(実行優先度)
------------------------------------
VIRT スワップアウトしたメモリ使用量を加えたメモリ量
------------------------------------
RES プロセスの物理メモリ使用量の総数(単位は「キロバイト」)
------------------------------------
SHR プロセスの共有メモリ使用量
------------------------------------
S プロセスのステータス
S 停止状態
D 継続的停止状態
R 稼動状態
Z ゾンビ状態
T 停止またはトレース状態
< ナイス値が−で実行状態
LIB ライブラリページのサイズ
LC 最後に利用されたCPU
N ナイス値が+で実行状態
W スワップアウト状態
------------------------------------
%CPU CPU占有率
------------------------------------
%MEM メモリ占有率
------------------------------------
TIME+ プロセス開始からの経過時間(単位は「秒」)
------------------------------------
COMMAND 実行コマンド名
------------------------------------

topコマンドの詳細はこちら

CPUの情報を表示する

2010年5月28日

ハードウェアに搭載されているCPU情報を表示する場合、
「/proc/cpuinfo」ファイルを参照します。
これらの情報はtopコマンドなどのCPU負荷を知るための
情報として使用されます。

[pakira@Tiger ~]$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz
stepping : 10
cpu MHz : 3003.000
cache size : 6144 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss nx constant_tsc up pni
bogomips : 6006.00

上記ではcatコマンドを使用して情報を参照しましたが、
他のmoreやlessコマンドでも参照できます。

[pakira@Tiger ~]$ more /proc/cpuinfo
[pakira@Tiger ~]$ less /proc/cpuinfo

catコマンドの詳細はこちら
moreコマンドの詳細はこちら
lessコマンドの詳細はこちら
topコマンドの詳細はこちら

プロンプトの表示を変更するには

2010年5月 1日

ユーザがLinuxにログインすると、シェルは「$」や「#」などの
プロンプトを表示して、ユーザーからの指示を待ちます。

ログインして↓のように表示されるのがプロンプトです。

[pakira@Tiger ~]$

プロンプトはシェルによって表示が若干異なりますが、bashのプロンプト表示は、
「$」が一般ユーザー、「#」がスーパーユーザ(root)として表示します。

また、「$」や「#」以外にもホスト名やユーザ名、カレントディレクトリなども表示でき、
これらの設定はPS1という環境変数によって設定さています。

この環境変数PS1の値を変更すれば、オリジナルのプロンプトを
表示させることができ、その設定にはexportコマンドを使用します。

設定値には、以下の様な特殊な文字が設定出来ます。

\d : 日付
\h : ホスト名(ドメイン名なし)
\H : ホスト名(ドメイン名あり)
\s : シェルの名前
\t : 時間(24時間制 HH:MM:SS形式)
\T : 時間(12時間制 HH:MM:SS形式)
\@ : 時間(12時間制 HH:MM AM/PM形式)
\u : ユーザ名
\w : カレントディレクトリ
\W : カレントディレクトリのベース名
\! : コマンドの履歴番号を表示
\# : コマンドのコマンド番号
\$ : rootなら#、それ以外のユーザなら$を表示
\\ : バックスラッシュ

※カレントディレクトリとは、現在作業中のディレクトリを指します。
 カレント(current)とは「現在の」という意味です。

※「\」は使っているコンピュータによって「\」(バックスラッシュ)で
 表示されるものがあります。それは表示に使うフォントで割り当てられている
 文字が違うだけでデータ的には同じになります。

 Linuxでキーボードから¥記号を入力するとバックスラッシュになる

※Linuxは英字の大文字、小文字を区別します。
 つまり、hとHは別文字として扱われるので注意してください。


▼ 現在の環境変数PS1の値を表示する
----------------------------------------------------------------------
[pakira@Tiger ~]$ echo "$PS1"
[\u@\h \W]\$
↑ユーザ名、ホスト名(ドメイン名なし)、
 カレントディレクトリのベース名が設定されています。
----------------------------------------------------------------------


▼ シェルプロンプトの表示形式を変更する
----------------------------------------------------------------------
[pakira@Tiger ~]$ export PS1="[\u@\t \w]\$ " ←最後は半角スペースを入れる
[pakira@03:48:13 ~]$
↑ユーザ名、時間(24時間制 HH:MM:SS形式)、
 カレントディレクトリのベース名が設定されました。
----------------------------------------------------------------------

ただし、これらの設定はログインし直すと元に戻ってしまうので、
設定を再ログインしても反映させるには、ユーザのホームディレクトリにある
「.bashrc」ファイルに設定を記述する必要があります。


▼ 再ログインしてもシェルプロンプトの表示形式を保持する
----------------------------------------------------------------------
[pakira@03:50:26 ~]$ pwd
/home/pakira     ←ユーザのホームディレクトリであることを確認する
[pakira@03:50:26 ~]$ ls -la ←「.」で始まる隠しファイルを表示するには
                オプション「a」を付けてlsコマンドを実行する
合計 68
drwx------ 3 pakira pakira 4096 4月 29 03:50 .
drwxr-xr-x 4 root root 4096 1月 28 21:23 ..
-rw------- 1 pakira pakira 67 4月 26 17:10 .bash_history
-rw-r--r-- 1 pakira pakira 33 1月 8 11:43 .bash_logout
-rw-r--r-- 1 pakira pakira 176 1月 8 11:43 .bash_profile
-rw-r--r-- 1 pakira pakira 124 1月 8 11:43 .bashrc  ←編集するファイル
drwxr-xr-x 4 pakira pakira 4096 1月 8 11:43 .mozilla
-rw------- 1 pakira pakira 629 4月 29 03:50 .viminfo
-rw-r--r-- 1 pakira pakira 658 1月 8 11:43 .zshrc

[pakira@03:53:51 ~]$ vi .bashrc ←エディタで編集します。

export PS1="[\u@\t \w]\$ " ←「.bashrc」ファイルに追記する

編集を保存すると、再ログインしてもシェルプロンプトの表示形式は
そのままに反映されます。

一時的にスワップ領域を増やすには

2010年3月 6日

Linuxのハードディスクは通常パーティションという区画に分割して利用します。
Linuxをインストールする場合、最低下記の2つのパーティションが必要になります。

ルートパーティション
スワップ領域

実際にはパーティションはもっと多くの種類に分割されるのですが、
今回は上記にあるスワップ領域の操作についてご紹介します。


スワップ領域とは

スワップ領域とは、物理メモリが不足した場合にディスクの一部を
一時的にメモリとして使用できるようにする機能です。
通常割り当てるスワップ領域のサイズの目安は、搭載されている
物理メモリの1〜2倍になります。
(物理メモリを1G搭載してる場合は1G〜2Gが目安になります。)

ですが、スワップ領域のサイズは必ず物理メモリ以上に必要というわけではありません。
スワップ領域が必要となるのは、先にも述べたように物理メモリが不足した場合ですので、
十分な物理メモリを搭載していればスワップ領域を使用しないようにすることも可能です。

続きを読む "一時的にスワップ領域を増やすには"

デフォルトゲートウェイ(ルータ)を設定する

2010年2月10日

Linuxはインストール時にデフォルトゲートウェイ(ルータ)の設定を行いますが、
ネットワークの構成変更に伴い、デフォルトゲートウェイを変更する必要が
生じる場合があります。

また、インストール時に設定したデフォルトゲートウェイが
実は誤りだった場合も正しいものに変更する必要があります。

私が主催してる「Linuxサーバー構築講座」でも、
希に誤った設定をして、正しいものに修正するには
どうすれば良いのかという質問を頂く事があります。

Linuxサーバー構築講座
https://www.linuxmaster.jp/2009/12/post-4.html

Linuxに触れたばかりの初心者の方には、まずは慣れてもらう事が
先決であるため、インストールからやり直してもらうことにしていますが、
ある程度慣れてきた時には、今日紹介する方法を使用して
デフォルトゲートウェイの設定すると良いでしょう。

続きを読む "デフォルトゲートウェイ(ルータ)を設定する"

pingによる死活確認

2010年2月 9日

ネットワークに関するトラブルが発生した時、まず通信したい
相手の機器との通信経路が有効なのかを確認する必要があります。

相手機器(ホスト)との通信が可能であるかどうかを確認するコマンドは
pingコマンドになり、このpingコマンドはICMP(Internet Control Message Protocol)
というプロトコルを使用しています。

このICMPは要求パケットを相手ホストへ向けて送ると、相手ホストが正常に
受信した場合に、応答パケットを返す仕組みになっています。
この仕組みを利用してpingコマンドを相手ホストにICMPを送り、
死活確認を行います。

続きを読む "pingによる死活確認"

Linuxのftpコマンドの使い方|接続からアップロード・ダウンロードまで

2010年2月 9日
「FTPサーバーからファイルを落としてきてと言われたけど、コマンドを忘れてしまった...」
「FTPコマンドで複数ファイルを一気にダウンロード・アップロードしたい」
ファイル転送の現場では、いまだに従来のFTPコマンドを使用する場面に直面することがあります。

この記事では、Linuxにおける ftp コマンドの基本的な使い方を体系的に解説します。サーバーへの接続から、単一・複数ファイルのダウンロード(get/mget)とアップロード(put/mput)の手順まで、現場ですぐに使える内容をまとめました。

1. FTPサーバーに接続・ログインする

まずは、対象のFTPサーバーに接続します。

$ ftp 192.168.1.100

※IPアドレスまたはホスト名を指定します。

接続が成功すると、ユーザー名とパスワードの入力が求められます。

Name (192.168.1.100:root): user_name ←ユーザー名を入力 331 Please specify the password. Password: ←パスワードを入力(画面には表示されません) 230 Login successful. ftp>

ログインに成功すると、プロンプトが ftp> に変わり、FTPコマンドの受付状態になります。

続きを読む "Linuxのftpコマンドの使い方|接続からアップロード・ダウンロードまで"

MySQLのrootパスワードを忘れた場合の対処について

2009年6月12日

MySQLはオープンソースのデータベースソフトになります。
無料で利用できるデータベースソフトとしてPostgreSQLがありますが、
それと人気を二分するデータベースソフトです。

人気の理由は高性能且つ高速で、しかも操作が比較的簡単な上、
Movable TypeやXoopsなど多くのウェブサイト構築ソフトウェアが
サポートしているためです。またMySQLを利用する事でLAMP環境が
構築出来ます。

※LAMPとはLinux、Apache、 MySQL、 PHPの略称

今回はそのMySQL専用のrootパスワードを忘れてしまった場合の
対処方法をご紹介します。

続きを読む "MySQLのrootパスワードを忘れた場合の対処について"

FTPコマンドでファイルの途中からダウンロードする

2009年5月15日

ファイルのダウンロード途中で、何らかの原因によりダウンロードが
中断してしまった場合、サイズが大きいファイルをダウンロードしていたら
最初からやり直すのは、時間のロスが大きくなってしまいます。

そんな時、中断したダウンロードの途中から再開するコマンドとして
FTPコマンドのregetコマンドを使用します。

続きを読む "FTPコマンドでファイルの途中からダウンロードする"

不要サービスを停止するには

2009年4月10日

不要サービスを停止するには

実はLinuxは、インストール直後には使用しない
不要なサービス(プログラム)が多く起動しています。

それらの使わないサービスは起動しているだけで
サーバーのリソースを無駄に消費しますし、なにより
起動しているだけで、セキュリティ対策上好ましくありません。

サービスを停止するコマンドにはserviceとchkconfigコマンドが
ありますが、serviceコマンドはサーバーを再起動した際、
設定した内容が取り消されて、停止したサービスが起動して
しまいます。

そこで今回は、サーバーを再起動してもサービスが
停止したままになるchkconfigコマンドでサービスを停止する
方法をご紹介します。


文法

chkconfig (サービス名) off

続きを読む "不要サービスを停止するには"

IPアドレスからドメイン名を調べるには

2009年4月10日

IPアドレスからドメイン名を調べるには

ドメイン名からIPアドレスを得る事を正引き名前解決と言いますが、
今回はその逆、IPアドレスからドメイン名を調べる方法になります。

これは正引き名前解決に対して、逆引き名前解決と言いますので
覚えておいてください。

この処理はDNSサーバーに対してクラインとから問い合わせを行ない
それに対する返答を受け取る事で結果が表示されます。
基本動作としては「正引き名前解決」と同じ処理になりますが、
問い合わせに使う情報、表示される結果が逆になります。

IPアドレスからドメイン名への対応はPTRレコードと呼ばれ、
このレコード上では、192.168.1.1というIPアドレスは、
1.1.168.192.in-addr.arpa.(IPアドレスの逆順.in-addr.arpa.)
という形式で記述されます。

これはドメイン名同様にIPアドレスも階層構造を持った名前として
認識し、正引き名前解決と同じプロセスで逆引き名前解決が行なわれる
ようにするためです。

ちなみに名前解決はhostコマンド、nslookupコマンドを使用します。
hostコマンドはnslookupコマンドに代わるものとして開発され、
現在においては、hostコマンドを使用する事が推奨されています。
(正引き名前解決に使用したdigコマンドと同じ扱いですね。)


文法

host IPアドレス
nslookup -type=ptr IPアドレス

続きを読む "IPアドレスからドメイン名を調べるには"

ドメイン名からメールサーバーを調べるには

2009年4月10日

ドメイン名からメールサーバーを調べるには

あるドメイン内でメールサーバーとして稼働しているホストを調べるには、
そのドメインに設定されたMX(Mail Exchanger)レコードを調べると良いでしょう。

MXレコードとは前回ちょっと紹介したAレコードと同様、ドメイン情報を
構成する要素のひとつになります。

例えば、hogehoge.comというドメインの中でメールサーバーがmail1.hogehoge.com
というホスト名だった場合、pakira@hogehoge.com のようなメールアドレスに
メールが配送されるためには、このメールサーバーがhogehoge.comドメインの
MXレコードに指定されている必要があります。

MXレコードは、ドメイン名とそのドメインのメールサーバーのホストの
対応関係を記述したものになります。自分宛のメールが届かないような時は、
ドメインのMXレコードに正しくメールサーバーが指定されているか確認を
する必要があります。


文法

dig (調べるレコードの種類) (ドメイン名)
nslookup -type=(調べるレコードの種類) ドメイン名

続きを読む "ドメイン名からメールサーバーを調べるには"

ホスト名からIPアドレスを調べるには

2009年3月11日

ホスト名からIPアドレスを調べるには

ホスト名からIPアドレスを調べることを「正引き名前解決」と言います。
この処理はネームサーバー(DNS)に対して、問い合わせをすることで、
IPアドレス情報を受け取ることができます。

ホスト名からIPアドレスへの対応をA(address)レコードと呼ばれています。
また、DNSサーバーに名前解決の問い合わせを行なうコマンドは、digとnslookupが
あり、これらのコマンドは、問い合わせ先のDNSサーバーが指定されない場合、
/etc/resolv.confに記述されているDNSサーバーを利用して名前解決を試みます。

この/etc/resolv.confに設定されるDNSサーバーはLinuxのインストールの際に
入力したDNSサーバーが設定されています。


文法

dig ドメイン名
nslookup ドメイン名

続きを読む "ホスト名からIPアドレスを調べるには"

ポートを使用しているプロセスを確認する

2009年3月 5日

ポートを使用しているプロセスを確認する

今回はポートを使用しているプロセスを確認する方法をご紹介します。

Linux上でポートが開いている場合、そのポートを使用しているプロセスを
確認するのもサーバー管理者として重要な仕事です。

今日の内容を理解することで、不要プログラムが実行されてないか、不正な
バックドアが仕掛けられてないか等を調べ、Linuxのセキュリティ状況を確認する
ことができるようになりますので、ぜひあなた自身で実行してみて結果の
確認をしてくださいね。

lsofコマンドはLinuxが使用してるプロセス名や実行ユーザ名を表示するコマンドです。
ポートの利用情報のみを確認したい場合は、オプション「-i」を付けて実行します。

また、lsofコマンドで表示できるのは、このコマンドを実行するユーザーに対して
読み取り権限が設定されるファイルに限ります。
つまり、ポートなどの利用情報すべてを確認するためには、rootユーザーでlsof
コマンドを実行しなければなりません。

このlsofコマンドを実行する一番の目的は、稼働中のプロセスを確認することで
不要プログラムが実行されてないか、不正なバックドアが仕掛けられてないかを調べ、
Linuxのセキュリティ状況を確認することにあります。

文法
lsof (オプション)

オプション
-i 利用されているポートを表示する

続きを読む "ポートを使用しているプロセスを確認する"

Linuxのポート開放を確認するコマンド|ss・lsofの使い方

2009年2月22日
「Linuxで不要なポートが開いていないか確認したい」
「Webサーバーを立ち上げたのにアクセスできない」
・・・サーバー構築やセキュリティ監査の現場では、ポートの開放状況の確認が必須の作業です。

この記事では、Linuxで現在開いているポート(接続待ちのポート)を確認するためのコマンドを体系的に解説します。現代の主流である ss コマンドや、プロセスを特定する lsof コマンドの実践的な使い方から、ファイアウォールの確認手順までまとめました。

ポートとは?IPアドレスとの違い

ポートとは、ネットワーク通信において「どのプログラムと通信するか」を識別するための出入り口(扉)の番号です。IPアドレスを「建物の住所」に例えるなら、ポート番号は「部屋番号(または窓口)」に相当します。

Webサイト(HTTP)なら80番、SSHなら22番というように、サービスごとに使うポート番号(ウェルノウンポート)が決められています。サーバー管理においては「意図したポートだけが正しく開いているか」を常に意識する必要があります。

現場でよく使うポート番号の早見表

ポート番号 プロトコル 用途
22 TCP SSH(リモートログイン)
25 TCP SMTP(メール送信)
53 TCP/UDP DNS(名前解決)
80 TCP HTTP(Web)
123 UDP NTP(時刻同期)
443 TCP HTTPS(暗号化Web)
3306 TCP MySQL/MariaDB

続きを読む "Linuxのポート開放を確認するコマンド|ss・lsofの使い方"

Linuxのネットワーク環境を確認するためには

2009年2月18日

Linuxのネットワーク環境を確認するためには

Linuxサーバーを構築する上で、インストールの次にネックになるのが
ネットワーク設定になります。
Linuxのインストールは出来たけど、ネットワークに繋がらないという
エラーに悩まされる方が多いようです。

もし、あなたがネットワークの接続で悩まされたら、今日紹介する
テクニックでネットワーク環境の確認を行なってみてください。

使っているルータやプロバイダー環境の違いで細かい設定については
個別でアドバイスするしかありませんが、現在のLinuxに設定されている
ネットワーク環境については、Linuxすべてに共通する事ですので
このようなメールマガジンでお答えすることが出来ます。


Linuxのネットワーク環境を確認するためには、
下記の5カ所について確認を行なってください。


1.[root@ leopard root]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
2.[root@ leopard root]# cat /etc/resolv.conf
3.[root@ leopard root]# cat /etc/sysconfig/network
4.[root@ leopard root]# netstat -r
5.[root@ leopard root]# ping ルータのIPアドレス
 
※pingコマンドを停止するには「Ctrl + c」キーを入力してください。

続きを読む "Linuxのネットワーク環境を確認するためには"

MIMEでエンコードされたテキストを読めるように変換する

2009年1月 8日

MIMEとは電子メールを拡張するための仕様ですが、その中でメールのSubjectに
日本語を使えるようにする拡張があります。
MIMEで記述された(エンコード)メールは、テキストで見ると意味不明なASCII文字の羅列ですが、
このMIMEをコード変換(デコード)すると通常の文字としてみることが出来ます。

-m MIMEエンコード文字をデコードする
-M 文字列をMIMEエンコードする

続きを読む "MIMEでエンコードされたテキストを読めるように変換する"

テキストを他のOSとの間でやりとりできるように変換する

2009年1月 8日

テキストは使用しているOS(WindowsやMac)によって、文字コードや
改行コードが異なっている為、それらのOS間でテキストをやりとりすると
文字化けが発生してしまいます。
このような場合には、nkfコマンド使用して正しく読み込めるコードへの
変換を行います。

-s シフトJISコードで表示する
-e EUCコードで表示する
-j JISコードで表示する
-S 入力データをシフトJISコードとして扱う
-E 入力データをEUCコードとして扱う
-J 入力データをJISコードとして扱う

続きを読む "テキストを他のOSとの間でやりとりできるように変換する"

viで文字に色をつけるには

2009年1月 7日

viで文字に色を付けるには編集モードで「:syntax enable」と入力します。
ただし一部の端末ではカラー表示を認識できず、白黒表示なる場合があります。
その場合は、ホームディレクトリに.vimrcファイルを作成し、そのファイルに「:syntax enable
と記述してください。

続きを読む "viで文字に色をつけるには"

viコマンドを取り消す

2009年1月 7日

viの編集モードで実行したコマンドをやり直すにはアンドゥコマンドを実行します。
アンドゥコマンドを実行するには編集モードでuコマンドを実行します。

続きを読む "viコマンドを取り消す"

viのコマンドを繰り返し実行する

2009年1月 7日

viの編集モードコマンドには、「カウント」という機能があり、あらかじめ実行回数を指定することで、その回数繰り返し実行することが出来ます。

基本的に編集モードで利用できるviコマンドは、すべてカウントで繰り返し実行することできます。

続きを読む "viのコマンドを繰り返し実行する"

viエディタで文字をカットする

2008年7月25日

viエディタで文字をカットするには、単語、行単位でカットするにはdコマンド、文字単位でカットするにはxコマンドを使用します。

dw 1単語カットする
dd 1行カットする
x 1文字カットする

続きを読む "viエディタで文字をカットする"

viエディタで文字をコピーする

2008年7月24日

viエディタでは文字をコピーすることが出来ます。これはviエディタにコピーするためのバッファがあり、このバッファに文字をコピーすることを「ヤンク」(yank)と言います。
ヤンクを行うには、編集モードでコピーしたい文字列にカーソルを合わせて次のコマンドを実行します。

yy カーソル行をコピーする
yw カーソル位置から1単語をコピーする

続きを読む "viエディタで文字をコピーする"

vi(vim)で文字列を検索・置換する方法|ハイライトの消し方や次への移動も

2008年7月24日
「膨大なログファイルや設定ファイルを開いたものの、目当ての行が全く見つからない...」
「検索して黄色くハイライトされた色を消す方法が分からない」
Linuxを触り始めたばかりの方が、vi(vim)エディタで必ず直面する悩みです。

この記事では、Linuxの標準エディタであるvi(vim)で文字列を検索・置換する実践的なコマンドを解説します。基本的な検索から、次の候補への移動、ハイライトの消し方まで、現場のエンジニアが息をするように使っている必須の操作手順をまとめました。

1. viエディタでの基本的な検索コマンド(/ と ?)

viエディタで検索を行うには、必ず「コマンドモード(文字入力ができない状態)」になっている必要があります。もし文字入力中(挿入モード)であれば、一度 Esc キーを押してください。

下方向(ファイルの終わりに向かって)検索する

現在のカーソル位置から下に向かって検索するには、/(スラッシュ) を入力してから検索したい文字列を打ち込み、Enter を押します。

/error

これで、ファイル内にある「error」という文字列がハイライトされ、カーソルが移動します。

上方向(ファイルの先頭に向かって)検索する

逆に、現在のカーソル位置から上に向かって検索したい場合は、?(ハテナ) を使います。ログファイルの末尾から過去に遡ってエラーを探す際などによく使います。

?warning

続きを読む "vi(vim)で文字列を検索・置換する方法|ハイライトの消し方や次への移動も"

ハードディスクの使用状況を調べるには

2008年7月22日

Linuxでハードディスクの使用状況を調べるにはdfコマンドを使用します。ハードディスクはファイルシステムの中ではデバイスファイルと呼ばれる特殊ファイルとして扱われています。(Linuxは管理上すべてのデバイスをファイルとして扱います。)

IDEドライブの場合は/dev/hda、/dev/hdbと表記されます。

続きを読む "ハードディスクの使用状況を調べるには"

tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧

2008年7月22日
「ダウンロードしたソースコードが .tar.bz2 で、解凍の仕方が分からない」
「tar.gz と tar.bz2、どちらで圧縮すればいいの?」
Linuxでソフトウェアのインストールやバックアップを行う際、避けては通れないのがアーカイブファイルの扱いです。

この記事では、tar.bz2 ファイルの解凍(展開)と圧縮の方法を解説します。基本的なコマンドはもちろん、tar.gz との違いや、中身の確認方法、特定ファイルだけの取り出し、トラブル対処まで、実務で困らない知識をまとめました。

1. tar.bz2 と tar.gz の違い

どちらも「tarでまとめてから圧縮する」という仕組みは同じですが、使っている圧縮アルゴリズムが異なります。

項目 tar.gz(gzip) tar.bz2(bzip2)
圧縮率 標準的 gzipより高い(ファイルが小さくなる)
圧縮・解凍速度 速い gzipより遅い
tarオプション tar zxvf(z を指定) tar jxvf(j を指定)
拡張子 .tar.gz / .tgz .tar.bz2 / .tbz2
実務での使い分けの目安として、日常的なバックアップなど速度を優先する場面では tar.gz、配布用のソースコードなどサイズを小さくしたい場面では tar.bz2 が選ばれる傾向にあります。

続きを読む "tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧"

tar.gz形式のファイルを解凍、展開するには

2008年7月18日

tarコマンドでまとめたアーカイブファイルをGZIP形式で圧縮してあるファイル(拡張子tar.gzまたはtgz)を一度に解凍して展開するには、tarコマンドにzオプションを付けて実行します。

続きを読む "tar.gz形式のファイルを解凍、展開するには"

BZIP2形式でファイルを圧縮・解凍するには

2008年7月18日

LinuxやUNIXで多く利用されている圧縮形式はGZIPですが、さらに小さいサイズに圧縮したい場合にはBZIP2形式を利用します。

BZIP形式でファイルを圧縮するにはbzip2コマンドを使用します。またBZIP2形式のファイルを解凍するにはbunzip2コマンドを使用します。

続きを読む "BZIP2形式でファイルを圧縮・解凍するには"

GZIP形式の圧縮ファイルを解凍する

2008年6月30日

GZIP形式で圧縮されたファイルは、そのままでは使用できません。
使用するにはこのファイルを解凍して元に戻す必要があります。
元に戻すには、gunzipコマンドを使用します。

続きを読む "GZIP形式の圧縮ファイルを解凍する"

ファイルをGZIP形式で圧縮する

2008年6月30日

GZIPはLinuxでファイルを圧縮する際、もっとも使用される圧縮方法のひとつです。

普通tarコマンドで1つにまとめた(アーカイブした)ファイルを圧縮してファイルサイズを
小さくするのに使用されます。

続きを読む "ファイルをGZIP形式で圧縮する"

lsコマンドの並び替え(ソート)方法|時間順・サイズ順など現場の必須オプション

2008年6月24日
「ログファイルが多すぎて、今日更新されたファイルがどれか分からない」
「ディスク容量を圧迫している巨大なファイルを探し出したい」
Linuxサーバーの運用保守で、毎日必ずと言っていいほど直面するシチュエーションです。

この記事では、ls コマンドを使ってファイルやディレクトリの一覧を並び替える(ソートする)方法を解説します。
単なるアルファベット順ではなく、現場のエンジニアが息をするように使っている「時間順」や「サイズ順」など、実務直結のオプションをまとめました。

1. 更新日時の「時間順」にソートする(-t / -rt)

障害調査などで最新のエラーログを確認する際、最もよく使われるのが時間順のソートです。

新しい順(降順)に並べる: -t

-t(time)オプションを付けると、タイムスタンプ(更新日時)が新しいファイルが上に、古いファイルが下に並びます。通常は詳細表示の -l と組み合わせて -lt として使います。

# ls -lt -rw-r--r-- 1 root root 1024 2月 24 10:00 access.log ←一番新しい -rw-r--r-- 1 root root 2048 2月 23 15:30 error.log -rw-r--r-- 1 root root 4096 2月 22 09:15 system.log ←一番古い

【現場の鉄則】古い順に並べて最新を一番下に出す: -rt

-t オプションには弱点があります。ファイルが数百個ある場合、一番新しいファイルが画面の上に流れていってしまい、いちいちスクロールして戻らなければなりません。

そこで、逆順にする -r(reverse) オプションを組み合わせます。

# ls -lrt -rw-r--r-- 1 root root 4096 2月 22 09:15 system.log ←一番古い -rw-r--r-- 1 root root 2048 2月 23 15:30 error.log -rw-r--r-- 1 root root 1024 2月 24 10:00 access.log ←一番新しい(画面の一番下)

ls -lrt と打つことで、プロンプトのすぐ上に最新ファイルが表示されるため、現場ではこちらを使うのが圧倒的な定番です。

隠しファイル(ドットファイル)も含めてソートする: -a との組み合わせ

.bashrc.ssh などの隠しファイル(ドットファイル)も対象に含めたい場合は、-a(all)を追加します。
隠しファイルも含めて更新日時の古い順に並べる場合は下記の通り実行します。

# ls -lrta

続きを読む "lsコマンドの並び替え(ソート)方法|時間順・サイズ順など現場の必須オプション"

ファイルの変更を直ちにディスクに反映させる

2008年6月24日

ユーザーによるファイルへの変更と実際のハードディスクなどnメディアへの書き込みは時間差があることがあります。これはメモリ上に変更内容を一時保存し、複数の書き込み処理を一括で行うよう仕組みをファイルシステムが備えているからです。

このような場合にはsyncコマンドを使用すれば、直ちに変更内容をハードディスクなどのメディアに反映することが出来ます。shutdownコマンドなどでシステム終了する場合には自動的にメモリバッファと同期をとるようになっています。

しかしそれ以外でシステムを停止する場合、処理中のデータがハードディスクに書き込まれず、データが消滅することもありえます。そのようなときにsyncコマンドを事前に実行しておけば安全です。

続きを読む "ファイルの変更を直ちにディスクに反映させる"

24時間以内に修正されたファイルを検索する

2008年3月 6日

findコマンドはファイルの作成日、更新日で検索する-mtimeオプションがあります。
このオプションを使用することで24時間以内、何日前に更新されたファイルを検索することが出来ます。

mtimeの後ろに数字で指定するとき、+を指定すると実行日より前に修正されたファイルを検索し、-を指定すると実行日よりあとに修正されたファイルを検索できます。

続きを読む "24時間以内に修正されたファイルを検索する"

ファイルを文字列検索するには

2008年3月 5日

Linuxシステム内に存在するファイルを検索するにはfindコマンドを使用します。findコマンドは次の文法を用いることで使用できます。

find (ディレクトリ名) (オプション) (ファイル名)

引数にそれぞれの値を設定し、検索を行います。
ディレクトリ名には、ファイル検索を行う基点となるディレクトリ名を指定します。findコマンドは指定されたディレクトリ以下、すべてのサブディレクトリを検索します。(権限で参照できないディレクトリを検索した場合エラーになります。)

オプションはどんなファイルを検索するかを指定できます。たとえば、ディレクトリのみを検索したり、ある所有者のファイルのみを検索できます。

ファイル名は、検索したファイル名を指定します。

続きを読む "ファイルを文字列検索するには"

確認しながらファイルを削除する

2008年3月 5日

Linuxのファイルの削除は、rmコマンドを使用しますが、デフォルト(初期設定)では削除して良いか確認をしません。(ディストリビューションや権限によって確認するものもあります)

Linuxは一度誤って削除したファイルを元に戻すことができないので、これを防ぐには、rmコマンドにオプション-iを付けて実行を行います。

続きを読む "確認しながらファイルを削除する"

他のユーザにファイルを見せないようにする

2008年3月 5日

Linuxでは、他のユーザにファイルを見せないようにすることができます。それを行うにはchmodコマンドを使用してファイルの権限を変更します。ここでいう他のユーザとは、ファイルの所有者グループに所属してるユーザと、それ以外のユーザになります。

続きを読む "他のユーザにファイルを見せないようにする"

ファイルの内容を8進数や16進数で表示するには

2008年3月 4日

pgコマンドやcatコマンドで内容を表示できるファイルでも、実際には文字コードにしたがって記述されたバイナリファイルです。8進数でファイルを表示するにはodコマンドを使用します。また、16進数で表示するにはhexdumpコマンドを使用します。

続きを読む "ファイルの内容を8進数や16進数で表示するには"

空ファイルを作成するには

2008年2月20日

空ファイルを作成するには、touchコマンドを使用します。touchコマンドはファイルのタイプスタンプを変更するコマンドですが、引数で存在しないファイルを指定した場合は、0バイトのファイルを作成します。

続きを読む "空ファイルを作成するには"

ファイルの日付を変更する(タイムスタンプ変更)

2008年2月 6日

Linuxのファイルは修正日時を記録しているタイムスタンプがあります。この日時を変更するにはtouchコマンドにオプション-tを付けて実行します。

日付のフォーマットは「MMDDhhmm」で指定します。

MM → 月
DD → 日
hh → 時間
mm → 分

続きを読む "ファイルの日付を変更する(タイムスタンプ変更)"

ファイルの内容を行番号付きで表示する

2008年2月 6日

ファイルの内容を表示するにはcatコマンドをしようしますが、オプションなしで実行した場合、単に内容が表示されるだけです。行番号を付けてファイル内容を表示するには、catコマンドにオプション-nを付けて実行します。

ファイルの空行に行番号を付けたくない場合は、オプション-bを付けます。

続きを読む "ファイルの内容を行番号付きで表示する"

ファイルの種類を調べる

2008年2月 6日

Linuxはファイルの区別を拡張子で行わないので、そのファイルが一体どのようなファイルなのかはファイル名、拡張子からは判断できません。Linuxのファイルの種類を調べるには、fileコマンドを使用します。

構文としては「file ファイル名」と実行します。

続きを読む "ファイルの種類を調べる"

ファイル内の文字数、行数を確認する

2008年2月 5日

ファイル内の文字数や行数を調べるときには、wcコマンドを使用します。文字数を確認する場合はオプションとして-cを使用し、行数を調べるときには-lを使用します。

wcコマンドの実行方法として、引数に調査したいファイル名を指定します。

続きを読む "ファイル内の文字数、行数を確認する"

ディレクトリの使用状況を調べる

2008年2月 5日

Linuxのディレクトリにどのくらいのファイルが保存されているのか、ディレクトリの使用状況を調べるにはduコマンドを使用します。

duコマンドはディレクトリが使用している容量をキロバイトで表示しますが、ディレクトリ自体もファイルとして扱われるので、多少の容量を消費しています。

続きを読む "ディレクトリの使用状況を調べる"

ディレクトリを削除する(ディレクトリ内もまとめて削除)

2008年2月 5日

ディレクトリの削除には通常rmdirコマンドを使用します。しかしディレクトリ内にファイルが含まれている場合、rmdirコマンドでは削除できません。

そこでディレクトリ内のファイルもまとめて削除するにはrmコマンドにオプション-rを指定して実行します。

続きを読む "ディレクトリを削除する(ディレクトリ内もまとめて削除)"

ファイルを誰でも書き込めるが、所有者しかファイルを削除できないディレクトリを作成する(スティッキービット)

2008年2月 4日

複数のユーザー間でファイルを共有し、編集できるようにファイルに書き込み権限を設定すると、場合によっては、他のユーザーにそのファイルを削除されてしまう場合があります。

このような間違いを防ぐためにLinuxにはスティッキービットという仕組みがあります。
これを使用してディレクトリにスティッキービットを設定すると、設定されたディレクトリ内では、ファイルに書き込み権限が設定されていて所有者以外ふぃあるの削除は出来なくなります。

スティッキービットの設定は、chmodコマンドにa+tオプションを指定して実行します。
また、/tmpディレクトリは最初からスティッキービットが設定されており、root以外の権限ではファイルを削除できなくなっています。

続きを読む "ファイルを誰でも書き込めるが、所有者しかファイルを削除できないディレクトリを作成する(スティッキービット)"

複数階層のディレクトリを一度に作成する

2008年2月 4日
ディレクトリを作成するには、
「mkdir」コマンドの引数にディレクトリ名を指定して実行します。

しかし、
複数の階層に渡ってディレクトリ指定した場合に、
存在しないディレクトリを指定するとエラーになります。

そこでオプション「-p」を指定して実行すると、
存在しないディレクトリも強制的に作成し、
一度に複数の階層ディレクトリを作成することができます。

続きを読む "複数階層のディレクトリを一度に作成する"

ディレクトリ内のファイルの所有権を別ユーザに変更する

2008年2月 4日

ファイルやディレクトリの所有権を変更するにはchownコマンドを使用します。chownコマンドで指定したディレクトリ内にあるファイルも同時に所有権を変更する場合は、オプション-Rを指定して実行します。

続きを読む "ディレクトリ内のファイルの所有権を別ユーザに変更する"

ファイル・ディレクトリの所有権を変更する

2007年10月12日

ファイル、ディレクトリの所有権を変更するには、chownコマンドを使用します。ディレクトリ内にあるすべてのファイルの所有権を変更したい場合は、-Rオプションを付けて実行します。

続きを読む "ファイル・ディレクトリの所有権を変更する"

ファイル、ディレクトリのデフォルトパーミッションを変更する

2007年10月12日

ファイルやディレクトリを新規に作成した場合、デフォルトのパーミッションが設定されます。このデフォルトのパーミッションを変更するにはumaskコマンドを使用します。

パーミッションの8進数表記
フラグ表記     rwx
対応する8進数   421

続きを読む "ファイル、ディレクトリのデフォルトパーミッションを変更する"

シンボリックリンクを確認する

2007年10月12日

シンボリックリンクは、一見普通のファイルに見えますが、実は実体となるファイルは別のディレクトリにあります。ファイルがシンボリックリンクかどうか、確認するには、lsコマンドにlオプションを付けて実行します。

続きを読む "シンボリックリンクを確認する"

ディレクトリ内のすべてのファイルを一覧を表示する

2007年10月 4日

Linuxでディレクトリ内にあるファイルを表示するには、lsコマンドを表示します。しかし、通常のlsコマンドでは、「.」(ドット)から始まる隠しファイル表示することができません。

その場合は、lsコマンドに「-a」オプションを付けて実行します。

続きを読む "ディレクトリ内のすべてのファイルを一覧を表示する"

他のユーザーの作業状況を確認するには

2007年10月 4日

同じLinuxシステム上にログインしているほかのユーザーがどのような作業をしているのか確認するには、wコマンドを使用すると便利です。

※ LinuxはマルチユーザーOSなので、複数のユーザーが同時にログインして作業することができます。

続きを読む "他のユーザーの作業状況を確認するには"

一般ユーザーでroot権限のコマンドを実行するには

2007年10月 4日

あるコマンドを実行するときにのみ、root権限のコマンドを使用したいという場合があります。そのようなときには、sudoコマンドを使うと便利です。

sudoコマンドの引数に実行したいコマンドを指定して実行することで、rootコマンドを実行することができます。しかし、sudoコマンドを実行する際には、あらかじめ/etc/sudoersファイルに実行を許可したいユーザを設定しておく必要があります。

この/etc/sudoersファイルに記述するユーザーは信頼のあるユーザーを設定する必要があります。

また、sudoコマンドを実行したログはsyslogデーモンを経由して、ログファイルに記述されるので、セキュリティ管理上のメリットがあります。誰がいつどんなコマンドをsudoコマンドを使用したのかを詳しく知ることができます。

sudo -u <ユーザー名> <実行するコマンド>

続きを読む "一般ユーザーでroot権限のコマンドを実行するには"

特定のユーザーのみrootになれるようにする

2007年9月28日

一般ユーザーからrootコマンドになるには、suコマンドを実行すればなることができますが、suコマンドを実行できるユーザーを制限すれば、サーバーのセキュリティの向上になります。
誰でもrootになれるシステムは決して好ましくありません。

一般的には、wheelという特別なグループに所属するユーザーのみsuコマンドが実行できるようにすることが多く、suコマンドの使用を制限するには、/etc/pam.d/suファイルを編集します。

/etc/pam.d/suファイルの下記の行をコメントを外すことで、wheelグループのユーザーのみsuコマンドを実施できるようになります。

#auth required /lib/security/pam_wheel.so use_uid

続きを読む "特定のユーザーのみrootになれるようにする"

一時的にrootになる

2007年9月28日

Linuxシステムを操作するには、Linuxにログインする必要があります。作業を行っていると一時的にroot権限になる必要がある場合があります。

その場合、いちいちログオフしてコンソールでroot権限でログインしなおすのは、実用的ではありません。

そんな時は、suコマンドを使用すれば簡単に一時的にroot権限意なることができます。
また、suコマンドの引数として、ユーザ名を指定すれば、その指定したユーザになることができます。

su <ユーザー名>

しかし、この時変更先ユーザーの環境変数を引き継ぐことが出来ません。環境変数などは元のユーザーのものをそのまま使用することになります。それでは大変不便なので、suコマンドのオプションとして「-」(ハイフン)を付けてコマンドを実行することで、変更先ユーザーの環境変数を引き継ぐことができるようになります。

続きを読む "一時的にrootになる"

ログインした時にユーザーにメッセージを表示する

2007年9月28日

Linuxはユーザーがログインした時に、任意のメッセージを表示させることができます。ログイン時にメッセージを表示するには、/etc/motdファイルに表示させるメッセージを記述します。

ちなみに、motdは「Message of the day」の略で、その日のお知らせという意味になります。

このログイン時のメッセージは、サーバーメンテナンスのお知らせや、システムに関する重要なお知らせを通知する場合に便利です。

メッセージの変更や削除を行う場合にも、/etc/motdファイルを編集します。

続きを読む "ログインした時にユーザーにメッセージを表示する"

ユーザを複数のグループに所属させる

2007年9月26日

Linuxのグループ情報は、「/etc/group」ファイルに格納されており、下記のような表記がされている

pakira:x:500:

左からpakiraはグループ名、Xはパスワード(Xと書かれているときは、/etc/gshadowファイルに書かれています。)500はGIDになります。

ユーザを複数のグループに所属させるには、「/etc/group」ファイルを編集しますが、「/etc/group」ファイルを編集するにはvigrコマンドを使用すると便利です。

続きを読む "ユーザを複数のグループに所属させる"

起動時にX Window Systemを実行する

2007年9月26日

Linux起動時にX Window Systemを実行するには、起動時のランレベルを5に修正します。

Linuxはカーネル起動すると、初期化後に、/etc/inittabファイルのinitdefaultとして設定されているランレベルで起動します。そのランベルを修正します。

Linuxのランレベルとしては、下記のものがあります。

0 停止状態
1 シングルユーザモード
2 マルチユーザモード(ネットワークなし)
3 マルチユーザモード(CUI)
4 未使用
5 X Window System(GUI)
6 再起動

続きを読む "起動時にX Window Systemを実行する"

LANカードの設定確認

2007年5月24日

Linuxでネットワークの状況を確認するには、コマンドを実行して確認する方法と、設定ファイルの内容を確認する方法があります。
今回はLANカードに設定された設定内容を確認する方法を紹介します。

続きを読む "LANカードの設定確認"

Apacheのバージョンを確認する

2007年5月10日

ApacheはWebサーバーアプリケーションとして世界でもっとも使用されているソフトウェアです。
Apacheは現在も開発が続けられており、新バージョンのリリースがあります。

現在使用しているApacheのバージョンを確認する方法を紹介します。

続きを読む "Apacheのバージョンを確認する"

ユーザーを削除する

2007年4月14日

ユーザーを作成するuseraddコマンドがあれば、
削除するコマンドもあります。
ユーザーを削除するコマンドはuserdelになります。

このコマンドを実行すると、ユーザー情報は削除されますが、
ユーザーのホームディレクトリは残されたままになります。

ホームディレクトリも一緒に削除する場合は、
オプションに「-r」を指定して実行します。

続きを読む "ユーザーを削除する"

ユーザーの設定を変更する

2007年4月13日

ユーザーには予め、UIDやGID、ホームディレクトリなどが指定されています。しかし、これらの情報を後から変更したい場合には、usermodコマンドを使用します。

usermodコマンドはrootのみ実行することができ、ユーザー情報を様々変更することが出来ます。ユーザー名を変更することも可能です。

続きを読む "ユーザーの設定を変更する"

Linuxでユーザーの所属グループを確認するコマンド|id・groups・getentの使い分け

2007年4月13日
「このユーザー、どのグループに入ってるんだっけ?」
「プライマリグループとセカンダリグループって何が違うの?」

Linuxでファイルのアクセス権やサービスの実行権限を正しく管理するには、ユーザーがどのグループに所属しているかを正確に把握する必要があります。

この記事では、id・groups・getentコマンドを使ってグループを確認する方法から、/etc/passwd・/etc/groupファイルの読み方、プライマリグループとセカンダリグループの違い、さらにはグループの追加・変更手順まで、現場で必要な知識を網羅的に解説します。

プライマリグループとセカンダリグループの違い

Linuxのユーザーは、必ず1つの「プライマリグループ(主グループ)」に所属しています。ユーザーがファイルやディレクトリを作成すると、そのファイルのグループ所有者はプライマリグループになります。

一方、「セカンダリグループ(補助グループ)」は、追加で所属できるグループです。1人のユーザーが複数のセカンダリグループに所属できます。

プライマリグループ:ユーザーに必ず1つ割り当てられるグループ。ファイル作成時のグループ所有者になる
セカンダリグループ:追加で所属できるグループ。共有ディレクトリへのアクセス制御などに使う

たとえば、開発チーム用の共有ディレクトリに複数のユーザーがアクセスできるようにしたい場合、セカンダリグループとして「developers」を作り、そこに各ユーザーを追加する、という使い方をします。

続きを読む "Linuxでユーザーの所属グループを確認するコマンド|id・groups・getentの使い分け"

Apacheをインストールするには(ソースコード)

2007年4月12日
Apacheとは世界でもっとも使用されているWebサーバーアプリケーションです。
Linuxでソフトウェアをインストールする方法は2つあります。1つはRPMと呼ばれるパッケージ管理ツールを使用する方法。もうひとつはここで紹介するソースコードでのインストールです。

それぞれメリット、デメリットがあり、RPMはソフトウェアの管理が楽ではありますが、最新バージョンの対応がソースコードと比較して遅く、緊急性の高いセキュリティ対策に対応しにくいというデメリットがあります。

また、ソースコードでのインストールは最新バージョンの対応は早いのですが、インストール方法がRPMと比較して難しいという面があります。

どちらを使用するかは好みだと思いますが、外部に公開するサーバーとして使用する場合はセキュリティ面のことを考えてソースコードでのインストールを行うことをおすすめします。

続きを読む "Apacheをインストールするには(ソースコード)"

パスワードに有効期限を設ける

2007年4月12日

ユーザのパスワードを変更するにはpasswdコマンドを使用しますが、オプションを指定することでパスワードに有効期限を設けることができます。

この作業はroot権限のみが実行することが出来ます。

続きを読む "パスワードに有効期限を設ける"

LinuxでIPアドレスを確認するコマンド|ip a・hostname -I・ifconfigの使い分け

2007年4月12日
「このサーバーのIPアドレス、何だっけ?」
「ifconfig を打ったら command not found と言われた」
Linuxサーバーの構築や障害対応で、自分のサーバーのIPアドレスを確認する場面は日常的に発生します。

この記事では、LinuxでIPアドレスを確認する実践的なコマンドを解説します。現代の標準である ip コマンドを中心に、hostname -Inmcli、旧来の ifconfig まで、環境に応じた使い分けと実行例をまとめました。

1. 【結論】現場で使うIPアドレス確認コマンド一覧

LinuxでIPアドレスを確認する代表的なコマンドは以下の4つです。

コマンド 特徴 対応環境
ip a 現代の標準。最も確実 RHEL 7以降 / Ubuntu 16.04以降
hostname -I IPアドレスだけをシンプルに表示 ほぼすべてのディストリビューション
nmcli device show ゲートウェイやDNSも同時に確認 NetworkManager導入環境
ifconfig 旧来のコマンド(非推奨) CentOS 6以前 / 別途インストール
迷ったら ip a を使ってください。現在のLinuxディストリビューションではほぼ確実に使えます。

続きを読む "LinuxでIPアドレスを確認するコマンド|ip a・hostname -I・ifconfigの使い分け"

RPMパッケージの確認コマンドまとめ(一覧・バージョン・逆引きなど)

2007年4月11日
RPMパッケージの確認はLinuxサーバーを管理するうえでとても大切な作業の一つです。
「このサーバーにApacheは入ってる?バージョンは?」
「このファイルどのパッケージのもの?」など
サーバー管理や障害対応の現場では、こうした確認が日常的に発生します。

この記事では rpmコマンドを使ったパッケージ確認の全手順を、コマンド例とともに体系的に解説します。一覧表示から絞り込み、バージョン確認、ファイル逆引きまで、今日から使える内容です。

そもそもなぜ「rpm」コマンドで確認するのか

RHEL・AlmaLinux・Rocky Linux・Oracle Linuxなど、Red Hat系Linuxのパッケージ管理には RPM(Redhat Package Manager) が使われています。

普段のインストールや削除には依存関係を自動解決してくれる dnf(旧yum)コマンドを使うのが一般的です。しかし、「今システムに何が入っているかを確認する」用途ではrpmコマンドが今でも現場で重宝されます

rpmコマンドが活躍する具体的なシーン

・障害対応で「このパッケージのバージョンは?」と素早く確認したいとき
・セキュリティパッチの適用前後に、バージョンが正しく変わったか確認するとき
・新サーバーのセットアップ後に、必要なパッケージがすべて入っているかチェックするとき
・「このコマンドはどのパッケージに含まれているの?」と逆引きしたいとき

続きを読む "RPMパッケージの確認コマンドまとめ(一覧・バージョン・逆引きなど)"

システムをすぐに再起動する

2007年4月11日

rebootはすぐにシステムを再起動するためのコマンドです。
通常システムの停止にはshutdownコマンドが使用されますが、
rebootはこのshutdownコマンドの短縮形といえます。

shutdownコマンドでシステムの再起動を行う場合には、
オプション「r」を引数としてつける必要がありますが、rebootは引数が必要ありません。

また、rebootと同様にすぐにシステムを停止するコマンドにhaltあります。

続きを読む "システムをすぐに再起動する"

文字コードを変換する

2007年4月11日

文字コードとはOSにより異なり、文字コードが対応していないOSで文字を表示させると文字化けをします。他のOSでも文字が読めるようにするには文字コードを変換する必要があります。

文字コードを変換するにはnkfコマンドを使用します。

続きを読む "文字コードを変換する"

ハードディスクの使用状況を確認する

2007年4月11日

Linuxのハードディスク情報を確認するには「dfコマンド」を使用します。dfコマンドはハードディスクの使用容量、空き容量、使用状況の割合などが表示されます。

Linuxではハードディスクをデバイスファイルと呼ばれる特殊なファイルとして扱います。IDEドライブの場合、Linuxシステム上/dev/hda(プライマリスターのハードディスク)、/dev/hdb(プライマリースレーブのハードディスク)などという名前を持っています。

dfコマンドの結果はこれらのファイル名も表示されるので、複数のハードディスクを使用していても区別して利用状況を確認することができます。

続きを読む "ハードディスクの使用状況を確認する"

ディレクトリ内のファイルすべてを表示する

2007年4月10日

ディレクトリ内のファイルを表示させるにはlsコマンドを使用します。しかし、「.」(ドット)で始まるファイルは隠しファイルであるために、lsコマンドでは表示することができません。

「.」(ドット)で始まるファイルを表示させるにはlsコマンドのオプション「-a」を使用して実行します。

続きを読む "ディレクトリ内のファイルすべてを表示する"

グループを作成する

2007年4月10日

グループを新規作成追加するには、「groupadd」コマンドを使用します。グループに関する情報は/etc/groupに記述されており、編集することも可能です。

しかし、「/etc/group」ファイルを直接編集するのではなく、vigrコマンドでグループ情報を編集することができますので、こちらで編集したほうが望ましいでしょう。

続きを読む "グループを作成する"

ユーザーを作成する

2007年4月10日

ユーザーを新規作成追加するには「useradd」コマンドを使用します。コマンドの引数としてユーザー名を指定することで、ユーザーが作成されます。その際、/homeディレクトリ配下にユーザーディレクトリが作成され、ユーザー名と同じグループ名も作成されます。

続きを読む "ユーザーを作成する"

起動時のメッセージを確認する

2007年4月10日

Linuxは起動する際にデバイスの初期化やサービスの起動をします。その際に様々なメッセージを表示します。このメッセージは非常に高速に表示されるので、起動時に確認するのは大変困難です。

このメッセージを確認するには、ログファイルとして記録している「/var/log/dmesg」ファイルを確認するか、またはdmesgコマンドを実行します。

続きを読む "起動時のメッセージを確認する"

Linux起動時にコマンドやプログラムを自動実行させる

2007年4月10日
Linuxが起動する際、様々なサービスが起動しますが、
サーバーを管理していると、Linuxの起動時に任意の
プログラムやコマンドを自動起動させたい場面があります。

その場合には、/etc/rc.d/rc.localファイルに
起動したいプログラムやコマンドをフルパスで記述します。

この/etc/rc.d/rc.localファイルは、起動プロセスの
最後に実行されるシェルスクリプトになります。

続きを読む "Linux起動時にコマンドやプログラムを自動実行させる"

Linuxが起動しなくなった

2007年4月 9日

設定ファイルなどを変更したことによって、Linuxが起動しなくなる場合などがあります。そのような時はLinuxのインストールCDを使用することで、起動することが出来ます。

続きを読む "Linuxが起動しなくなった"

起動時に「LI」とだけ表示され停止してしまう

2007年4月 9日

ブートローダはLILOのBIOS機能を使用してLinuxカーネルのロードを行いますが、BIOSによっては、ハードディスクの1024シリンダ以降のファイルを読み込むことが出来ない場合があります。

そのため、LILOのプログラムが1024シリンダ以降にあると、LILOを読み込むことができず、表示が「LI」で停止してLinuxが起動できません。これが「8.4GBの壁」と呼ばれるBIOSの問題です。

対策方法としては2つあり、ひとつはブートローダにGRUBを使用することです。GRUBは1024シリンダに関係なく起動できるますので、回避することができます。また、Linuxをインストールする際に作成できる起動ディスクを使用しても正常にLinuxを起動することができます。

また余談ですが、どうしてもLILOを使用しなくてはならない場合は、LILOプログラム本体をBIOSが読み込める1023シリンダ以内に収まるようにする必要があります。RedHat Linuxや多くのLinuxのインストーラーがわざわざ/bootパーティションを作成するのは、1023シリンダ以内に収めるためです。

デュアルブートの場合には、LILOがMBRにインストールしてあると、Linuxだけではなく、Windowsも起動できなくなります。そのような場合にはLILOをアンインストールすることで回避することができます。

続きを読む "起動時に「LI」とだけ表示され停止してしまう"

LILOで起動デフォルトOSを変更したい

2007年4月 9日

LILOはブートセレクタとして起動するOSを選択できますが、選択しなかった場合、デフォルトに設定されているOSが起動するようになっています。

デフォルトOSの起動設定はLILO設定ファイル「/etc/lilo.conf」に記述されていて、default句に設定されています。

続きを読む "LILOで起動デフォルトOSを変更したい"

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る