Linux

checkinstall インストール手順

tar ball解凍して入れる手順です。ディストリビューションはCentOSですが、yumよりこっちの方が早いのでいつもこうしている・・ #!/bin/sh wget http://asic-linux.com.mx/%7Eizto/checkinstall/files/slackware/checkinstall-1.6.1-i386-1.tgz tar xvfzp ch…

UTF-8における全角マイナスと全角チルダの問題(=いわゆる「波ダッシュ問題」)

以下の通り、同じ文字を表現しているにも関わらず、文字コードが異なるケースが発生します。 [webmaster@localhost work]$ nkf -w sjis.txt > utf8.nkf.txt [webmaster@localhost work]$ od -tx1 utf8.nkf.txt 0000000 e2 88 92 e3 80 9c 0000006 [webmaster…

nkfインストール手順メモ

#!/bin/sh wget http://osdn.dl.sourceforge.jp/nkf/20770/nkf207.tar.gz tar zxvf nkf207.tar.gz cd nkf207 make cp -p nkf /usr/bin cd - rm -rf ./nkf*

chownでsticky bitが壊れる

実際にやってしまった痛い失敗です。root権限で以下のような処理を実行するツールを書き捨てでつくって実行しました。 #!/bin/sh chown -R ${NEW_USER}:${NEW_GROUP} ${TARGET_DIR}/* もし、変数が空だったらどうなるでしょうか。そう、以下のようなコマンド…

iptablesをつい忘れてしまう

久しぶりに自宅にメールサーバを構築していたらまた忘れていました。iptablesの存在・・netstat -an --tcpでportがlistenになっているのにLAN内からport指定してアクセスできなければ、まずは確認ですね。

ARG_MAXとshell組み込みコマンド(bash)

twitterのfriend timelineのログをファイルベースでログとってたら*1、気がつくとarchiveのディレクトリに5万件超のファイルが蓄積されていました。これだけの件数のファイル群はrmコマンドで一気に消そうとしても、消せません。 -bash-3.00$ rm * -bash: /b…

専用の簡易シェルをつくって遊ぶ

といってもシェルスクリプトですが。小ネタ的に、プロセスが起動し続けるような連続運転テスト用に専用の簡易シェルをつくって遊びました。 #!/bin/sh SCRIPT_DIR="." BTB_PROCESS=$SCRIPT_DIR"/test.sh" echo "h/help/? for help" while true do printf "te…

sudoのユーザリストはviではなくvisudoで編集すること

vi /etc/sudoersではなくvisudoでエディタを起動する事が推奨されます。理由は以下の通り。 visudo は、vipw(8) と同じような安全な方法で sudoers ファイルを編集する。 visudo は複数同時の編集に対して sudoers ファイルをロックし、基本的な文法エラーや…

grep -v grepしないで済む方法

こちら経由でこのエントリで知りました。 プロセスをgrepするときに ps -ef | grep hoge | grep -v grepってやるのはださいので、代わりに ps -ef | grep [h]ogeってやれば同値だよという。*1 [ と ] で囲まれた文字のリストは、そのリスト中に含まれるどれ…

.nリネームでログを退避する

Linuxの/var/logの下のシステムログには一定の間隔やあるタイミングで古いログが退避されるものがあります。たとえばboot.logは一週間おきに退避されるとか。実際のシステム開発の現場でも、これにならって末尾に.nを付与していくという運用がよくなされます…

CentOSでのwebmin導入

CentOsでのwebmin導入はrootユーザで以下のコマンド2発でおkです。(今日現在の最新版) wget -install http://prdownloads.sourceforge.net/webadmin/webmin-1.340-1.noarch.rpm rpm --install webmin-1.340-1.noarch.rpm私はCUI大好きで、あまり使ってい…

やってしまった:;wq!

viでファイル編集しているときに :;wq!と入力してしまうと1バイトのファイルに上書きされてしまいます。初めてやってしまいました。仕事じゃなくてよかった。

dovecot の Maildir 受信設定ではまった

メールサーバが必要になったので、Postfixでメールサーバ構築を行ったところ、dovecotと連携した受信設定でちょっとつまづきました。/etc/postfix/main.cfでMaildir配信を以下の設定しましたが、受信メールは相変わらず/var/spool/mail/ユーザ名に溜められる…

CRLFを駆除する

メンバーが多くなってくるとどうしても「UNIXサーバに改行文字がCRLFになっているファイルをあげる人」とか出てきます。そんなときはtr -d '\r'で駆除してしまいましょう。 #!/bin/sh for target in `ls *.csv` do tmp=${target}.tmp tr -d '\r' < ${target}…

日曜の早朝4時に動き出すmakewhatisプロセス

夜中に突然自鯖がウィーンと唸り出したので、vmstatとか見たら案の定cpuのidleが0になっていました。 topコマンドで見るとmakewhatisという見慣れないプロセスがゴリゴリ動いています。 -bash-3.00$ ps -ef | grep makewhat root 15448 15447 0 04:22 ? 00:0…

シェルスクリプトでftp転送

シェルスクリプトでftp転送する処理のサンプル。メモ。 #!/bin/sh DATE=`date '+%Y%m%d'` tar cvfz ${DATE}.tar.gz ./hoge ftp -ivn 192.168.11.11 << __END__ user username password bin # バイナリ転送モード passive # パッシブモードoff cd /foo/var pu…

UNIXコマンドのバージョン情報をみる

http://www.atmarkit.co.jp/flinux/rensai/shell03/shellstio.html別件で調べ物をしていてぶつかった記事。echoだけちょっと特殊で、bashの内部コマンドのechoとフルパス指定して呼び出す外部コマンドとしての/bin/echoは別物なんですね。記事によると伝統的…

"w"コマンド

知りませんでした。ハイクで遊んでて知りました。thx!http://h.hatena.ne.jp/monobe/9236538718069895213

LinuxサーバのCPU数を調べる、とか

Linuxサーバに載ってるCPU数を知りたいと思い、その場で以下のようなsar -Pを使ったシェルスクリプト書いて実行。 #!/bin/sh i=0 while true do sar -P ${i} 0 > tmp.txt if [ `cat tmp.txt | wc -l` -eq 0 ]; then rm -f tmp.txt break fi let i=${i}+1 don…

特定プロセスをkillするシェルスクリプト

久しぶりに書いたら、PIDの取得方法を微妙に忘れていたので、メモとして。 #!/bin/sh USER=`whoami` TARGET=hoge pids=(`ps -ef | \ grep ${USER} | \ grep ${TARGET} | \ grep -v grep | \ awk '{ print $2; }'`) for pid in ${pids[*]} do kill -9 ${pid} …