Twitterに投稿 はてなブックマークに追加 Google Bookmarksに追加

目次 >> Linux

Linuxの管理・設定

ここでは、ネットワークやXwindowなどのLinux自体の動作に関する設定を中心に説明する。

情報表示

ここでは、各種の情報を集める際の表示方法について説明する。

コンピュータに関する情報

OSのバージョンのような基本的な情報を取得するには、

$ uname -a
Linux example.com 3.2.0-24-generic #37-Ubuntu SMP Wed Apr 25 08:43:22 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

および

$ cat /etc/issue
CentOS release 5.2 (Final)

でわかる。

ハードウェア情報を表示する方法 その1 hwinfo

hwinfoを使うと、ハードウェアの詳細な情報を得ることができる。OpenSUSEでは標準で備わっている。Ubuntuではapt-get install hwinfoでインストールすることができる。CentOSでは標準では存在しない。

また、オプションをつけることにより、個別の情報を表示することができる。例えばCPUに関する情報を得たい場合は、

$ hwinfo --cpu
01: None 00.0: 10103 CPU
[Created at cpu.304]
Unique ID: rdCR.j8NaKXDZtZ6
Hardware Class: cpu
Arch: X86-64
Vendor: "GenuineIntel"
Model: 6.30.5 "Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz"
Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,rdtscp,lm,constant_tsc,arch_perfmon,pebs,bts,rep_good,xtopology,pni,dtes64,monitor,ds_cpl,vmx,smx,est,tm2,ssse3,cx16,xtpr,pd
Clock: 2925 MHz
BogoMips: 6090.41
Cache: 8192 kb
Units/Processor: 16
Config Status: cfg=new, avail=yes, need=no, active=unknown
(以下略)

メモリに関する情報を得たい場合は、

$ hwinfo --mem
01: None 00.0: 10102 Main Memory
[Created at memory.61]
Unique ID: rdCR.CxwsZFjVASF
Hardware Class: memory
Model: "Main Memory"
Memory Range: 0x00000000-0x3ffeffff (rw)
Memory Size: 1 GB
Config Status: cfg=no, avail=yes, need=no, active=unknown

それ以外のオプションは--helpにある。

ハードウェア情報を表示する方法 その2 lshw

ドライバなどの設定には、ハードウェアの情報が欠かせない。本体をあけてみるのが一番確実ではあるが、ソフトウェア的に表示させるには下記のようにして行う。まず、http://ezix.sourceforge.net/software/lshw.htmlからlshwをダウンロードする。

$ tar zxvf lshw-B.02.06.tar.gz
$ cd lshw-A.01.08
$ make

srcディレクトリにlshwという実行ファイルができているのでそれを実行する。rootである必要はない。必要であればパスの通っているディレクトリにコピーしておく。

参考:PCのハードウェア情報を表示するには

CPUの情報を表示する方法

/proc/cpuinfoを表示すればよい。

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 30
model name : Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz
stepping : 5
cpu MHz : 2793.000
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 lahf_lm tpr_shadow vnmi flexpriority ept vpid
bogomips : 7140.43
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
(以下略)

なお、Turbo Boostが有効な場合はflagsの中にidaがあるはずである。

ネットワークの設定確認

IPアドレスなどネットワークの設定の確認は

$ /sbin/ifconfig

で見ることができる。Windowsでのipconfigに相当する。

ホスト名の表示・設定

表示するには

# hostname
mail.example.com

設定するには

# hostname mail.example.com

ただし、これでは、再起動すると元に戻ってしまう。
これを防ぐには、直接ホスト名を設定しているファイルを変更する。

UbunutuなどDebian系では

/etc/hostname

RedHat系(CentOS6まで)では

/etc/sysconfig/network

というファイルの

HOSTNAME="mail.example.com"

という項目に書き込む。

CentOS7では

# hostnamectl set-hostname mail.example.com

というコマンドか、

/etc/hostname

というファイルに直接

mail.example.com

と書き込む。(「HOSTNAME=」はつけない)

で設定する。

参考:http://www.ducea.com/2006/08/07/how-to-change-the-hostname-of-a-linux-system/

サーバの自動起動

CentOS7では、systemctl list-unit-files -t serviceコマンドで表示する。

# systemctl list-unit-files -t service
UNIT FILE                                   STATE   
auditd.service                              enabled 
autovt@.service                             disabled
blk-availability.service                    disabled
brandbot.service                            static  
console-getty.service                       disabled
console-shell.service                       disabled
container-getty@.service                    static  
cpupower.service                            disabled
(以下略)

staticは単独では起動できないサービス。

Fedora系およびOpenSUSE系OSでサーバの自動起動状況を表示するには、

# chkconfig --list
Makefile 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 3:on 4:off 5:on 6:off
alsasound 0:off 1:off 2:on 3:on 4:off 5:on 6:off
apache2 0:off 1:off 2:off 3:on 4:off 5:on 6:off
atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
autofs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
autoyast 0:off 1:off 2:off 3:off 4:off 5:off 6:off
bluetooth 0:off 1:off 2:off 3:off 4:off 5:off 6:off

...

# chkconfig named --list
apache2 0:off 1:off 2:off 3:on 4:off 5:on 6:off

サーバの自動起動をOn、Offするには、

# chkconfig named on
# chkconfig named off

ディストリビューションによって、同じサーバのでも名前が違う場合がある。例えば、apacheのOn、OffはFC4、FC5ではhttpdであるが、openSUSE 10.0の場合はapache2である。

Ubuntuの場合は、sysv-rc-confコマンドを使う。初期状態ではインストールされていないので、

# sysv-rc-conf
The program 'sysv-rc-conf' is currently not installed. You can install it by typing:
apt-get install sysv-rc-conf
-bash: sysv-rc-conf: command not found

のように、apt-getでインストールするようメッセージが返されるはずである。
指示に従って、apt-get install sysv-rc-confと打ってインストールする。

$ sudo apt-get install sysv-rc-conf
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libcurses-perl libcurses-ui-perl
The following NEW packages will be installed:
  libcurses-perl libcurses-ui-perl sysv-rc-conf
0 upgraded, 3 newly installed, 0 to remove and 108 not upgraded.
Need to get 406 kB of archives.
After this operation, 1,442 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://us.archive.ubuntu.com/ubuntu/ natty/universe libcurses-perl amd64 1.28-1 [139 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ natty/universe libcurses-ui-perl all 0.9607-1 [243 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ natty/universe sysv-rc-conf all 0.99-6 [24.2 kB]
Fetched 406 kB in 23s (17.1 kB/s)                                              
Selecting previously deselected package libcurses-perl.
(Reading database ... 135329 files and directories currently installed.)
Unpacking libcurses-perl (from .../libcurses-perl_1.28-1_amd64.deb) ...
Selecting previously deselected package libcurses-ui-perl.
Unpacking libcurses-ui-perl (from .../libcurses-ui-perl_0.9607-1_all.deb) ...
Selecting previously deselected package sysv-rc-conf.
Unpacking sysv-rc-conf (from .../sysv-rc-conf_0.99-6_all.deb) ...
Processing triggers for man-db ...
Setting up libcurses-perl (1.28-1) ...
Setting up libcurses-ui-perl (0.9607-1) ...
Setting up sysv-rc-conf (0.99-6) ...

あとは、rootで(あるいはsudoで)sysv-rc-confと打つと、メニュー画面が現れるので、あとは、スペースキーでオンオフを切り替え、qで終了する。

また、コマンドラインから、

$ sysv-rc-conf --list

のように使うこともできる。

CentOSでのネットワークの設定

CentOSをインストールして、最初に問題となるのが、たとえネットワークデバイスがインストールされていても、デフォルトでネットワークに繋がっていないと言うことである。
ブート時にネットワークデバイスをオンにしてやることで解決する。
具体的には、

/etc/sysconfig/network-scripts/ifcfg-eth0

というファイルの中の

ONBOOT=no

ONBOOT=yes

に書き換えてやればよい。

CentOSでファイアウォールを切る

CentOSではインストールした状態では、ファイアウォールがオンになっている。
ファイアウォールの設定を変更するか、切らないかぎり、22番ポート以外の別ポートでのSSHへのアクセスや、httpdにアクセスできない。

サーバが既にファイアウォール内に設置されているならば、ファイアウォールを切るという方法もある(もちろんセキュリティ的には少し安全性が低下する)。

起動中のファイアウォールを切るには

#/etc/rc.d/init.d/iptables stop

OS起動時に起動しないようにするには

#chkconfig iptables off

とすれば良い。

Wake On LANでネットワーク上のマシンを起動する

etherwakeを使う。etherwakeはroot、もしくはsudoを使って呼び出す。
書式は、
etherwake MACアドレス
である。

sudo etherwake 90:E6:BA:F3:B6:D2

逆にシャットダウンするには

ssh -t example.com 'sudo shutdown -h now'

hosts.allowとhosts.deny

ネットワークアクセスを許可するホストおよび禁止するホストの設定は/etc/hosts.allowと/etc/hosts.denyいうファイルで行う。
コンピュータが参照する順序は
1.hosts.allowに記述されていれば許可
2.hosts.denyに記述されていれば不許可
3.それ以外はすべて許可
の順で参照される

Fedoraでの主な設定

コマンドラインで

# setup

と打つと、メニュー形式でファイアウォールやネットワーク、タイムゾーンなどが設定できる。

Fedora 8のLiveディスクがReadyで止まってしまう

起動オプションに"edd=skipmbr"をつける。

CentOSやFedoraでマウスポインタが表示されない

CentOSでマウスポインタが表示されない場合は、/etc/X11/xorg.confで

Option "HWCursor" "off"

とする。

CentOSをインストール後、起動しない

原因:インストール時に、ブートローダをMBR以外にインストールした。

対策:OSインストール時にMBRに指定してインストールする。

ソフトのインストール

fedoraにおけるyumの使用方法

#yum info xxx

で、パッケージxxxの情報が得られる。例えば、

# yum info mrtg
Setting up repositories
Reading repository metadata in from local files
Available Packages インストールされていない場合はこのように表示される
Name : mrtg
Arch : i386
Version: 2.11.1
Release: 3
Size : 853 k
Repo : base
Summary: Multi Router Traffic Grapher
Description:
The Multi Router Traffic Grapher (MRTG) is a tool to monitor the traffic
load on network-links. MRTG generates HTML pages containing PNG
images which provide a LIVE visual representation of this traffic.
#yum install xxx

でパッケージxxxのインストールを行う。たとえば、apacheの場合は、yum install httpdと打つ。

suseにけるyastの使用方法

yastはrootでないと使えないのでsuコマンドなどでrootになっておく。

インストールは

# yast -i sshfs

のように-iオプションの後にパッケージ名を入れる。

FedoraでGDモジュールをインストールするには?

# yum install gd-devel

X Windowを落とすには?

CTRL+ALT+BS

telinit3

Linuxを最新状態に保つ

FC4、FC5の場合

最新のパッケージにアップデートするには、

# yum update

自動化するには、

# chkconfig yum on

FC6以降およびCentOSでは

yum-updatesdを使う。標準でこのデーモンは起動しているが、標準状態では、デスクトップに通知を出すのみである。自動的に更新するようにするには、/etc/yum/yum-updatesd.confの中の3項目をyesに書き換える。

do_update = yes
do_download = yes
do_download_deps = yes

Fedoraで自分のところから最も速いサーバを探す

yum-fastestmirrorをインストールする。なおCentOS7ではデフォルトで入っている。

# yum install yum-fastestmirror

yumを実行した際に、

# yum install samba
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* fedora: ftp.riken.jp
* updates: ftp.riken.jp
Setting up Install Process
Parsing package install arguments

のようにLoading "fastestmirror" pluginが出れば成功である。

ログの管理 - logrotate

ログファイルをローテンションする。logrotate.confでlogrotate全体の設定を、/etc/logrotate.d下の各ファイルで各ログファイルの処理方法設定する。logrotate.confにデフォルトの設定を書き、/etc/logrotate.d下の各ファイルの設定で上書きされる。

logrotateの設定項目一覧
オプション 意味
compress 圧縮を行う。デフォルトではgzipで圧縮される。
nocompress 圧縮しない
compresscmd 圧縮を行うコマンドを指定する。
uncompresscmd 解凍を行うコマンドを指定する。
compressext 圧縮を行う際の拡張子。
compressoptions 圧縮を行う際のオプション。デフォルトではgzipのオプション"-9"が指定されている。
daily 毎日行う
dateext 数字の代わりに日付の拡張子をつける。(FC4では機能しないがFC5では使える)
ifempty ログファイルが空の場合でもローテーションを実行する
notifempty ログファイルが空の場合はローテーションを実行しない
include /etc/logrotate.d 以下のディレクトリ内のファイルを含める。この場合は、/etc/logrotate.d/
missingok ログファイルが存在しなくてもエラーを出さない
monthly 毎月行う。通常は月の最初の日。
sharedscripts このスクリプトで複数のログファイルを処理する。(prescriptおよびpostscriptを書くログファイルに対して実行する)
firstaction/endscript 一番最初に実行するスクリプトを書く
prerotate/endscript ローテートを実行する前に実行するスクリプト
postrotate/endscript ローテーション実行後に実行するスクリプトをpostrotate~endscriptの間に書く。
lastaction/endscript postrotateよりもさらに後に実行するスクリプトを書く
rotate 4 ローテーションを行う回数。この場合は4回。5個目からは古いものから順に削除される。
size 100k サイズが指定サイズより大きい場合は実行する。この場合は100kB以上の場合。
weekly 毎週実行する

参考:logrotateオプション

強制的に実行するには

# /usr/sbin/logrotate -f /etc/logrotate.conf

と打つ。

なお、たとえば、ubuntuでは、/var/lib/logrotate/statusというファイルに、最終実行日時が記録される。

xzで圧縮するには?

ログファイルをgzipではなくxzで圧縮すると、ファイルサイズをより小さくできる。

やりかたは、logrotate.conf

compresscmd /usr/bin/xz
uncompresscmd /usr/bin/unxz
compressext .xz

と記述する。

CentOS 5でのlogrotateのバグ

CentOS 5では、logrotateにバグがあり、dateextやcompressなどのオプションが使えなかった。現バージョンでは直っている。

Linux上でCD-R、DVD-Rを焼く(mkisofs、cdrecord)

mkisofsによる.isoファイルの作成

LinuxでCDやDVDを焼く場合、まずmkisofsでisoファイルを作成し、それをcdrecordなどのコマンドで焼く。なおmkisofsは標準状態では日本語に対応していないので注意。下記のようなオプションで作成するとWindowsマシンでもロングファイル名などがきちんと表示される。

例)dir1、dir2内のファイルをdisk.isoにまとめる。ボリュームラベルにはVolumeLabelを指定。

$ mkisofs -V "VolumeLabel" -U -J -r -T -joliet-long -hide-joliet-trans-tbl -o disk.iso ./dir1 ./dir2

主要なオプション(詳しくはmanページを参照)

オプション 意味
-V ボリュームラベルを指定する。これは、Windowsの場合ドライブ名として表示される。
-U -d -l -L -N -relaxed-filenames -allow-lowercase -allow-multidot -no-iso-translateのすべてを指定した状態になる。ISO9660規格に違反するが、通常はこれで良い。
-r Unixで利用する情報を付加する。
-J Windowsからロングファイル名でアクセスできるようにするためにJolietでディレクトリテーブルを作成する。
-o アウトプットファイルを指定する。
-joliet-long Unicodeで103文字までのファイル名がつかえるようになる。
-hide-joliet-trans-tbl Joliet ツリーから TRANS.TBL ファイルを隠す

cdrecordによるisoファイルのディスクへの焼付け

まずは

$cdrecord -scanbus

でCD/DVDドライブを見つけるためにデバイスの一覧を表示させる。

ユーザーの追加(adduser)

ユーザーを追加するにはadduserとuseraddがあるが、adduserが便利。
使い方は、

# adduser loginname

である。同時にパスワードも指定する場合は、-pオプションで

# adduser loginname -p password

とする。passwdコマンドでパスワードを設定しても良い。

passwdファイルgroupファイルの編集

ユーザーおよびグループを管理するファイル群は次のとおりである。

/etc/passwd     ユーザの情報を保持する。passwdという名前であるが、通常はshadowパスワードを使うのでパスワードは書かれていないことが多い
/etc/passwd-    passwdのバックアップファイル
/etc/group      グループの情報を保持する
/etc/group-     groupのバックアップファイル
/etc/shadow     ユーザのパスワードファイル
/etc/shadow-    shadowのバックアップファイル
/etc/gshadow    グループのパスワードファイル

passwdを編集するには、vipwコマンドを使え
groupファイルの編集するには、vigrを使え。

ユーザーのホームディレクトリを変更する

usermodコマンドを使う。書式は

# usermod -d home_dir username

直接/etc/passwdファイルを編集してもよい。その際はviではなく、vipwを使うようにする。

yum updateとyum upgradeの違い

yum upgrade

は、

yum update --obsoletes

と同等である。
--obsoletesの効果は、新バージョンで削除された旧バージョンのパッケージを削除する。

複数のコマンドをバックグランドで実行するには?

複数のコマンドを連続して実行するには;で区切る。例えば、

ls;du;df

これで、ls、du、dfが順次実行される。
一方、単純に一つのコマンドをバックグランドで実行するには、

ls &

と&をつければよいが、複数のコマンドをバックグランドで実行するには、複数のコマンドをかっこで囲って、その後に&をつければよい。

(ls;du;df) &

C言語などのsystemコマンド内でも、同様にすると、実行中のプログラムと並列にコマンドを実行することができる。

コマンド履歴の記憶数を変えるには?

デフォルトでのコマンド履歴historyの記録数は500件である。.bashrcなどに下記のように書き込むことによって、その数を変えることができる。下記の例では10000件

export HISTSIZE=10000
export HISTFILESIZE=10000

なお、0にすると記録されない。

コマンド履歴でコマンド実行日時も記録するには?

デフォルトでは単にコマンド履歴のが記録されるだけである。実行日時も記録したい場合は、.bashrcなどに下記のように書き込むことによって変えることができる。

export HISTTIMEFORMAT="%h %d %H:%M:%S "

historyファイルにコマンド履歴が書き込まれるタイミングは?

historyファイルは単にコマンドを実行しただけでは更新されない。

更新されるのは、

だけである。

リンク集

最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて20.04、21.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2021 Chikuma Engineering Co., Ltd. All Rights Reserved.