一部の情報は非常に古いもの(20年以上前〜)ですので、利用する際はご注意ください(Java 1.4 とか .NET 1.0 とか、Windows 2000 とか)
お問い合せは wiki@shise.net まで。Gmail に転送されるので、スパムは全部カットされます。
- スクリプト
- ディストリビュージョン
- apache
- その他
- Ubuntu Server で、キーボードマッピングが変
- Ubuntu Server で root のパスワードが分からない
- VMware 上に Ubuntu server を入れて、VMware Tools を入れたときのメモ。
- RPM の依存関係を、まとめてコピー?
- カーネル再構築のアレ
- カーネル再構築を自動化したい…
- RDesktop のコンパイルとか。
- indent
- 解像度こぴぺ
- SSHキーとか、いい感じにコピペするスクリプト
- 一時的なメモ
- バックアップすりぷと
- とりあえずホスト名変更
- CentOS 5.2 を入れて yum を叩いたらエラー
- ファイル名をmd5ハッシュに変更
- いつもやる CentOS の設定
- パスワードなんかの文字列を非表示で入力してもらうシェルスクリプト
- LVM でディスクの追加
- Windows のフォルダをマウント
- ISO ファイルのマウント
スクリプト
ファイルサイズが0のファイルを消す
/var/log/hoge/ 以下にあるファイルでファイルサイズがゼロの空っぽのファイルを削除する。
/bin/sh -c 'cd /var/log/hoge/; for f in `ls`; do if [ ! -s "$f" ]; then rm -rf "$f"; fi; done;'
ディストリビュージョン
CentOS
http://www.centos.org/
Download のとこからバージョンを指定して落とす
日本語OK、UTF-8っぽい、CD 4枚、RedHatと兄弟的な感じ。
アプリのインストールとかは yum
VineLinux
日本語OK、EUCっぽい、CD 1枚
アプリのインストールは apt-get
Ubuntu
http://www.ubuntulinux.jp/
ダウンロードは、Bittrentを使って落としたほうがよさげ。
日本語OK、UTF-8?、CD 1枚
アプリのインストールは apt-get
一般ユーザーで遊んでると、管理者権限で実行する sudo コマンドを連発する必要性が出てくる。
apache
ファイル一覧のカスタマイズ
詳細はこちら
http://smdn.invisiblefulmoon.net/index.php?cmd=read&page=Linux%2FFedora%20Core%2FApache
ReadmeName /footer.html
HeaderHame /header.html
Apache 1.3系でやってみた。
SuppressHTMLPreamble は、IndexOptions の所で、一番左に書いたほうが良い?
この項目は、IfModule mod_autoindex.c の中に、既に書き込んであった。
vi で開いてるときに /ReadmeName って入力すれば検索できるはず。
その他
libXm.so.3
openmotif-2.2.3-10.RHEL4.5.i386.rpm
http://linuxsoft.cern.ch/cern/slc44/i386/SL/RPMS/
Ubuntu Server で、キーボードマッピングが変
Ubuntu Server を VMware 上に入れたが、なんかキーボードマッピングが変なので、調べたら以下のコマンドが出てきたので、メモ
sudo aptitude install console-data
>Select keymap from arch list
>qwerty
>Japanese
>PC110 or Standard
Ubuntu Server で root のパスワードが分からない
どうやら、設定されて無い?らしい。
以下のコマンドで、root の設定をする。
> sudo passwd root
password ではなく passwd なので注意
VMware 上に Ubuntu server を入れて、VMware Tools を入れたときのメモ。
なお、XAMPP を利用する予定なので、LAMPは入れない。
とりあえず、Linux に関しては、初心者同様なので、詳しいことは分かっていない。
ubuntu の CD をマウントしておく。
mount /dev/cdrom /media/cdrom apt-get install make apt-get install gcc apt-get install linux-headers
ここで、適切なものを選ぶ。
自分は、ubuntu server を入れたので、server のヘッダを選んだ。
umount /media/cdrom
VMware Tools のインストールを開始する。
mount /dev/cdrom /media/cdrom mkdir /tmp/vmware tar zxvf VMwareTools-3.0.1-23039.tar.gz -C /tmp/vmware /tmp/vmware/vmware-tools-distrib/vmware-install.pl
なんか、いろいろ聞かれるが、適当に答える。
linux header のパスは、俺の場合、ubuntu server を入れたので、
/usr/src/linux-headers-2.6.20-15-server
と、入力した。
/usr/bin/vmware-config-tools.pl
はいはい、わろすわろす、って答えとけば、インストール完了。
RPM の依存関係を、まとめてコピー?
必要最低限の RPM を集めるために、楽をしようと思って書いた Perl スクリプト。
まだ、テスト段階で実践では使ってないけど、一応メモ。
#!/usr/bin/perl # RPM のありか $rpmin = "/media/cdrom/RedHat/RPMS/"; # チェック&コピー先。ここに依存関係を調べたい RPM を投げ込む $rpmout = "/tmp/RedHat/"; # 依存関係データベースのディレクトリ $dbpath = "/tmp/testdb/"; if (!-d $dbpath){ system("mkdir -p $dbpath"); system("rpm --initdb --dbpath $dbpath"); print "init db\n"; } if (!-d $rpmout){ system("mkdir -p $rpmout"); print "init rpm out\n"; } print "test start\n\n"; do { # 依存関係を調査 open(IN, "rpm --test --dbpath $dbpath -Uvh $rpmout*.rpm 2>&1 |"); $reso = 0; while (<IN>) { # コピーコマンドを叩く if($reso == 1) { $t = trim($_); $f = "cp $rpmin$t $rpmout"; system($f); print "copy $t \n"; } # 依存関係パッケージが列挙されはじめたら1 if($_ =~ /Suggested/) { print "------\n"; $reso = 1; } } }while($reso == 1); close(IN); print "------\n"; # どんだけの容量になったか表示 system("du -hs $rpmout"); print "\n"; # どっかからコピって来たトリム関数 sub trim { my @out = @_; for (@out){ s/^\s+//; s/\s+$//; } return wantarray ? @out : $out[0]; }
カーネル再構築のアレ
http://pooh.gr.jp/item-2250.html
ここからコピーした。
毎回、「あれー?ファイル名なんだっけー」とか、i386 i686 に書き換え忘れたりしないようにメモ。
yum -y install gcc rpm-build redhat-rpm-config ncurses-devel wget http://mirrors.kernel.org/centos/4.6/updates/SRPMS/kernel-2.6.9-67.0.7.EL.src.rpm mkdir -p /usr/src/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS} rpm -i kernel-2.6.9-67.0.7.EL.src.rpm cd /usr/src/redhat/SPECS/ rpmbuild -bp --target=i686 kernel-2.6.spec cd ../BUILD/kernel-2.6.9/linux-2.6.9/ vi include/asm-i386/param.h vi include/asm-x86_64/param.h +# define HZ 100 vi Makefile +EXTRAVERSION = -67.0.7.EL.vm +export INSTALL_PATH=/boot make mrproper cp configs/kernel-2.6.9-i686.config .config make oldconfig make make modules_install installkernel 2.6.9-67.0.7.EL.vm arch/i686/boot/bzImage System.map vi /etc/grub.conf +default=0
VMware 上でやってる場合は、以下のコマンドをたたいておくと、幸せになれるかも。
vmware-config-tools.pl
カーネル再構築を自動化したい…
#!/bin/sh url=http://mirrors.kernel.org/centos/4.6/updates/SRPMS/ echo get url ... rpm=`wget $url -O - -q | grep 'kernel-' | sed -e 's/<a.*>\(.*\)<\/a>.*/\1/g' | tail -n 1` echo $url$rpm echo get rpm ... wget $url$rpm -q echo make dir mkdir -p /usr/src/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS} echo install rpm rpm -i $rpm cd /usr/src/redhat/SPECS/ rpmbuild -bp --target=i686 kernel-2.6.spec cd ../BUILD/kernel-2.6.9/linux-2.6.9/
まだ途中。
あとでやる。
と、思ったが、
VMware Server 2.0 からは、時計がずれなくなったみたい。
やっほい!
RDesktop のコンパイルとか。
CentOS で、新しい環境を作るたびに、
何のパッケージいるんだっけ?
となるので、メモ。
yum -y install gcc xorg-x11-devel openssl-devel tar zxvf rdesktop-N.N.N.tar.gz cd rdesktop* ./configure make make install
indent
こぴぺ
indent -br -ce -npcs -ut -i8 tmp.c -o tmp2.c
解像度こぴぺ
http://www.redoubt.com/TZICT/cookbook/solaris-vmware-install.html
あれ?ソラリス?
Fix screen resolution In the following, substitute your native monitor resolution for 1440x900 in the italicized parts, and set the values which follow to then next even mutiple of 100 (don't know why this works but it seems to). backup /etc/X11/xorg.conf edit /etc/X11/xorg.conf in Section "Monitor" Identifier "vmware", add: ModeLine "1440x900" 100 1440 1500 1600 1700 900 1000 1100 1200 in Section Screen, add 1440x900 "Display" Subsections (depth 24), and remove all other "Display" Subsections except VGA after boot, screen may be wrong; right-click, choose correct setting
SSHキーとか、いい感じにコピペするスクリプト
#! /bin/sh ### help if [ -z "$1" ]; then echo "usage: $0 <ip_address>" exit fi ### key gen if [ ! -r ~/.ssh/id_rsa ];then mkdir -p ~/.ssh/ > /dev/null 2>&1 touch ~/.ssh/authorized_keys > /dev/null 2>&1 chmod -R 700 ~/.ssh/ > /dev/null 2>&1 echo 'n' | ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa > /dev/null 2>&1 fi ### put key cat ~/.ssh/id_rsa.pub | ssh $1 ' if [ ! -r ~/.ssh/id_rsa ];then mkdir -p ~/.ssh/ > /dev/null 2>&1 touch ~/.ssh/authorized_keys > /dev/null 2>&1 chmod -R 700 ~/.ssh/ > /dev/null 2>&1 echo "n" | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa > /dev/null 2>&1 fi cat >> ~/.ssh/authorized_keys cat ~/.ssh/id_rsa.pub KEYS=`cat ~/.ssh/authorized_keys | sort | uniq` echo "$KEYS" > ~/.ssh/authorized_keys ' >> ~/.ssh/authorized_keys ### sort key KEYS=`cat ~/.ssh/authorized_keys | sort | uniq` echo "$KEYS" > ~/.ssh/authorized_keys ### get my ip CLIENTIP=`ssh $1 "echo \\\${SSH_CLIENT} | awk -F: '{print \\\$4};' | awk -F\\\\ '{print \\\$1};'"` HOSTNAME=`hostname` ### put hostkey cat /etc/ssh/ssh_host_rsa_key.pub | ssh $1 " HOSTKEY=\`cat\` if [ ! -r ~/.ssh/known_hosts ]; then touch ~/.ssh/known_hosts fi if [ -z \"\`grep \"$CLIENTIP \$HOSTKEY\" ~/.ssh/known_hosts\`\" ]; then echo \"$CLIENTIP \$HOSTKEY\" >> ~/.ssh/known_hosts fi if [ -z \"\`grep \"$HOSTNAME \$HOSTKEY\" ~/.ssh/known_hosts\`\" ]; then echo \"$HOSTNAME \$HOSTKEY\" >> ~/.ssh/known_hosts fi #if [ -z \"\`grep \"$CLIENTIP $HOSTNAME\" /etc/hosts\`\" ]; then # echo \"$CLIENTIP $HOSTNAME\" >> /etc/hosts #fi " echo "finish"
使い方は、
./ssh-copy.sh 192.168.199.10
みたいな具合に、SSHのキーをコピーしたい相手のIPを指定するだけ。
初回は、相手のパスワードが聞かれる。
一時的なメモ
ポート転送
iptables -t nat -A PREROUTING -p tcp --dport 443 -i eth0 -j DNAT --to 192.168.3.23:443 iptables -A FORWARD -d 192.168.3.23 -p tcp --doprt 443 -j ACCEPT
root の crontab で Postgres の VACUUM 実行
* * * * * /bin/su - postgres -c "PGPASSWORD=drupal psql -U drupal -c 'VACUUM;'" > /dev/null * * * * * /bin/su - postgres -c "PGPASSWORD=drupal psql -U drupal -c 'VACUUM FULL ANALYZE;'" > /dev/null
バックアップすりぷと
諸事情により、このスクリプトは・・・動作しません。
#!/bin/sh # setting PREFIX="prefix" PATH="/filepath/" COUNT=30 FILE=$PREFIX"_`/bin/date '+%F_%H-%M-%S'`.tar" # pushd $PATH /bin/tar cvf $FILE html --exclude '*.log' > /dev/null 2>&1 NEW_MD5=`/usr/bin/md5sum $FILE | /bin/awk -F' ' '{print \$1}'` OLD_MD5=`/bin/cat hash.log 2> /dev/null` echo "NEW $NEW_MD5" echo "OLD $OLD_MD5" if [ "$NEW_MD5" != "$OLD_MD5" ]; then echo "$NEW_MD5" > hash.log else echo "NOT MODIFY" /bin/rm -f "$FILE" fi if [ `/bin/ls -l $PREFIX*tar 2> /dev/null | /usr/bin/wc -l` -gt $COUNT ]; then RMFILE="`/bin/ls $PREFIX*tar | /bin/sort | /usr/bin/head -n 1`" echo "DELETE OLD $RMFILE" /bin/rm -f $RMFILE fi popd
とりあえずホスト名変更
かなり適当すぎるホスト名変更スクリプト
#!/bin/sh NEWNAME="$1" if [ -z "$NEWNAME" ]; then echo "Usage $0 <new hostname>" exit; fi NEWHOSTNAME=`cat /etc/sysconfig/network | sed "s/HOSTNAME=.*/HOSTNAME=$NEWNAME/"` echo "$NEWHOSTNAME" > /etc/sysconfig/network_new mv --backup=simple -f /etc/sysconfig/network{_new,} NEWHOSTS=`cat /etc/hosts | sed "s/127\.0\.0\.1\t*\($NEWNAME\)* */127.0.0.1 $NEWNAME /"` echo "$NEWHOSTS" > /etc/hosts_new mv --backup=simple -f /etc/hosts{_new,}
ver 2
#!/bin/sh # get new name NEWFULLNAME="$1" if [ -z "$NEWFULLNAME" ]; then echo "Usage $0 <new_hostname.new_domainname>" exit; fi NEWNAME=`echo $NEWFULLNAME | sed 's/\..*//g'` if [ "$NEWFULLNAME" = "$NEWNAME" ]; then NEWFULLNAME="$NEWNAME.localdomain" fi # get name FULLNAME=`hostname` NAME=`hostname | sed 's/\..*//g'` # replace hostname NEWHOSTNAME=`cat /etc/sysconfig/network | sed "s/HOSTNAME=.*/HOSTNAME=$NEWFULLNAME/"` echo "$NEWHOSTNAME" > /etc/sysconfig/network_new echo "/etc/sysconfig/network" cat /etc/sysconfig/network_new mv --backup=simple -f /etc/sysconfig/network{_new,} # replace hosts if [ "$NAME" = "localhost" ]; then NEWHOSTS="`cat /etc/hosts`" NEWHOSTS="`echo \"$NEWHOSTS\" | sed \"s/127\.0\.0\.1\t*/127.0.0.1 $NEWFULLNAME $NEWNAME /\"`" else NEWHOSTS="`cat /etc/hosts`" NEWHOSTS="`echo \"$NEWHOSTS\" | sed \"s/$FULLNAME/$NEWFULLNAME/\"`" NEWHOSTS="`echo \"$NEWHOSTS\" | sed \"s/$NAME/$NEWNAME/\"`" fi echo "$NEWHOSTS" > /etc/hosts_new echo "/etc/hosts" cat /etc/hosts_new mv --backup=simple -f /etc/hosts{_new,} # end echo "Please restart network."
CentOS 5.2 を入れて yum を叩いたらエラー
CentOS 5.2 を入れて、
yum -y update
と入力すると・・・
[Errno -1] Metadata file does not match checksum Trying other mirror.
というエラーが大量に出て、結局アップデート出来なかった。
原因不明で、ググッたけど良く分からず。
yum のオプションを見てみると、clear というオプションが使えるらしい。
そこで
yum clear all
とすると、あら不思議。
yum でアップデートが出来るようになった。
何故かは分からないが、無事解決。
ファイル名をmd5ハッシュに変更
md5mv(){ EXT=${1##*.}; NN=`md5sum $1 | awk -F' ' '{print $1}'`; mv $1 $NN.$EXT; } for n in *.bmp; do md5mv $n; done
いつもやる CentOS の設定
メモリ256くらい
NIC2枚
ホストオンリー
NAT
OpenOffice とか外す
GUI とかもイラネ
ベースのみでインストール
yum -y update
reboot
vim 入れる
.bashrc に alias で vi=vim
source .bashrc
vi /etc/sysconfig/network-script/ifcfg-eth1 (NAT側)
boot=no
/etc/ssh/sshd_config
で、Dns なんちゃらを no に
キーを .ssh/authorized_keys に登録
chmod 600 .ssh -R
うっさい Beep を止める
vi /etc/inputrc
set bell-style none
[VMware Tools]
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
rpm -ivh VMWar....rpm
vmware-config-tools.pl
okok
クローン後、ホスト名変更
vi /etc/hosts
127.0.0.1 hogehoge localhost
vi /etc/sysconfig/network
hostname=hogehoge
reboot
履歴をたくさん残す設定
vi .bashrc
以下を追記
HISTSIZE=100000 HISTFILESIZE=100000 HISTTIMEFORMAT='%F %T ' HISTIGNORE='ls:pwd:ll:history'
今すぐ適用するには以下のコマンド
source .bashrc
コマンドの履歴を消す
コンソール上で以下のコマンドをたたくと、履歴が全部消える
export HISTSIZE=0
パスワードなんかの文字列を非表示で入力してもらうシェルスクリプト
echo -n "Root Password : " stty -echo read PASS stty echo echo
これで、画面上には表示されないパスワード入力が出来る。
LVM でディスクの追加
ディスクを追加したあと、マシンを起動すると認識される。
fdisk -l df -h fdisk -l fdisk /dev/sdc Command (m for help): n Command action p Partition number (1-4): 1 First cylinder (1-79780, default 1): Last cylinder or +size or +sizeM or +sizeK (1-79780, default 79780): Command (m for help): t Hex code (type L to list codes): 8e Command (m for help): p Command (m for help): w vgdisplay -v ll /dev/sdc* pvcreate /dev/sdc1 pvscan vgextend VolGroup00 /dev/sdc1 vgdisplay -v lvextend -L+15G /dev/VolGroup00/LogVol00 resize2fs /dev/VolGroup00/LogVol00 pvscan df -h
Windows のフォルダをマウント
昔は smbmount とかでマウントした気がしたんだけど、
最近の CentOS では見かけないのでいろいろ調べたら mount -t cifs というのを使うらしい。
ちゃんとマウントできたのでメモ。
# CentOS 5.6 -> Windows XP SP3 mount -t cifs //192.168.XX.XX/data /mnt/data -o username=guest,password=,uid=root,gid=root,codepage=cp932,iocharset=utf8
コードページと IO Charset を指定しないと、日本語が文字化けしまくった。
ISO ファイルのマウント
ISO ファイルをマウント
mkdir /mnt/iso mount -t iso9660 -o loop /root/hoge.iso /mnt/iso