Linuxに関するいろいろなTips†
画面表示関連†
コンソールの言語を変更する > "i18n","localectl"†
ls をカラー表示 > ".bashrc"†
grep の検索部分を強調(カラー表示) > ".bashrc"†
コンソールの消灯(スクリーンセーバ?) > "setterm"†
コンソールのbeepを切る > ".inputrc"†
ストレージ・ディスク関連†
全ストレージのパーティション情報を表示 > "sfdisk"†
sfdisk -l
HDD の S.M.A.R.T. チェック > "smartctl"†
smartctl
- オプション
- -a 全て表示
- -i S.M.A.R.T. サポート状況
- -l エラーのログを表示
- -v 温度やシークエラーなどの状況
- Turbolinux 8 server は smartmontool 入っていたけど、
Turbolinux 10 server は入ってない。。。
ディスク簡易ベンチマーク > "hdparm", "bonnie++"†
hdparm -ft /dev/hda
なんちゃってローレベルフォーマット > "dd", "shred"†
ファイルシステムチェック(ディスクチェック) > "fsck", シングルモード†
- fsck
- fsck.ext3 とか fsck.jfs とかいろいろある模様。適当なものを使う。
- fsck -fn /dev/sda1
- -f fsck.ext3 でジャーナルがクリーンだとしてもチェック
- -n エラーが発見されてもディスクに修正・変更を加えない
- -p エラーが発見されたら常に修正する(通常は問い合わせ)
- マウント中のファイルシステムを fsck しないこと。
- GLUBなLinuxをシングルモードで起動
- 起動するカーネルにカーソルを合わせて[E]
- "Kernel"行にカーソルを合わせて[E]
- 末尾に" single"(singleの前にスペース)を入力して[Enter]
- [B]
- liloなLinuxをシングルモードで起動(2)
- 最近の linux は linux single では起動しない模様
- lilo の画面で [TAB]
- linux 1
- liloなLinuxをシングルモードで起動(1)
- lilo の画面で [TAB]
- linux single
- linux の部分はもう一度 [TAB] を押すと候補が表示される
再起動時にfsckする > "shutdown"†
- 再起動時にlinux 1とかするのは面倒、というか、忘れる。
shutdown -Fr now
- -F で再起動時に fsckが走る。
- もちろん再起動時に走るfsckなので、fstabで行最後のオプションを0にしていたらすっ飛ばされる。
再起動時にfsckしたくない > "fstab"†
不良セクタチェック > "badblocks"†
ディスクのIO状況をモニタする > iostat†
マウントポイントを定義する > /etc/fstab†
パーティションのラベルを設定したりUUIDを調べたり > tune2fs, tune4fs†
- tune2fs(ext2,3用), tune4fs(ext4用)
- 状態
- tune4fs -l /dev/sda1
- UUIDやラベルを見ることができる。
- 次回の自動fsck日時なども見れる。
- ラベルを設定
- tune4fs -L hogehoge /dev/sda1
AFT (Advanced Format Technology) 対応ディスクをfdiskする†
- 2TBを超えたあたりからAFT (Advanced Format Technology) なる技術が採用され始める。
- ディスクのセクタ毎のECC(エラー訂正)を512bytes毎ではなく、4096bytes毎に配置し、少しでも効率向上を狙った技術。
- Windows XPやLinuxのfdiskでは認識してくれない。
- Windows 7やWesternDigitalのWD Alignではきっちりパーティションを作ってくれる。
- 通常通りfdiskすると鈍足になる。
- Linuxでfdiskする場合
- fdisk -u -H 128 -S 32 /dev/sdc
- -u: シリンダ単位ではなく、セクタ単位で表示する。
- -H 128: ヘッダ数
- -S 32: 1トラックあたりのセクタ数
- このパラメータで、2048セクタからパーティションを切る。
- "-H 224 -S 56"という説もあるが、WD Alignでは"-H 128 -S 32"を正常とみなすため、それを尊重した。
- 2048セクタからではなく64セクタからパーティションを切っても良いが、Windows 7が2048セクタから切りたがるので、それを尊重した。
- 複数パーティションを切りたい場合は、セクタを8の倍数にすれば良いらしい。
- 結果(WesternDigital WD20EARS-00S8B1)
# fdisk -lu /dev/sdc
Disk /dev/sdc: 2000.3 GB, 2000398934016 bytes
128 heads, 32 sectors/track, 953864 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 2048 3907029167 1953513560 fd Linux raid autodetect
- 参考
ディレクトリ・ファイル関連†
ディレクトリごとの容量を表示 > "du -s"†
du -s /home/*
- -M(size) で単位を指定 K,M,G,T...
ファイルを検索する > "find", "locate"†
- カレントディレクトリ内
- ディレクトリ再帰
- find ./ -name hogehoge*
- find ./* -name hogehoge*
- find /* -name hogehoge*
- locate(slocate)コマンドのデータベースを利用
- locate hogehoge
- cronでlocateコマンドのファイルデータベース更新を行っている場合のみ利用可能
- whichコマンド
ファイルまたはディレクトリだけchmodする > "find"†
- find . -type d -exec chmod 711 {} \;
- ディレクトリ(.)の中のディレクトリ属性(-type d)だけコマンド実行(chmod 711 )する。
- ファイルだけなら -type f
- Suexecとか始めたら必要になった。
更新日時で検索して削除する > "find"†
- find /home/xxxx/target/ -type f -mtime +7 -exec rm -fv {} \;
- /home/xxxx/target/ の中の更新 7 日以前のファイルを rm -fv {} する
- -execオプションではなく、-deleteオプションのほうがスマートかもしれない。
- find /home/xxxx/target/ -type d -mtime +7 | xargs rm -rfv
- 7日以上前に更新されたディレクトリをrm -rfvする。
findで特定のディレクトリを除外する†
- find ./ \( -type d -and -name snapshot -prune \) -or \( -name Thumbs.db \) -exec rm -fv {} \;
- snapshotという名前のディレクトリ以下は検索せず、Thumbs.dbという名前を、削除する。
直前にいたディレクトリに戻る > "cd -"†
cd -
ファイルを分割/結合 > "split", "cat"†
- 分割
- split -b 1000 original devide.
- 結合
最近のディストリビューションには ftp ではなくて lftp†
一定間隔でコマンドを実行し続ける(ファイルの内容を表示し続ける) > "watch"†
watch (option) (command)
- 使用例
- オプション
- -n (num) : (num)秒毎に実行する
- -d : 前に表示した画面との差分を強調する
システム関連†
定期的にコマンドを実行する > "crontab"†
crontab -e
- cron の編集を行う
- 分 時 日 月 曜 コマンド
- 分 0-59, 時 0-23, 月内日 0-31, 月 0-12, 曜日 0-7
- 曜日は 0=日...6=土, 7=日。もしくは名前最初の3文字
- 各項目 , 区切りで複数指定 例 : 1,3,5,7-9 1時と3時と5時と7~9時
- 各項目 / 区切りで数時間おき指定 例 : */5 5分おき
cronやlogwatchから飛ぶメールを止める†
- cronから飛んでくるメールを止める
- vi /etc/sysconfig/crond
CRONDARGS="-m off"
- logwatchから飛んでくるメールを止める
- vi /usr/share/logwatch/default.conf/logwatch.conf
DailyReport=No
仮想コンソールを減らす > "inittab"†
- alt + F1〜6 で切り替えられる、仮想コンソールの数を変えることができる。
- 昔のディストリビューション
- 最近のディストリビューション
halt / shutdown -r now コマンドで電源が自動的に切れない†
ユーザのホームディレクトリの雛形 > "/etc/skel/"†
- ユーザを作成したときに、デフォルトでディレクトリを作成したり、
設定ファイルをすべて同じにする方法。
- デフォルトで public_html が作られるようにする
- mkdir /etc/skel/public_html
- chmod 755 /etc/skel/public_html
- ただし、ディストリビューションによっては、
作られたホームディレクトリが 700 になってしまうので、
そこは我慢して毎回 chmod 755 /home/(userid)
- 「ls をカラー表示」のような、環境設定も同様に /etc/skel の中のファイルを書き換える。
runlevelを変更する/グラフィカルログインを切る > "/etc/inittab"†
- インストール時にXwindowを切っておくのがベストだが、
フルインストールをするめんどくさがり屋さんに
- /etc/inittab
# 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)
# CUI(テキストベース)ネットワーク無し
# 3 - Full multiuser mode
# CUI(テキストベース)ネットワーク有り
# ※通常はこれで
# 4 - unused
# 5 - X11
# GUI(グラフィカル)
# 6 - reboot (Do NOT set initdefault to this)
# 再起動が走り出す
#
id:3:initdefault:
# ↑これを書き換えてやる
起動時のシーケンス順序を見る > systemd†
- systemd-analyze plot > systemd.svg
- CentOS7から導入されたsystemdの一部機能
- 起動時に走り出すdaemonの依存関係や順序、処理時間をチャートにしてsvg出力する。
NTPクライアント > "ntpdate"†
- ntpdate
- ntpdate ntp.jamfunk.jp
- 強制的に大幅な同期をとる場合は -b または -B オプション
- ntpdate をしたあとには ハードウェア時計を同期させておきましょう。
- yumインストールはyum install ntpdate
- サーバについては Tips/Linux/ntpd
- CentOS7以降はchronycに代わった。
プロセスの優先度を変更する > "renice"†
- 実行中プロセスの優先度を変更する
- renice -5 -p 1234
- PID 1234 を優先度 -5 に変更
- 優先度は -19(最優先)〜20(後回し)
- 実行するプログラムの優先度を設定する
ファイルシステムのラベルを変更する > "e2label"†
- ファイルシステム(パーティション)のラベルを設定すべき。
- ファイルシステムのラベルを表示する
- ファイルシステムのラベルを変更する
- e2label /dev/sda1 sda1-boot
- 参考
キーボード種類を変更する > /etc/sysconfig/keyboard†
プロセスをリアルタイムに表示する > top†
- 起動
- 主な起動中のコマンド
- [D] 遅延時間間隔
- [U] ユーザーの選択
- [Q] 終了
- [1] CPU状態トグル
- CPUをコア別に表示するか、1つにまとめる手表示するか
- [C] コマンドライン/プログラム名のトグル
- [shift]+[P] CPU使用率順でソート
- [shift]+[M] メモリ使用率準でソート
TeraTermとLinux間でファイルの送受信 > rz(lrzsz) + TeraTerm†
- TeraTermのファイル→転送→ZMODEMでファイルの送受信をする
- FTPとかSambaとかインストールするの面倒だし、セキュリティ落ちるし、、、
- インストール@CentOS 5.5
- CentOS→TeraTerm
- CentOSで sz filename.txt
- TeraTermで ファイル→転送→ZMODEM→受信
- TeraTerm→CentOS
- CentOSで rz
- TeraTermで ファイル→転送→ZMODEM→送信
kernelのバージョンを調べる > uname†
uname -r
- unameコマンドには他に色々オプションがある模様
- -m CPUのタイプ
[jamfunk@localhost ~]$ uname -m
x86_64
- -n PCのホスト名を表示する
[jamfunk@localhost ~]$ uname -n
dhcp043.27.172.in-addr.arpa
- -r カーネルのバージョンを表示する
[jamfunk@localhost ~]$ uname -r
2.6.18-194.el5
- -s OS名を表示する
[jamfunk@localhost ~]$ uname -s
Linux
- -v OSのリリース日を表示する
[jamfunk@localhost ~]$ uname -v
#1 SMP Fri Apr 2 14:58:14 EDT 2010
- -a すべての情報を表示する
[jamfunk@localhost ~]$ uname -a
Linux localhost.168.192.in-addr.arpa 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2
010 x86_64 x86_64 x86_64 GNU/Linux
ディストリビューションやそのバージョンを調べる†
SELinux無効化†
- 強いけど使い方が難しい(;_;
- vi /etc/sysconfig/selinux
SELINUX=disabled
cockpit(ブラウザベースサーバーOS管理)†
- ブラウザからサーバーのネットワークやログの管理を行うことができる。
- CentOS7あたりからyumのbaseレポジトリに入ってる。
ネットワーク関連†
ネットワーク設定 > /etc/sysconfig†
- NICとIPアドレスの設定
- /etc/sysconfig/network-scripts/ifcfg-*
- 必須項目
# デバイス名
DEVICE=eth0
TYPE Ethernet
# 起動時に自動的に有効 yes, no
ONBOOT=yes
# アドレス取得方法 dhcp, static, none
BOOTPROTO=static
- 任意項目
# MACアドレス(任意で設定)
HWADDR=00:0C:29:68:E3:F1
# デバイスのup, down等をユーザに許可するか yes, no (任意)
USERCTL=no
- BOOTPROTO=dhcp指定時に設定可能な項目
# DHCPサーバに通知するホスト名(任意)
DHCP_HOSTNAME=dhcpclient
# DHCPで取得したDNSサーバをresolv.confに自動反映 yes, no(BOOTPROTO=dhcp指定時, 任意)
PEERDNS=yes
- BOOTPROTO=static指定時に設定可能な項目
# IPアドレス
IPADDR=192.168.1.1
# サブネットマスク
NETMASK=255.255.255.0
# ネットワークアドレス(任意)
NETWORK=192.168.12.0
# ブロードキャストアドレス(任意)
BROADCAST=192.168.12.255
# ゲートウェイアドレス(任意)
GATEWAY 192.168.1.1
- /etc/init.d/network restartすればすべて反映
- DNSを指定する
- ホスト名・GWを変更する
- ローカルで解決するホスト名
- ネットワーク設定を消す
- /etc/sysconfig/network-script/ifcfg-xxx(xxxはif名)を削除
- /etc/init.d/network restart
- 参考
- /etc/sysconfig/network-script/ifcfg-eth*設定項目 - 自宅サーバをめぐる冒険
ネットワークカードの名前(eth*)を変更したり入れ替えたり†
static routeを定義する†
- ちょっと特殊なネットワークを組んだり、defaultgateの設定の関係でrouteを手動で定義しないといけない場合
- 一時的な定義方法
- route add -net 172.16.0.0 netmask 255.255.0.0 gw 192.168.10.1 eth1
- 永続的な従来の定義方法
- 永続的な最近の定義方法
- それぞれ /etc/init.d/network restart すれば適用される
古い情報†
kernel 2.4.16-26 で ext3 のエラーログが大量に出る件†
EXT3-fs error (devuce ude0(3,1)): ext3_lookup: bad inode number: 11
- Turbolinux User's Board - "kernel(エラーメッセージ)をアップデートしたらメッセージ"
- http://www.turbolinux.co.jp/dcforum/DCForumID11/20.html
2006/10/11付けでアナウンスされた、「kernel(エラーメッセージ)」を当方で使用し
ているTurbolinux 8 Serverにアップデートしたところ、下記のメッセージが表示され
る様になりました。
Ext3-fs error(device ide(3,1)): ext3_lookup: bad inodo number: 11
inode number: 11 は各ファイルシステム直下の
"lost+found"を示すようです。
このディレクトリにアクセスできないか
アクセスしに行った時にエラーが発生するようです。
対象ディレクトリがlost+found/だから実害ないと
言えば実害ないんですが、よろしくはないでしょう。
一応確認の為元のパーミッションやリンクを確認して、
削除して再作成しました。
# rm -rf lost+found/
# mkdir lost+found/
簡単な再現方法は
#updatedb コマンドを実行してみて下さい。
ファイル情報を総ナメしますので、lost+found/の
作り直し前後で挙動が違う事が確認できます。
カーネルをアップデートすると各ファイルシステムの
lost+found
にアクセス(削除も)が出来なくなるようなので、アップデート前にlost foundを作り
直すか削除だけしておいて、カーネルをアップデートしないと駄目なようです。
- 2006.12.01リリースのアップデートにカーネルのバグフィクスが上がっている。
USBメモリスティックをマウント > "murasaki"†
- murasakiデーモンを起動
- /etc/init.d/murasaki start
- hotplug とか他の名前になっているかもしれない
- USBにさす
- 認識しているか確認する
- dmesg | less
- メーカー名や製品名がログに上がってきている
- 認識していれば、その後に sdb の sdb1 で認識したことが出てきている。
- mountする
- mount -v vfat /dev/sdb1 /mnt/tmp
syslog-ng で大量のログが出る†
- TL11sで発生した
- 非常に迷惑である。
Mar 4 15:45:39 Hibaru2 syslog-ng[1748]: Log statistics; processed='center(queue
d)=24638', processed='center(received)=24671', processed='destination(d_boot)=91
', processed='destination(d_auth)=26', processed='destination(d_cron)=1150', pro
cessed='destination(d_mlal)=0', processed='destination(d_mesg)=23204', processed
='destination(d_cons)=0', processed='destination(d_spol)=0', processed='destinat
ion(d_mail)=167', processed='source(s_sys)=24671'
- syslogの報告のようであるが、ログを圧迫して非常に見づらい。
- vi /etc/syslog-ng/syslog-ng.conf
options {
stats(0);
};