* [[Linux TIPS]] #contents ** ユーザ ユーザと追加するときはユーザidを設定して追加しましょう。移行のときとかめんどくさい... useradd hoge ユーザ追加 useradd -u 100 -g 50 -m -d /home/hoge1 -s /bin/bash hoge1 -mでディレクトリの作成 -s /bin/falseにするとログイン不可のアカウントになります。 pw useradd -g hogegroup -d /dev/null -s /bin/false -n hogeuser freebsdの時 passwd hoge パスワード設定 userdel hoge ユーザ削除 groupadd hoge グループ追加 pw groupadd -n hoge freebsdの時 gpasswd -a hogeuser hogegroupe グループにユーザを追加 passwdでパスワードを変更できるが、/et/shadowと整合性が取れていないときには、エラーになる。(Authentication token manipulation error) このときはpwconvで整合性をとる。~ shellは /etc/shells で指定されているものをしているする。~ 一括でユーザを登録したい場合は、適当にファイルを作成し、 emacs test.user 中身 hogeuser1:hogepass1:1101:1101:hogeu1:/home/hogeuser:/bin/bash hogeuser2:hogepass2:1102:1102:hogeu2:/home/hogeuser:/bin/bash2 として、(左からユーザ,グループ,uid,gid,備考,ホーム,シェル) newusers test.user 一括でパスワードを登録したい場合は、適当にファイルを作成し、 emacs test.pass 中身 hoge1:hogepass hoge2:hogepass2 として、 chpasswd < test.pass で読み込ませます。 もしくは printf "hogepass1\n"|passwd --stdin hoge1 printf "hogepass2\n"|passwd --stdin hoge2 ** acl [[特集:Linuxカーネル2.6で実現するACL (1/5)>http://www.itmedia.co.jp/enterprise/0403/06/epn01.html]] ** psで端が切れる wをつけてやります。 ps auxw -H それでもだめな場合はさらにw -Hはツリー上に出力~ ちなみに特定のプロセスだけ抜き出す場合は、 ps aux |grep httpd とかしますが、 ps aux |grep [h]ttpd はちょっと感心した。~ ちなみにVSZ(Virtual Set Size)は、仮想メモリで、RSS(resident set size)が実メモリです。~ またSTATは(どこからか引用) D 割り込み不可能なスリープ状態 (通常 IO 中) R 実行中または実行可能状態 (実行キューにある) S 割り込み可能なスリープ状態 (イベントの完了を待っている) T ジョブ制御シグナルまたはトレースされているために停止中の状態 W ページング状態 (2.6.xx カーネルからは無効) X 死んだ状態 (見えるべきではない) Z 終了したが、親プロセスによって回収されなかった、消滅した (ゾンビ) プロセス BSD 形式で stat キーワードが用いられたときは、以下の添付文字が表示されることがある。 < 優先度の高いプロセス (他のユーザーに対して良くない) N 優先度の低いプロセス (他のユーザーに対して良い) L 実メモリのページをロックして利用している (リアルタイム処理やカスタム IO 向け) s セッションリーダ l マルチスレッド化されている (NPTL pthreads が行うように、CLONE_THREAD が使われている) + フォアグラウンドのプロセスグループに含まれている ** su Switch Userの略。 su - hoge suの後ろに-をつけることにより、環境変数を引き継ぎ、hogeユーザになる。 ** yes yesやyとか入力を何回も求められてめんどくさい場合は、 yes | hoge また yがデフォルトになっているだけなので、 yes no | hoge とかすればnoが入力されていく ** コピー,削除 cp -rp ディレクトリ1 ディレクトリ2 <-- pで属性を維持 cp -a こっちのほうが楽。 rm -fr ディレクトリ <-- rで再帰的に削除 FreeBSD cp -R ディレクトリ1 ディレクトリ2 http://www.jp.freebsd.org/man-jp/search.html~ 削除するときに /bin/rm: 引数リストが長すぎます とか出た場合は、ファイルの数が多くて、OSの制限にひっかかってますので、 ls | xargs rm として消してやりましょう。コピーの場合は、 ls *.* |xargs -i cp -a {} /hogepath 日付を指定してコピーしたりするとき touch -t 200902010000 /work/oldstamp touch -t 200902020000 /work/newstamp find ./ -newer /work/oldstamp -and ! -newer /work/newstamp -exec cp {} /work/test/{} \; ** iノード df -i で使用している割合が参照できます。まだ枯渇したことはないですが、注意しましょう。 [[ITmedia エンタープライズ : Linux Tips「iノードってなに?」>http://www.itmedia.co.jp/help/tips/linux/l0144.html]] ** network - ネットワークカード再起動~ /etc/sysconfig/network-scripts/ifcfg-eth*のファイルでONBOOT=yesとなってる場合は /etc/rc.d/init.d/network restart もしくは、 ifdown eth0 ifup eth0 ホスト名変更は、 /etc/hostsと/etc/sysconfig/network~ デフォルトゲートウェイ変更は/etc/sysconfig/network~ DNSの変更は/etc/resolv.conf search hoge.domain nameserver 192.168.1.1 DHCPは/etc/sysconfig/network-scripts/ifcfg-eth0を編集する。またゲートウェイもとってきている場合は、/etc/sysconfig/networkのGATEWAY=192.168.1.1も消しておきましょう。 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes TYPE=Ethernet 固定IPの場合は、 DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 IPADDR=192.168.1.2 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes TYPE=Ethernet ** 1 つのネットワークインターフェースに複数の IP アドレスを割り当てる ifconfig eth0:0 192.168.100.190 netmask 255.255.255.0 broadcat 192.168.100.255 自動起動したい場合は、/etc/rc.d/rc.localにでも追加しておいてください。またあるホスト(例:192.168.1.1)にこのeth0:0を使いたい場合は、 route add -host 192.168.1.1 dev eth0:0 ** ssh ssh -i .ssh/ninsyou hogeuser@192.168.1.1 **glibcのバージョン /lib/libc.so.6 **wget http://www.gnu.org/software/wget/wget.htmlからダウンロード ./configure make make install ** 稼動中のサービスが知りたい service --status-all ** リソース確認(CPU使用状況、メモリ等) topコマンドを使う。 -dでスクリーンを更新する間隔を指定 立ち上げている際に、 [space] 表示更新 M メモリ利用順にsort T 時間順にsort P CPU利用率順でsort A 新しい順にsort k プロセスをkill [[TOP>http://www.linux.or.jp/JM/html/procps/man1/top.1.html]] フィールドの説明とか~ http://www.7key.jp/computer/top.html~ http://www.math.kobe-u.ac.jp/~kodama/tips-free-memory.html ** CPU、搭載メモリを調べる cat /proc/cpuinfo cat /proc/meminfo ** ホスト名変更 /etc/sysconfig/networkを修正します。ついでに/etc/hostsも。その後 /etc/rc.d/init.d/network restart もしくは hostname xxx.ffff.yyy dnsdomainnameでドメイン確認 ** grep テキストファイルからある文字を抜き出したいとき grep kensakusitaimoji hoge.txt [[find/grep/xargsコマンドを使いこなす業務で楽するためのUNIXテクニック集「検索」編 >http://codezine.jp/article/detail/3279]] **システム起動時に実行させたい /etc/rc.localに記述しておきます。起動の順番として、 inittabファイルを参照しながら、 # System initialization. si::sysinit:/etc/rc.d/rc.sysinit より、/etc/rc.d/rc.sysinitを起動します。 id:3:initdefault: とあれば、 l3:3:wait:/etc/rc.d/rc 3 で/etc/rc.d/rc3.dの最初がSのファイルが実行されます。その後/etc/rc.localが実行されます。ではログインですが、 /etc/profile ~/.bash_profile ~/.bash_login ~/.profile になりますので、必要な場所に書きましょう。 [[Linux起動の仕組みを理解しよう[init/inittab編]>http://www.atmarkit.co.jp/flinux/rensai/theory10/theory10a.html]]~ [[Linuxの起動と起動スクリプト >http://www.geocities.co.jp/SiliconValley-Cupertino/9120/startup.html]]~ ** tcpdump 送受信するパケットの情報がみえます。 tcpdump dst port 80 and src host 192.168.1.1 #送信元192.168.1.1からポート80に対してのダンプを取得する場合 参考:http://itpro.nikkeibp.co.jp/article/COLUMN/20070403/267311/ ** カーネルの情報 uname -a ** サービスの登録 chkconfigを使います。/etc/init.dのファイルを登録します。そのファイルでは # chkconfig: 345 80 15 とか記述しておいてください。345はランレベルです。 chkconfig --level 345 httpd on ちなみに /sbin/service --status-all で/etc/init.dのディレクトリ以下に起動スクリプトをもつサービスの状況を表示します。 ** バックグラウンドで動かす hoge & で実行する。確認は jobs フォアグランドにするには fg ** yum 強制 まず、 yum install yum-utils で、 yumdownloader hoge; これでrpmが取得できるので、後は rpm -ivh --force hoge.rpm ** RPM rpmを探しているときhttp://rpm.pbone.net/で探していました。インストール時のオプションは、 -v インストール/アンインストール時の情報表示オプション。-hオプションと一緒に使うと良い。 #rpm -ivh hoge.rpm -h インストール/アンインストールする際に '#' で表示します 情報表示オプション「-h」と一緒に使うと良い。 #rpm -ivh hoge.rpm その他問い合わせオプションコマンド -q パッケージがインストールされているかの問い合わせ。 インストールされていれば、バージョンも表示される。 #rpm -q hoge -qi パッケージ情報をより詳細に表示する。 #rpm -qi hoge -qs インストール先表示 #rpm -qs hoge -qa インストールされている パッケージをすべて表示 #rpm -qa -qf 特定のファイルがどのパッケージの物なのかを調べるオプション。 #rpm -qf /root/.Xdefaults -help RPMヘルプ参照。 #rpm --help -version 使用している rpm のバージョンを表示します。 #rpm --version -i 新規インストールオプション。 新規のみ許可、既にインストールされている場合はインストールされない。 #rpm -i hoge.rpm -U アップグレードオプション。 アップグレード用のチェックをして、既存のパッケージが無くてもインストールされる。 #rpm -U hoge.rpm -F アップグレードオプション。 アップグレード用のチェックをして、既存のパッケージがある場合のみインストールされる。 #rpm -F hoge.rpm -e アンインストールオプション。 #rpm -e mozilla ** TAR - tarで圧縮・解凍 -- 圧縮 # tar -cvf <圧縮ファイル名> <ターゲットファイル> # tar -cvf access_log01.tar /usr/local/apache/logs/access_log.* これは、/usr/local/apache/logs/access_log.*をaccess_log01.tarと言うファイルに圧縮する。と言う意味である。カレントディレクトリに作られる。tarは、圧縮と言うよりファイル連結のようなコマンドである。 -- 解凍 # tar -xvf <解凍したいディレクトリ> <圧縮ファイル名> # tar -xvf /var/log/ /usr/local/apache/logs/access_log01.tar これは、/usr/local/apache/logs/access_log01.tarの圧縮ファイルを/var/log/へ解凍する。 - tarファイルをZ形式(コンプレス)で圧縮・解凍 -- 圧縮 # compress <ターゲットファイル> # compress access_log01.tar これは、access_log01.tarファイルを圧縮する。結果的に、access_log01.tar.Zと言う圧縮ファイルが出 来る。 -- 解凍 # uncompress <ターゲットファイル> # uncompress access_log01.tar.Z これは、access_log01.tar.Zと言う圧縮ファイルをaccess_log01.tarと言うファイルに解凍する。 この場合は、カレントディレクトリに解凍される。この場合、access_log01.tar.Zと言う圧縮ファイルは 無くなる。 - tarファイルをgz形式で圧縮・解凍 -- 圧縮 # gzip <ターゲットファイル> # gzip access_log01.tar これは、access_log01.tarファイルを圧縮する。結果的に、access_log01.tar.gzと言う圧縮ファイルが出 来る。 -解凍 # gunzip <ターゲットファイル> # gunzip access_log.tar.gz これは、access_log01.tar.gzと言う圧縮ファイルをaccess_log01.tarと言うファイルに解凍する。 この場合は、カレントディレクトリに解凍される。この場合、access_log01.tar.gzと言う圧縮ファイルは 無くなる。 - tar.gzファイルをtarコマンドを使って一気に解凍する。 # tar -zxvf <ターゲットファイル> # tar -zxvf access_log01.tar.gz これは、access_log01.tar.gzと言う圧縮ファイルをaccess_log.*の元ファイルに全て解凍する。 この場合は、カレントディレクトリに解凍される。 # tar -zxvfC access_log01.tar.gz /tmp これは、access_log01.tar.gzと言う圧縮ファイルを/tmpディレクトリへ解凍する。 - tar.Zファイルをzcatコマンドを使って一気に解凍する。 # zcat <ターゲットファイル> | tar xvf - # zcat access_log01.tar.Z | tar xvf - これは、access_log01.tar.gzと言う圧縮ファイルをaccess_log.*の元ファイルに全て解凍する。 この場合は、カレントディレクトリに解凍される。 **zip 解凍 unzip hoge.zip 圧縮する場合は、 zip hoge.zip hogefile ディレクトリごと圧縮する場合は zip -r hoge.zip hogedir パスワード付き zip -P password -e test.zip *.* ** CtrlとCapsを入替 /etc/X11/XF86Config-4の # Option "XkbOptions" "ctrl:swapcaps" の#をとります。fedoraの場合は、xorg.conf ** 起動しない MIRACLE LINUXの場合ですが、インストールCDを入れて boot: linux rescue とします。そのままメッセージにしたがって進めていくと、プロンプトがでてきますので、/mnt/sysimageにルートがいます。 またsingleやemergencyでの起動も試しましょう。 boot: linux single boot: linux emergency http://www.redhat.co.jp/manual/Doc80/RH-DOCS/rhl-cg-ja-8.0/s1-rescuemode-booting-single.html~ FreeBSDの場合では、 single user modeであげて、 boot -s デフォルトのシェルを聞かれるので、デフォルトでよければenter。read onlyでマウントされているので、 mount -u / 読み書き可能でrootをマウント mount -a -t ufs /etc/fstabの内容をマウント swapon -a スワップを有効にする [[FC4/FAQ/シングルモードで動作させるには?>http://pocketstudio.jp/linux/?FC4%2FFAQ%2F%A5%B7%A5%F3%A5%B0%A5%EB%A5%E2%A1%BC%A5%C9%A4%C7%C6%B0%BA%EE%A4%B5%A4%BB%A4%EB%A4%CB%A4%CF%A1%A9]]~ **パーティションサイズ変更 http://ftp.gnu.org/gnu/parted/からparted-1.6.19.tar.gzをダウンロードしました。解凍後 ./configure make; make install http://www.atmarkit.co.jp/flinux/rensai/linuxtips/461useparted.html~ http://www.atmarkit.co.jp/flinux/rensai/linuxtips/462partedsfd.html~ http://nobumasa-web.hp.infoseek.co.jp/partition/parted/~ **バックアップ rsync rsync -avz --delete /home/test/ filesrv:/home/backup/ -a : ファイルの属性などの情報を保ってコピーする -c : checksum を使う -u : より新しければ、更新しない -z : ファイルを圧縮しながら転送する -v : 転送情報を詳しく表示 -q : 転送情報を表示しない --delete : 転送元のディレクトリにはないが、転送先のディレクトリにあるファイルを削除する --exclude: 転送元のディレクトリのうち、転送しないファイルを指定する ネットワーク越しにやるときは、バックアップ先のマシンに/etc/xinet.d/rshを起動しておいてください。 ここで/home/test/とすると/home/test/以下のファイルがコピーされ、/home/testとするとtestを含んでコピーされます。~ 参考:[[rsyncを使った熟練者レベルのバックアップ>http://www.itmedia.co.jp/enterprise/articles/0707/19/news059.html]] dar 完全、差分、増分バックアップができ、サイズを指定できるので、CD-R等に納めることができたり、あるファイルのみをリストアできたりと多機能なツールです。 そもそもこの完全、差分、増分とは 完全バックアップ:その名の通りすべてバックアップです。 差分バックアップ:完全バックアップ後にそれ以降は完全バックアップしたもに対しての差分をバックアップします。 そのため、時間がたつにつれてどんどん差分が大きくなっていきます。 増分バックアップ:完全バックアップ後に直前のバックアップに対しての増分をバックアップします。ですので、容量自体は大きくならないですが、 すべての増分がないとリストアできません。 http://dar.linux.free.fr/からダウンロードします。 wget http://downloads.sourceforge.net/dar/dar-2.3.2.tar.gz?modtime=1162240068&big_mirror=0 tar xzvf dar-2.3.2.tar.gz cd dar-2.3.2 ./configure make あら? /lib/libattr.a: No such file or directory とエラーがでました。http://dar.linux.free.fr/doc/FAQ.htmlに従って、 ln -s /usr/lib/libattr.a /lib/libattr.a として、再度makeするとうまくいきました。では再開 make install-strip これでおわりです。 Commands are: -c creates an archive -x extracts files from the archive -d compares the archive with the existing filesystem -t tests the archive integrity -l lists the contents of the archive -C isolates the catalogue from an archive -+ merge two archives / create a sub archive ではバックアップです。 dar -c /backup/homeall -g home /backupがバックアップ先のディレクトリで、homeがバックアップの対象です。/homeとすると、 Parse error on command line (or included files): Cannot add an absolute path となり、エラーになるので相対パスで指定します。このhomeallはbasenameでこの名前をベースネームとしてバックアップが作成されます。 実行すると homeall.1.dar とbasenameでファイルが作成されます。では差分です。 dar -c /backup/homeall-1 -g home -A /backup/homeall homeall-1が差分basenameで、backup/homeallが完全バックアップのbasenameです。実行すると homeall-1.1.dar で作成れます。ではリストア dar -x /backup/homeall とするとカレントディレクトリにリストアされます。差分も同じです。あるファイルのみリストアしたい場合は、 dar -x /backup/homeall -g home/hoge.txt です。圧縮するときは -zでgzip -y でbzip2です。 コピー cp -ar /var/lib/mysql/*** /home/backup cp -ar /home/httpd/html /home/backup dump #二日前のファイルを削除 find /backup -mtime +1 -maxdepth 1 -name '*.zip' -exec rm -f {} \; #バックアップ実行 /sbin/dump -0f - /dev/hda1 2>> /backup/backup.log | gzip > /backup/hda1_`date +%m%d`.zip #圧縮しな場合 dump -0f /backup/backup /dev/hda1 #リストア zcat /backup/hda7_0307.zip | restore -tf - z ユーザデータは/etcの passwd group shadow をとっておきましょう。 http://www-6.ibm.com/jp/developerworks/linux/040213/j_l-roadmap8.html~ http://vision.featia.net/linux/rsync.jsp~ http://www.double-h.com/linux/tipsmemo/others/general01.html~ http://www.mediaweb.biz/database/cobalt_tips/cobalt_rsync.html~ http://ito-web.dip.jp/server_conf/mondo_rescue.html~ [[Linuxをシステムバックアップ>http://omoshiro-joho.com/tech-center/cgi-bin/wiki/index.php?Linux%A4%F2%A5%B7%A5%B9%A5%C6%A5%E0%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7]]~ **ls コマンドでディレクトリのみを表示する方法 できなかったけ? find . -type d これでみえるんだけど... **サブディレクトリ以下も権限を変えたい たとえば、拡張子phpをすべて555にしたい場合は、 find . -name "*.php" -exec chmod 555 {} \; ** 簡単バックアップ cp -a /hoge /backup/hoge`date +%w` これをcronに登録しておきます。すると1週間バックアップされます。%dであれば一ヶ月です。 **ディスク増設 http://www.a-yu.com/opt/fdisk.html~ http://www.deer-n-horse.jp/linux/tips/extension_hdd.html~ **cron 各フォルダに実行ファイルをおきます。/etc/crontabの中身参照 分 時 日 月 曜日 実行者 実行オプション 実行コマンド 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly 最後はリターンで。run-partsを指定すると、ディレクトリ内にあるファイルをアルファベット順に実行してくれます。 /etc/cron.hourly 毎時:01分に自動実行 /etc/cron.daily 毎日:04時02分に自動実行 /etc/cron.weekly 毎週:日曜:04時22分に自動実行 /etc/cron.monthly 毎月:1日:04時42分に自動実行 分 0 - 59 ex. */15(15分毎) 時 0 - 23 ex. 0-4,8-12 日 1 - 31 ex. 1-20,25 月 1 - 12 ex. 1,6,12 曜日 0 - 7 0と7は日曜日 5分毎に実行 0-59/5 * * * * /test 該当する項目にカンマで区切って複数の数値を指定すると、その値ごとに実行される。たとえば次の例では10分ごとに実行される。 0,10,20,30,40,50 * * * * 以下のように指定すると、毎日5時~5時59分の1分ごとといった指定が可能。 * 5 * * * /var/log/cron に、crond[xxxx]: (tmp.2081) ORPHAN (no passwd entry) というエラーが出ていました。これは/var/spool/cronにごみがいたみたいで、消しておきました。 各個人用には/var/spool/cronの配下に作成します。 また run-parts /etc/cron.hourly で/etc/cron.hourly以下のファイルが実行されます。このとき、拡張子があるファイルが無視されてたので、拡張子を消すと動いた。あと#/bin/shを書いておかないとexec format errで落ちたこともありました。 /etc/cron.allowがある場合は、rootのみ実行されます。中にユーザが設定されている場合はそのユーザとrootです。 http://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html **fstab /etc/fstabで起動時に設定しているとマウントしてくれます。fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passnoで、例を挙げると LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 fs_mntops defaults:rw、suid、dev、exec、auto、nouser、async などを用います auto:mount -a で、自動的にマウントされます noauto:mount -a で、自動的にマウントされません user:一般ユーザーによるマウントを可能 rw:読み取りと書き込み ro:読み取り専用 grpquota:グループ・クオータ usrquota:ユーザー・クオータ fs_freq 0 ダンプする必要が無い 1 ダンプする必要がある fs_passno 0 検査する必要が無い 1 検査する必要がある ** ディレクトリの容量がしりたい。 du -s dir オプションで-mはMバイト,-kはKバイト-bはバイト単位で表示します。サブディレクトリも表示されますが、総容量だけ知りたい場合は、-sをつけます。また df -k でマウント先の容量がわかります。 df -hT 見やすく表示します。 ** ディレクトリを一気につくりたい mkdir -p hoge/hoge/hoge ** メモリ free -s 1 -c 300 メモリの情報が指定した秒数で表示される。 この場合は、1秒間隔で、300秒間出力する。 total used free shared buffers cached Mem: 1018348 1002200 16148 0 91376 709944 -/+ buffers/cache: 200880 817468 Swap: 2031608 160 2031448 と表示さるとき、この-/+ buffers/cacheが実際に使用されている容量である。またwatchコマンドで継続的に表示することもできる。 watch -n 1 -d free この-nが秒間隔で、-dが異なっている部分をハイライトで表示してくれる。 vmstat 1 300 で、1秒間隔で300秒間、CPU,I/Oと併せて表示してくれます。 http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/230989/ **アンチウィルス [[BitDefender>http://www.bitdefender.com/bd/site/products.php?p_id=16]]からBitDefender-Console-Antivirus-7.0.1-3.linux-gcc29x.i586.rpmをダウンロードしました。後はrpm -ivhでインストールです。bdc --updateで定義ファイルを最新状態にします。また以下のコマンドでスキャンができます bdc --all --arc --delete --log=/var/log/bitdefendef.log /home ** nfk 文字コード変換 ない場合は、 wget http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/nkf204.tar.gz tar xzvf nkf204.tar.gz cd nkf204 make make test mv nkf /usr/bin/ 使い方は、たとえば、 find . -name '*.*' | xargs nkf -e -Lu --overwrite とすると、EUCに変換されます。引数ですが -e EUCコードに変換 -s シフトJISに変換 -w UTF-8に変換 -L 改行モード Luでunix(LF),Lwで(CRLF),Lmでmac(CR) ** パスワードの有効日数設定 chageを使います。 -l hoge hogeユーザの情報を表示 -M 10 hoge hogeユーザがパスワードを変更した後、変更が必要になるまで10日 -m 10 hoge hogeユーザがパスワードを変更した後、変更できるようになるまで10日 hoge 対話モードでhogeユーザの設定 一人ひとり設定するのはめんどくさい場合は、/etc/login.defsに設定しておく。 ** 開いているファイル調べる lsofを使います。 -u ユーザ -g グループ -i:80 80番ポートを開いてるプロセスを調べる -c http コマンドがhttpで始まるプロセスを調べる -i@192.168.1.1 192.168.1.1が開いているプロセスを調べる **制限をかける ulimitを使います。 -a 制限を表示 -m メモリ -v 仮想メモリ -u 1人のユーザが利用可能なプロセス数 -t cpu時間 ** RAMディスクのようにメモリを使う。 mount -t tmpfs -o size=10m tmpfs /dev/shm mount -t tmpfs -o size=10m /dev/shm /hoge 上限10MBのメモリのディスクを作成して、/hogeにマウントします。また常時使いたい場合は、/etc/rc.d/rc.localにでも記述しておきます。テンポラリでつかったり、もっと大きくとって、MySQLなどのDBをそっちに乗せて、高速化を図ったりしてみましょう。 **共有ライブラリを検索する場所 /etc/ld.so.confに記述する。ただし、/libと/usr/libは既定で登録されている為、設定はない。また編集後は、 /sbin/ldconfigで反映 ldconfig -p | grep hoge.so でキャッシュにあるかどうかを確認できる。 **文字コード /etc/sysconfig/i18n LANG="ja_JP.UTF-8" eucの場合 LANG="ja_JP.eucJP" 日本語(ja)で日本国。文字コードはEUC **nmap ポートを調査します。http://www.insecure.org/nmap/からダウンロードしました。 wget http://download.insecure.org/nmap/dist/nmap-4.20.tgz tar xzvf nmap-4.20.tgz cd nmap-4.20 ./configure make make install ** ポートを使っているプログラムを知りたい。 netstat -lutp lsof -i:80,81 http://x68000.q-e-d.net/~68user/unix/pickup?netstat や http://www.atmarkit.co.jp/flinux/rensai/linuxtips/664useportps.htmlを参考に~ netstatの詳細はhttp://www.linux.or.jp/JM/html/net-tools/man8/netstat.8.html~ ** ポートの状況 netstat -ape **ルートのみログインの許可をしたい。 マシンのメンテナンスをする場合等につかえます。/etc/nologinファイルを作成します。その中身はなんでもよく、とりあえずメッセージをいれておきます。するとroot以外ではログインできなくなります。また可能かどうかは/etc/pam.d/loginの中身を見てましょう。この中に auth required pam_nologin.so とあれば、ルートのみのログインが可能です。 **ログイン後にメッセージ表示 /etc/motdにメッセージを追加。通常0バイトのファイルである。 **configureのオプションを忘れてしまった... configureと同じ階層にconfig.statusというファイルがある場合、その中に記述がありますので、見てみましょう。 **make installしたソフトの管理 [[paco>http://paco.sourceforge.net/]]を使えば、rpmでなくても管理ができる! wget http://downloads.sourceforge.net/paco/paco-2.0.6.tar.gz?modtime=1223591447&big_mirror=0 tar xzvf paco-2.0.6.tar.gz cd paco-2.0.6 ./configure ありゃ?エラーだ checking for GTKMM... configure: error: The pkg-config script could not be found or is too old. Make sure it では、ftp://ftp.ring.gr.jp/pub/X/gnome/sources/gtkmm/2.4/より wget ftp://ftp.ring.gr.jp/pub/X/gnome/sources/gtkmm/2.4/gtkmm-2.4.8.tar.gz tar xzvf gtkmm-2.4.8.tar.gz cd gtkmm-2.4.8 ./configure む?今度は configure: error: Library requirements (glibmm-2.4 >= 2.4.0 atk >= 1.6.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them. んー とりあえずglibmmからいくか。ftp://ftp.ring.gr.jp/pub/X/gnome/sources/glibmm/2.4/より wget ftp://ftp.ring.gr.jp/pub/X/gnome/sources/glibmm/2.4/glibmm-2.4.8.tar.gz tar xzvf glibmm-2.4.8.tar.gz cd glibmm-2.4.8 ./configure 今度は、 configure: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. んーーー 無限地獄.. これLeopardでやっているんで、Linux等であれば、普通にいけるかも。 では、http://pkg-config.freedesktop.org/wiki/より wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz tar xzvf pkg-config-0.23.tar.gz cd pkg-config-0.23 ./configure make make install さてもう一度glibmmを ./configure エラーが変わったぞ。 configure: error: Package requirements (sigc++-2.0 >= 2.0.0 glib-2.0 >= 2.4.0 gobject-2.0 >= 2.4.0 gmodule-2.0 >= 2.4.0) were not met. では、ftp://ftp.ring.gr.jp/pub/X/gnome/sources/libsigc++/2.0/より wget ftp://ftp.ring.gr.jp/pub/X/gnome/sources/libsigc++/2.0/libsigc++-2.0.18.tar.gz tar xzvf libsigc++-2.0.18.tar.gz cd libsigc++-2.0.18 ./configure make make install ちょっと先は遠いなー 今度はCentでやってみよう。~ [["make install"したソフトウェアを管理できる超便利ツール「Paco」>http://d.hatena.ne.jp/rx7/20081011/p2]]~ [[link集/バージョン管理システム>http://www.nbrains.net/php/pukiwiki/index.php?Build%2FToytoiseSVN]]~ **ソフトウェアRAID インストール画面のディスクパーティションの設定でDisk Druidを使用して手動パーティション設定を選択し、 ファイルシステムタイプでソフトウェアRAIDを選択し、ハードディスクも選択して、まず作成していきます。 このとき、シリンダで分ける場合は、右端でダブルクリックすると、その画面で表示されます。 swapはそのままで作成しておきます。そうでなくてもかまいません。お好みで。 同じことをもう一本のHDDにも行い、その後でRAIDボタンを選択し、RAIDデバイスを作成をしていきます。 ではインストールが終わりましたらブートローダのコピーをしておきます。grubと入力して、 device (hd0) /dev/hdb root (hd0,0) install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf quit hdbではなくsdbの場合は device (hd0) /dev/sdb root (hd0,0) install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf quit それでは more /proc/mdstat で見てみましょう。 Personalities : [raid1] md0 : active raid1 hdb1[1] hda1[0] 104320 blocks [2/2] [UU] であればとりあえずOKです。 [2/2] [UU] となっていますが、 [2/1] [U_]となっていれば片方が動作していません。 壊れたらこんな感じのメールが... メールは/etc/mdadm.confで送信先を確認しておきましょう。 A Fail event had been detected on md device /dev/md3. さて2台目も同じようにやってみましたが、 Personalities : [raid0] [raid1] md0 : active raid0 hdb2[1] hda2[0] 131539968 blocks 256k chunks あれ?なんじゃこりゃ?失敗したのかな?ちょっと調査... どうも作成時にRAID0を選択してなかったようですね。raidtoolsを使おうとしたらないといわれました。どうも2.4までで、2.6からはmdadmを使うようです。 mdadm --query /dev/md3 /dev/md3: 48.83GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail. /dev/md3: No md super block found, not an md component. これでraid1で2つのデバイスより構成されていることがわかります。詳細にみるには mdadm --detail /dev/md3 Version : 00.90.01 Creation Time : Tue Jul 5 01:43:51 2005 Raid Level : raid1 Array Size : 40957568 (39.06 GiB 41.94 GB) Device Size : 40957568 (39.06 GiB 41.94 GB) Raid Devices : 2 Total Devices : 1 Preferred Minor : 2 Persistence : Superblock is persistent Update Time : Wed Jul 25 11:53:11 2007 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 UUID : 804f4246:8ee45dfb:61f65e69:124a6043 Events : 0.163354 Number Major Minor RaidDevice State 0 0 0 - removed 1 3 69 1 active sync /dev/hdb5 ここで、Stateにdegradedが表示されている場合は、障害が発生しています。んー しょがない。とりかえるか.... ということで、ディスク交換して、 fdisk -l /dev/hda でシリンダを控えておいて、 fdisk /dev/hdb でパーティションをhdaと同じようにふっていきます。後raidにしたいパーティションの種類をfd (linux raid auto) にして、最後wで書き込みして終わります。後は fdisk -l /dev/hdb で確認しておきます。さてここまではパーティションを作成しただけですので、raidに追加しましょう。 mdadm --manage /dev/md0 --add /dev/hdb1 mdadm --manage /dev/md1 --add /dev/hdb2 これで/dev/md0に追加されますので、 more /proc/mdstat で確認すると、新しいディスクにデータがコピーされている様子がわかります。 SoftwareDesignの2005/3月号に記事があります。本もでてますね。 [[Linux RAID入門>http://www.amazon.co.jp/exec/obidos/ASIN/4774130923/worried-22]]~ [[ソフトウェアRAIDに障害が発生した時の確認方法>http://max01.skr.jp/blog/2007/01/raid.html]]~ [[OSをRAID構成でインストール>http://www.obenri.com/_raid_build/pre_install_raid.html]]~ [[CentOS5をインストールしよう その2~インストール中にソフトウェアRAIDを構築しよう~>http://mizushima.ne.jp/Linux/CentOS/CentOS-install2-RAID.php]]~ [[ソフトウェアRAIDの導入>http://www.combu.org/gensui/machine/linux/raid.shtml]]~ [[ソフトウェアRAID1のつくりかた>http://justlikeakame.com/pc/softwareraid.html]]~ [[The Software-RAID HOWTO>http://www.linux.or.jp/JF/JFdocs/The-Software-RAID-HOWTO.html]]~ [[ソフトウェアRAIDの構築--パーティションの構築>http://www.atmarkit.co.jp/fpc/experiments/011raid4oldpc/raid4oldpc_04.html]]~ ** mount Windows2003 DCに対してマウントしたい場合。普通にやると、cli_negprot: SMB signing is mandatory and we have disabled itってなエラーが出たとき。 mount.cifs //192.168.1.10/test /mnt/test -o username=hoge,passwrd=hogepass じゃないWindowsの場合 mount -t smbfs -O username=hoge,password=hogepass //192.168.1.10/test /mnt/test ここでsmbfsがサポートされていない場合はcifsにしてみる。下記コマンドで使用できるファイルシステムを確認 cat /proc/filesystems nfs mount -t nfs 192.168.1.2:/ /mnt/hoge 参考:http://www.linux.or.jp/JM/html/util-linux/man8/mount.8.html ** パフォーマンス IDEのパラメータを調整します。 hdparm /dev/hda /dev/hda: multcount = 16 (on) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 19929/255/63, sectors = 163928604672, start = 0 このIO_supportでdefault 16-bitとなってますが、変更しましょう。まず hdparm -Tt /dev/hda で Timing cached reads: 2200 MB in 2.00 seconds = 1099.07 MB/sec Timing buffered disk reads: 164 MB in 3.00 seconds = 54.64 MB/sec を控えておきます。この、32bitに変更してみます。 hdparm -c3 /dev/hda いろいろと調整しみましょう。 参考:~ http://www.linux.or.jp/JM/html/hdparm/man8/hdparm.8.html~ [[Linuxのパフォーマンスを改善する3つのTips>http://www.itmedia.co.jp/enterprise/articles/0707/19/news012.html]]~ **ログアウトしてもプログラムを実行する。 nohup hoge & としますと、HUPシグナルを無視して実行してくれます。出力は~/nohup.outにされてます。 **コマンドやアプリケーションが、どんなライブラリをダイナミックリンクしているのか調べるには? ldd macの場合は otool -L **ディスクの負荷を調べたい。 sysstatをインストールします。 http://perso.wanadoo.fr/sebastien.godard/からダウンロードしました。 wget ftp://ibiblio.org/pub/linux/system/status/sysstat-6.0.1.tar.gz tar xzvf sysstat-6.0.1.tar.gz cd sysstat-6.0.1 make config とりあえずデフォルトでいきました。 make make install 面倒な場合は、 yum install sysstat では iostat また sar 1 5 とかするとCPUとIOの状況を一秒間隔で5回表示してくれたりします。 またmpstatというCPU 使用率を調べるコマンドもあります。 http://www.atmarkit.co.jp/flinux/rensai/root07/root07b.html **ハードディスクを調べる ハードディスクのセルフテスト shortで2分ぐらい smartctl -t short /dev/hda ログは smartctl -l selftest /dev/hda 温度を調べる smartctl -a /dev/hda を実行すると、 194 Temperature_Celsius 0x0032 042 253 000 Old_age Always - 44 と出力されるので、右端が温度 -aですべての情報が表示される。この194とう項目IDは http://ja.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technologyを参考に。また Device: /dev/hda, 1 Currently unreadable (pending) sectors こんなログがmessagesにでていたら、一度セルフテストを実行し、-a SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed: read failure 60% 17878 234152622 この234152622を確認します。 fdisk -lu /dev/hda Disk /dev/hda: 163.9 GB, 163928604672 bytes 255 heads, 63 sectors/track, 19929 cylinders, total 320173056 sectors Units = セクタ数 of 1 * 512 = 512 bytes デバイス Boot Start End Blocks Id System /dev/hda1 * 63 208844 104391 fd Linux raid 自動検出 /dev/hda2 208845 131749064 65770110 fd Linux raid 自動検出 /dev/hda3 131749065 234147374 51199155 fd Linux raid 自動検出 /dev/hda4 234147375 320159384 43006005 5 拡張領域 /dev/hda5 234147438 316062809 40957686 fd Linux raid 自動検出 /dev/hda6 316062873 320159384 2048256 82 Linux スワップ どうも/dev/hda5にあるようです。 [[不良セクタの解消>http://d.hatena.ne.jp/k3c/20060601/p2]] **Xlib: connection to "display:0.0" refused by server xhost + ホスト名 で追加してやりましょう。 **TCP転送 rinetdを使えばできるらしい。検証はしてません。 **bashで履歴操作 Ctrl+r とすると (reverse-i-search)`': って変わるので、文字を入力すると履歴を後方検索してくれます。逆はCtrl+sなんですが、 stty -a で確認すると、 stop = ^S; ってなってますんで、とまっちゃうので、 stty stop ^x とかに変更しておけばいいのですが、Ctrl+sを押すと (i-search)`': ってなります。 **configure: error: C++ preprocessor "/lib/cpp" fails sanity check yum install gcc-c++ **etc http://www.linuxworld.jp/etc/ **CPU情報 cat /proc/cpuinfo http://www-06.ibm.com/jp/developerworks/linux/030314/j_l-htl.html~ http://www-06.ibm.com/jp/developerworks/linux/040227/j_l-web26.html~ **カーネルパニック後の再起動? echo 30 > /proc/sys/kernel/panic **リカバリ用Linux リカバリに特化しているlinuxだそうです。[[RIPlinux>http://www.tux.org/pub/people/kent-robotti/looplinux/rip/]] **fedora8で解像度が変わらん! メニューのシステム>管理>ディスプレイから選択すると解像度が変わらないので、設定>ハードウェア>画面の解像度から変更すると変わりました。次ログインし直すと、やたら文字が大きくなっていたので、画面を右クリックして、背景の変更を選択し、フォントタブの詳細ボタンをクリックして、解像度の値を変更しておきました。 ** CentOS6.5 インストール時のパッケージ追加 インストールのときに種類を選んで「今すぐカスタマイズ」を選びます。~ その後パッケージグループを選びますが、そのままでは最小のパッケージしかインストールされません。~ chroot化されたBINDなどを最初からインストールしたい場合はパッケージグループを選んだ後「追加パッケージ」を押してパッケージグループの詳細から追加するパッケージを選びましょう。 ** CentOS6.5 インストール後のLVMサイズ変更 CentOS6をインストールするとLVMで/ディレクトリのサイズを小さく /homeディレクトリを大きく確保されてしまいます。 /dev/mapper/VolGroup-lv_root ext4 50G 47G 37M 100% / tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sda3 ext4 477M 61M 391M 14% /boot /dev/mapper/VolGroup-lv_home ext4 399G 20G 360G 6% /home rootが50GBでhomeが399GBです。 このままMySQL等を使用しているといつかこんな感じで怒られます。 got error 28 from storage engine なのでLVMのサイズを変更します。 今回はrootとhomeのサイズを逆にします。 ※必ずバックアップを取ってから作業しましょう!! 1.homeディレクトリアンマウント umount /home 2.ファイルシステムチェック fsck.ext4 -f /dev/mapper/VolGroup-lv_home e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/VolGroup-lv_home: 4190/26574848 files (0.5% non-contiguous), 6729788/106281984 blocks 3./homeファイルシステムサイズを50GBに変更 resize2fs /dev/mapper/VolGroup-lv_home 50G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/VolGroup-lv_home to 13107200 (4k) blocks. The filesystem on /dev/mapper/VolGroup-lv_home is now 13107200 blocks long. 4./home論理ボリュームを50GBに変更 lvreduce -L 50G /dev/mapper/VolGroup-lv_home WARNING: Reducing active logical volume to 50.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv_home? [y/n]: y ※データ破壊される恐れあるけど、本当にいいの?y Size of logical volume VolGroup/lv_home changed from 405.43 GiB (103791 extents) to 50.00 GiB (12800 extents). Logical volume lv_home successfully resized 5.ext4で/homeをマウント mount -t ext4 /dev/mapper/VolGroup-lv_home /home 6.ファイルサイズ確認 df -Th /dev/mapper/VolGroup-lv_root ext4 50G 47G 37M 100% / tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sda3 ext4 477M 61M 391M 14% /boot /dev/mapper/VolGroup-lv_home ext4 50G 20G 28G 42% /home 無事に50GBに変更されました。 次にrootディレクトリを拡張します。 1./root論理ボリュームを399GBに変更 lvextend -L 399G /dev/mapper/VolGroup-lv_root Size of logical volume VolGroup/lv_root changed from 50.00 GiB (12800 extents) to 399.00 GiB (102144 extents). Logical volume lv_root successfully resized 2./rootファイルシステムサイズを変更 resize2fs /dev/mapper/VolGroup-lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required old desc_blocks = 4, new_desc_blocks = 25 Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 104595456 (4k) blocks. The filesystem on /dev/mapper/VolGroup-lv_root is now 104595456 blocks long. 3.サイズ確認 df -Th /dev/mapper/VolGroup-lv_root ext4 393G 47G 327G 13% / tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sda3 ext4 477M 61M 391M 14% /boot /dev/mapper/VolGroup-lv_home ext4 50G 20G 28G 42% /home 無事に変更されました。~ 最後に一度再起動をして正常に起動できればOK~ インストール時に変更できれば変更しておくようにしましょう。 ** リンク ***[[コマンド集>http://itpro.nikkeibp.co.jp/linux/command/index.shtml]] ***[[ホームディレクトリの引越し>http://www.a-yu.com/pub/qa27.html]] ***[[ブートCD作成>http://www1.u-netsurf.ne.jp/~ysk-net/dest/Column/bootcd.html]] ***[[BashとBashのプロンプト>http://www.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO-2.html#ss2.5]] ***[[Linuxにデフラグが無い理由>http://www.geekpage.jp/blog/?id=2006/8/22]] ***[[Linux を電源ボタンで shutdown (by apmd)>http://www.nn.iij4u.or.jp/~tutimura/shutdown.html]] ***[[Linuxのネットワークで悩まない10のコツ>http://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20379256,00.htm]] ***[[第7回 Linux印刷システムの仕組みと設定>http://jibun.atmarkit.co.jp/lskill01/rensai/lpicdrill07/lpicdrill01.html]] ***[[Linuxにソフトウェアをインストールする際にやってしまいがちな失敗10選>http://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20380440,00.htm]] ***[[「実現したいことを計算機の問題に置き換えることが『技術力』」、伊藤CTOが“はてな流”大規模データ処理の極意を語る>http://codezine.jp/article/detail/3315]] 一読しておきましょう。 ** コメント --#comment