====== linuxの小技 ====== かゆいところに届きそうで届かない場合につかえそうな小技をまとめてみようかと思う。\\ 役に立つかたたないかは不明(w \\ ===== ネットワークを100M/FULL固定設定 ===== /etc/sysconfig/network-scripts/ifcfg-ethxファイルを開く 以下の1行を追加 ETHTOOL_OPTS="speed 100 duplex full autoneg off" ネットワークを再起動 service network restart ===== hosts.allowやdenyでDDNSドメインを制御する ===== ipから逆引きを行う関係でDDNSのドメインをそのままhosts.allowやhosts.denyに突っ込んでもちゃんと動いてくれない。\\ 当たり前だけど(^^;\\ 簡単な方法で正引きだけで制御する方法がないかとGoogle先生で調べると以下のサイトがHITした。\\ \\ http://d.hatena.ne.jp/kazuhooku/20080502/1209704193\\ \\ IPが書かれたファイルを読むことが可能なんだね。\\ このサイトではCRONでファイルに落としてるけど、『直接シェルスクリプト実行したらいいんじゃないの?』という神の声が聞こえてきたので試してみた。\\ \\ まずIP取得用のスクリプトを用意する。(/etc/ddns_ip.shとでもする)\\ #!/bin/sh /usr/bin/host ドメイン名 | awk '/has address/ {print $4}' 保存して終了\\ パーミッションを適切に設定して実行できるようにしといてね\\ \\ SSHの制限を行うのであれば以下のようにhosts.allowとdenyを編集します\\ ・hosts.allow  SSHD : /etc/ddns_ip.sh ・hosts.deny  SSHD : ALL 指定したドメインから正常に接続が出来るか確認します。\\ 接続出来なかった場合の事を考えて設定した時のSSHセッションは切らずに残しておくのが吉(w\\ ===== 特定ディレクトリのファイルを更新日付で消す方法 ===== なんちゃってプログラマがPHPでプログラム中にSESSIONを利用したのだが、/var/lib/php/session/(php.iniで指定可能)に保存されるsess_から始まるセッションファイルが削除されなくてどうしたものかと考えた挙句にCRONで一定時間毎に消すしか思いつきませんでした(^^;\\ \\ すぐに忘れると思うのでメモ\\ find /var/lib/php/session/ -name "sess_*" -exec rm {} \; ===== swap領域を増やそう!! ===== swap領域を増やす事はインストールの時にちゃんと考えてたら大丈夫なんだけど。。。\\ どうしても増やしたいって場合あるよね(w\\ そんな時は以下の手順で増やす事が可能。 # dd if=/dev/zero of=/var/swapfile bs=1024 count=2000000 上記の例だと/var/swapfileに2GBのSWAPファイルの枠を作成するって事だね。\\ 次にSWAPFILEをつくる # mkswap -v1 /var/swapfile これでSWAP領域は確保完了。\\ \\ じゃあ、SWAP領域としてマウントしてみよう # swapon /var/swapfile ちゃんとSWAP領域が増えてるかfreeコマンドなどで確認\\ \\ アンマウントする時は # swapoff /var/swapfile \\ SWAP領域は全部で8つまで持つことができるよ(^^)\\ \\ 毎回手動でマウントするのが面倒な時は・・・\\ /etc/rc.d/rc.localに以下のコマンドを追加 /sbin/swapon /var/swapfile もしくはfstabを編集する vi /etc/fstab /swapfile swap swap defaults 0 0 \\ ===== .htaccessで一部のディレクトリのみBasic認証を外したい場合 ===== 認証させたくないディレクトリに.htaccessを設置して以下の3行を書くだけでおっけー! Satisfy any order allow,deny allow from all \\ ===== isoファイルのmount ===== いつも忘れて他のサイトを探すので書いておこう(^^; mount -t iso9660 -o loop マウントするisoファイル マウントポイント ===== isoファイルの作り方 ===== そもそもisoファイルってどうやったら作れるのって方は読んでくださいね CD/DVDをドライブに挿入したらmount不要で以下のコマンドを実行 dd if=/dev/cdrom of=ファイル名.iso ほら、出来たでしょ(^^) ===== パスワード付zipファイル ===== zip -P パスワード -e ZIPファイル名 圧縮するファイルやフォルダ ===== ファイルの文字コード確認 ===== kccコマンドに-cオプションをつけて実行するとファイルの文字コードがわかる $ kcc -c ファイル名 ファイル名: EUC ===== 実行プロセスの確認方法 ===== psコマンドのオプションはかなりあるので必要に応じて組み合わせを変えてやらないと思ったように結果が表示されない。 実行中のプロセス一覧にオプションも表示させたい場合 # ps -axf | more ■実行結果 PID TTY STAT TIME COMMAND 1 ? Ss 0:11 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] (以下続く) 実行中のプロセスのCPUやメモリの使用率なども表示したい場合 # ps auz | more ■実行結果 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2068 612 ? Ss Aug17 0:11 init [3] root 2 0.0 0.0 0 0 ? S< Aug17 0:00 [migration/0] root 3 0.0 0.0 0 0 ? SN Aug17 0:00 [ksoftirqd/0] root 4 0.0 0.0 0 0 ? S< Aug17 0:00 [watchdog/0] root 5 0.0 0.0 0 0 ? S< Aug17 0:00 [events/0] root 6 0.0 0.0 0 0 ? S< Aug17 0:00 [khelper] root 7 0.0 0.0 0 0 ? S< Aug17 0:00 [kthread] root 10 0.0 0.0 0 0 ? S< Aug17 0:15 [kblockd/0] root 11 0.0 0.0 0 0 ? S< Aug17 0:00 [kacpid] root 78 0.0 0.0 0 0 ? S< Aug17 0:00 [cqueue/0] (以下続く) ===== ポート番号から実行ユーザとプロセスを表示する ===== fuserコマンドを利用する # fuser -vn tcp 80 ■実行結果 USER PID ACCESS COMMAND 80/tcp: apache 942 F.... httpd apache 943 F.... httpd apache 944 F.... httpd apache 945 F.... httpd apache 946 F.... httpd apache 947 F.... httpd apache 948 F.... httpd apache 949 F.... httpd root 2007 F.... httpd ===== Basic認証用ユーザを作成 ===== 通常は # htpasswd -c 認証用ファイル アカウント とコマンドを実行するとパスワード確認があって、正常に入力する事でパスワードファイルが完成する。 しかし、シェルスクリプトなどから実行の場合は出来ればパスワード入力を遠慮した。 そこで、以下のオプションを試してみよう # htpasswd -nb アカウント名 パスワード アカウントとパスワードが表示されたはずだが・・・どうだろうか? この標準出力をhtpasswdに挿し込めば以上終了。 いや~簡単だったね。