#author("2018-11-15T17:05:59+00:00","","") #author("2018-11-16T14:18:20+00:00","","") #topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#a8107e23] #ls2(System/); #contents /////////////////////////////////////////////////////////////////////////////// * CPU暴走対策 [#ie137ee4] ** htt_server (仮名漢字変換サーバ) [#gc385158] - top で追えなくなっている場合もある - 次の方法で再起動する # /etc/init.d/iiim restart ** tracker-store [#l4c2bb98] - CPU のうち1個を 100% 前後消費する(top で監視していると時々 "100.1%" という数字が出るんだが何なんだあれは?σ(゚◇。)ゞ) - 無理。 $ renice 19 -p <PID> としても大して変化ない - kill するか、諦めるか、或いは修正されるのを待つ。 - nice 値は「 優先度の範囲は -20 (最高) から 19 (最低) 」 /////////////////////////////////////////////////////////////////////////////// * 特定のポート(socket)やファイルを使っているプロセスを調べたりkillする [#s3b2028e] - socketの場合: $ fuser -n tcp <port> ...で、そのportを使用するプロセスのPIDが分かる - ファイルの場合 $ fuser <file> で、以下のような書式で表示される。 USER PID ACCESS COMMAND <used-file>: <user-name> 21969 f.... gdb - -k を使うと、指定したファイルにアクセスしているプロセスをkillすることが出来る。-signal で指定しなければ、シグナルは SIGKILL が送られる。 /////////////////////////////////////////////////////////////////////////////// * Sound [#a72e7d30] ** RealPlayer 終了後、他の動画・オーディオプレーヤーが正常に動かない [#a0d5ca98] - しゃっくり状態(一瞬動き、一瞬止まる、の繰り返し)になった場合、pulseaudio のせいである可能性がある。&br; もし、 ps -u <ユーザ名> で pulseaudio のエントリが引っかかってくるようなら、 $ killall pulseaudio [RETURN] で直るかもしれない。&br; 本来、 # /etc/init.d/pulseaudio stop [RETUEN] で止まるべきである気がするのだが、この方法では停止出来ない。 /////////////////////////////////////////////////////////////////////////////// * ハードウェアのスペックを調べる [#oefab033] - システム情報は、基本的に /proc 以下を見れば分かるようになっている ** CPU [#r60501e7] # cat /proc/cpuinfo ** Memory [#f3e4522e] # cat /proc/meminfo /////////////////////////////////////////////////////////////////////////////// * 仮想コンソールの数の変更 [#eb376148] 仮想コンソールの数は、 /etc/inittab に、次のように記述されている。 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 数を減らす場合は、コメントにする。&br; 例えば、仮想コンソールの数を3つに減らしたい場合は、下3行をコメントに。 /////////////////////////////////////////////////////////////////////////////// * OOM-killer を止める [#of3b0151] - メモリ不足に陥ったときに、OOM-killerが勝手にプロセスを殺してしまうのを止めさせる。 - 以下のコマンドで止めることが出来る # sysctl -w vm.overcommit_ratio=99 # sysctl -w vm.overcommit_memory=2 - 状態を確認する # sysctl -a | grep overcommit - 起動時に毎回設定するには、 /etc/sysctl.conf を編集し、以下を設定する。 vm.overcommit_memory = 2 vm.overcommit_ratio = 80 /////////////////////////////////////////////////////////////////////////////// * ストレージ関連 [#tc348ec8] ** mount [#kfa1833c] vfatのパーティションを素でmountすると、日本語ファイル名が文字化けして読めなくなってしまう。&br; この場合は、mount のオプションで、 iocharset=euc-jp,codepage=932 を追加する。/etc/fstabに書くと、例えばこんな感じ: /dev/hda1 /webern vfat defaults,codepage=932,iocharset=euc-jp 0 2 ** デバイス上の不良ブロックを探す [#y2ac9433] *** badblocks を使う [#yb4860f6] # badblocks -b <block-size> -o <output-file> <device> |~option |~description | |-b <bloc-ksize> |ブロックサイズをバイト単位で指定する。 デフォルトは 1024 である。 | |-c <number-of-blocks> |ブロックをまとめて何個ずつテストするかを指定する。 デフォルトは 64 である。 | |-o <output_file> |指定されたファイルに不良ブロックのリストを書き出す。このオプションを指定しない場合、 badblocks は標準出力にリストを表示する。このファイルのフォーマットは、 e2fsck(8) や mke2fs(8) の -l オプションで使用するのに適している。| |-n |非破壊の読み出し/書き込みモードを使う。デフォルトでは、非破壊読み出しテストだけが行われる。&br;このオプションと -w オプションは一方しか指定できないので、同時に指定してはならない。| |-s |スキャンの進行状況を表示する。ブロックがチェックされるごとに そのブロックの番号を書き出す。| |-v |詳細な表示を行う。| |-w |書き込みモードでテストする。このオプションを指定すると、 badblocks はデバイスの各ブロックに、あるパターン (0xaa, 0x55, 0xff, 0x00) を書き込み、またそれを読み出して比べることにより、不良ブロックを探索する。&br;このオプションを -n オプションと組み合わせて使うことはできない。&br;この 2 つのオプションはどちらか一方しか指定できない。| *** ddrescue を使う [#a80777c7] - Debian6 でのパッケージ名は "ddrescue"、但しコマンドは "dd_rescue" # dd_rescue /dev/sdb2 - > /dev/null - Debian7 では、パッケージ名が "gddrescure"、コマンド名は "ddrescure" に変更になっている。 ** USB接続の外部ドライブからDVDを扱う [#n624ee6f] - デバイスは、 /dev/sr0 - mount # mount /dev/sr0 -t udf /mnt/dvd0 ** 空のイメージファイルを作る [#f957713d] - ファイルの作成 $ dd if=/dev/zero of=作成するイメージファイル bs=1 count=1 - ファイルシステム(必要なら) $mkfs -t <フォーマット> -F <イメージファイル> ** IDE HDDのパフォーマンスチューニング [#g4b61168] - [[IDE HDDのパフォーマンスチューニング>System/HDD/IDE/チューニング]] /////////////////////////////////////////////////////////////////////////////// * ファイルシステム [#g48e76b1] ** 消失ファイルの回復(ext2/ext3) --- debugfs [#d4d06060] # debugfs -w /dev/sdb2 debugfs 1.39 (29-May-2006) debugfs: <-- プロンプトが表示される。ここへコマンドを入力する。 - debugfsのコマンド |~Command |~Description | |lsdel | 削除した iノードの一覧を表示する | |stat <<no>> | ファイルのサイズや最終更新時間を表示する | |q[uit] | debugfsを終了 | - debugfsを起動するときは、対象となるパーティションはumountしておく必要がある ** 強制物理フォーマット [#q2ba6e92] - 空のデータを書き込んで、回復不能にする + 当該領域のファイルをすべて削除する + dfで、当該領域のブロック数を調べる + 空データを書き込む 対象パーティション: /dev/sdx1 対象パーティションのマウント先: /mnt/target 対象パーティションのサイズ(dfで調べたもの): xxx ...とすると # dd if=/dev/zero of=/mnt/tatget/null.iso bs=1 count=xxx /////////////////////////////////////////////////////////////////////////////// * アカウント管理 [#s677e1c8] ** ユーザ・グループの追加・削除 [#v199038f] - ユーザ追加 /usr/sbin/useradd /usr/sbin/adduser --> /usr/sbin/useradd # Debianでは別バイナリだが、RHELでは、adduserはuseraddのSymLinkになっている -- Debian の場合 --- adduser <user-name> : ホームディレクトリ /home/<user-name> は自動で作られる。対話的に本名やパスワードなどを設定する --- useradd <user-name> : ホームディレクトリ /home/<user-name> は自動で作られる。対話的なシーケンスはなく、パスワード等は別途設定する必要がある。 -- Ubuntu の場合、 --- adduser <user-name> : ホームディレクトリ /home/<user-name> が自動で作られる --- useradd <user-name> : ホームディレクトリは作成されない(daemon の実行ユーザか、ログインさせないユーザを作成する用途向けか?)。 - ユーザ削除 /usr/sbin/userdel |~option |~description | |-r |対象ユーザのホームディレクトリ、メールスプールも削除する。&br;但しその他の場所にあるユーザのファイルは手作業で探して消さなければならない| - グループ追加 /usr/sbin/groupadd [-g gid [-o] [-f] ] group |~option |~description | |-g |新規グループのGID。&br; -o が指定された場合を除き、他のグループと値が重複してはならない | -- debian にある /sbin/addgroup は、 /usr/sbin/adduser へのSymLinkになっている。 - グループ削除 /usr/sbin/groupdel <group> -- group に対応するすべてのエントリを削除する。指定されたグループは存在していなければならない。 -- 全てのファイルシステムに、 指定したグループの ID を持つファイルが残っていないことを、 手作業で確認しなくてはならない。 -- 存在するユーザの主グループを削除してはならない。 グループを削除する前にそのユーザを削除しなければならない。 ** ユーザ情報の変更 [#xebe3ccd] - usermod - ユーザアカウントを修正する usermod [-c comment] [-d home_dir [-m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group [,...]] [-l login_name] [-p passwd] [-s shell] [-u uid [-o]] [-L|-U] login |~option |~description| |-c <comment> |パスワードファイルのコメントフィールドに与える新しい値。 通常は chfn(1) ユーティリティによって変更される。| |-d <home_dir> |新しいログインディレクトリ。 -m オプションを用いると、 現在のホームディレクトリの中身が新しいホームディレクトリに移動される&br;(後者が存在しない場合は新たに作成される)。| |-e <YYYY-MM-DD> |そのユーザアカウントが使用不能になる日付。| |-f <YYYY-MM-DD> |パスワードの使用期限が切れてからアカウントが永久に使用不能になるまでの日数。&br;0にすると、パスワードの期限が切れると同時にこのアカウントは使用不能になる。 -1 にするとこの機能が無効になる。デフォルト値は -1。| - chfn - ユーザの氏名や情報を変更する。 /usr/bin/chfn [-f <full-name> ] [-r <room-no> ] ... [user] -- chfn は、いずれのオプションも指定されないと chfn は対話的に動作する。 -- オプションを指定しなかった場合、 chfn は現在のユーザアカウントに対して動作する。 -- 一般ユーザは、自身のアカウントに対してのみ実行出来る。 ** ユーザのログインシェルの変更 [#b0fb6169] /usr/bin/chsh - 一般ユーザの場合、選択するログインシェルは、 /etc/shells に記述されている必要がある。が、スーパーユーザの場合はその限りでない。 /////////////////////////////////////////////////////////////////////////////// * strace [#d6b8f3a7] /////////////////////////////////////////////////////////////////////////////// * パスワードを忘れた場合の対応 [#d62dba48] まずはインストーラのsecureモードでrootパスワードの変更を試みる。 ** インストーラ [#s3bea9de] ** インストーラが使えない場合 [#p3f5ee0b] grub メニュー "e" を入力 kernel 2.6.**** (つまり、使うカーネル)にカーソル合わせる "e" を入力 kernel 2.6.**** root=/dev/sda1/ ro quiet Linux single init=/bin/sh mount -o remount,rw / # これはどこでやったらいいのか要確認。 "b" を入力 /////////////////////////////////////////////////////////////////////////////// * grubが他の起動可能なOSのパーティションを認識しないとき。 [#a0cac067] - root で以下を実行すると認識するようになる。 # grub-setup <device> <device> は、 /dev/sda など、認識し直したいストレージを指定する。 -- grub-setup は、デフォルトではインストールされない。使用するには grub-pc パッケージをインストールする必要がある。 - [[jlug.ml.debian.users WindowsXPとSqueezeをデュアルブートした際のG RUBの対処>http://groups.google.com/group/jlug.ml.debian.users/browse_thread/thread/5420c3979cc70735]] /////////////////////////////////////////////////////////////////////////////// * /proc [#p3fc7294] ** /proc/[pid]/cmdline [#ja47e75c] - プロセスの完全なコマンド行を保持する。 - そのプロセスがゾンビプロセス の場合は、このファイルは空となる。つまり、このファイルを読み出しても一文字 も返らない。 - このファイルではコマンドライン引き数が、 NULL バイト ('\0') で区切られた文字列として書かれており、 最後の文字列の後に NULL バイトが一つ置かれる。 /////////////////////////////////////////////////////////////////////////////// ** 指紋認証 [#y4e0df82] + pam の install # aptitude install libpam-fprintd fprintd + /usr/share/polkit-1/actions/net.reactivated.fprint.device.policy の編集 -- net.reactivated.fprint.device.verify <action id="net.reactivated.fprint.device.verify"> <description>Verify a fingerprint</description> <description xml:lang="ar">أكّد البصمة</description> ・・・ <defaults> <allow_any>no</allow_any> ← ここの "no" を "yes" に書き換える <allow_inactive>no</allow_inactive> <allow_active>yes</allow_active> </defaults> </action> -- net.reactivated.fprint.device.enroll <action id="net.reactivated.fprint.device.enroll"> <description>Enroll new fingerprints</description> ・・・ <defaults> <allow_any>no</allow_any> ← ここの "no" を "yes" に書き換える <allow_inactive>no</allow_inactive> <allow_active>yes</allow_active> </defaults> </action> + 指紋の認証 $ fprintd-enroll [ユーザ名] /////////////////////////////////////////////////////////////////////////////// * Links [#xa7f2d97] - [[Linuxサーバ運用マニュアル 第6話「リソースをチェックしよう!」>http://ash.jp/linux/unyo/06.htm]] - [[HDDベンチマーク手順+性能測定結果一覧>http://plaza18.mbn.or.jp/~moriban/linux/HardDiskPerformance.html]] - [[Kernel Watch>http://www.atmarkit.co.jp/flinux/index/indexfiles/watchindex.html]] - [[第9章 システムに関するティップ (debian.org)>https://www.debian.org/doc/manuals/debian-reference/ch09.ja.html]]