読者です 読者をやめる 読者になる 読者になる

理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

シェルスクリプトでテンプレート処理 (envsubstの使い方)

シェルスクリプトで、テンプレート処理を行いたいというケースがあります。ここでいうテンプレート処理というのは、例えば以下のようなテンプレート(ここでは template.tt と呼びます)があった場合に、 property1=${hoge} property2=${fuga}これを使って以下…

sudoers.d

CentOS 6 を使う機会があって、/etc/sudoers に設定入れるかって /etc 見たら、/etc/sudoers.d とかいうディレクトリがあった。 で、/etc/sudoers を見ると ## Read drop-in files from /usr/local/etc/sudoers.d ## (the '#' here does not indicate a comm…

ファイル、ディスクをクリアするための shred コマンドの注意点

ハードディスクとか廃棄したり、別の人に譲渡するときに、ハードディスクの中身を綺麗に消したい、復旧させられないようにしたいっていうことがあります。 たとえば rm file で file を消すことができますが、これはあくまでインデックスが消えているだけで…

join コマンドの使い方

初歩的ではあるのですが、join コマンドというのは、個人的には他の人が使っているのを見たことがないレベルの不遇のコマンドです。一言で言えば、(ファイルがソートされていることを前提に) 2 つのファイルの inner join を取ることができます。一日毎にロ…

find-xargs と mv/cp を組み合わせるときの注意点

特定ディレクトリ配下のファイルを移すときとかでこういうの書いてるの見るけど、ファイル数が多いんだったら止めた方が良いです。 10 万くらいのファイルをこれで動かそうとすると、クソみたいに時間がかかるみたいなことあります。 $ find . -type f | xar…

シェルスクリプトのバッドパターン

シェルスクリプトでバッチ組んだけど性能が出ません、止まってるように見えます、みたいな相談を受けた。 大量のデータを扱うバッチだったので DB 処理待ちになっているもんだと思っていたのだけれど、状況を調べてみると DB サーバ側の負荷はまったくなく、…

文字化けしているファイル名の直し方

最近はなかなか御目にかかることのなくなった表題のような事案。たとえば、文字コードが EUC のサーバに、Windows からファイル名が Shift_JIS のファイルを FTP で置いちゃいましたーみたいな状況。 こういうのを Linux から見ると文字化けしているため、何…

Bash のプロセス置換が便利な件

Bash にはプロセス置換という便利な機能があります。しかしこの機能、あまり知名度が高くない。 ぼくは毎日の労働に疲れ果てているし、日本学生支援機構という組織から毎月金を請求され、しまいには信用情報機関に登録される寸前までいくような生活を送って…

authorized_keys2 は時代遅れなのでは

$HOME/.ssh/authorized_keys2、authorized_keys に変えた方が良い。 OpenSSH 3.0 の時点で既に obsolete 扱いですし、ver.up で authorized_keys2 を読まなくなったとしても、もはや文句言えないと思う。 2) The files /etc/ssh_known_hosts2 ~/.ssh/known_h…

コマンドの繰り返し実行には watch を使おう

バックグラウンドで動作させているバッチが予想以上に動いているらしい、でもログを出していないようなので、バッチが動いているかどうかはプロセスの生死で確認するしかない、みたいな状況があったりします。 このためには $ ps -ef | grep Batch などとし…

スクリプトに出てくる${1+"$@"}

時々、スクリプトを見ていると ${1+"$@"} なんて記述にでくわす。例えば、これは Perl スクリプトだけれど、cpanm の実装では #!/Users/kiririmode/perl5/perlbrew/perls/perl-5.14.1/bin/perl eval 'exec /Users/kiririmode/perl5/perlbrew/perls/perl-5.14…

条件分岐での複文実行

オシャレかどうかは個人の趣向によるのだけれど、あんまし大した条件分岐でもないのに if/else 文を書くというのは行き過ぎだろと思うときが結構ある。こういうときは短絡評価させる、みたいな方が分かりやすくて良いかなと思っていた。単純な例を書く。 # …

設定されている環境変数をムシってコマンドを実行する方法

env に -i 引数を渡してコマンドを実行する。 $ env -i your_command よく知られている env コマンドの使い方は設定されている環境変数を出力することである。何も引数を与えないで env コマンドを実行すると、設定済みの環境変数が標準出力に出力されるので…

sync sync sync ?

よく、非常に重要なディスク変更を伴う作業などで $ sync $ sync $ sync ってやれみたいな話を聞きますが、これって $ sync # 一息入れる っていうのと何か違ったりするのかなみたいな疑問を未だに持っています。 sync の意味 そもそも sync(8) は、ディスク…

ForwardX11Trusted は true でいいかな

X をリモートから飛ばすときに、よく .ssh/config の ForwardX11 を yes に設定したりすると思いますが、ちょっとドキュメントを読んでると ForwardX11Trusted という設定項目が出てきた。FowardX11 の項目には An attacker may then be able to perform act…

awk でシェル変数の値を使うには

あたりまえだが、awk はシェル変数を参照できない。例えば以下のコマンドラインは 5 を出力せず、空行を出力する。 $ VAR=5 awk 'END { print VAR }' /dev/null 一行だけを見ると、あぁそうなのかというくらいの話なのだけど、よく詰まるのがシェルスクリプ…

keychain を導入した

ssh でのログインで一々パスワードを入力するのは正直メンドい。そもそも ssh でパスワードを要求されるのはパスワード認証であるから、これを RSA/DSA 認証を行うように変えてやればパスワードは要求されない。すごい。これでみんなが幸せになれる。 しかし…

grep の w オプション初めて知った

"-w" オプション (--word-regexp)でワード検索ができるとか今の今まで知らなかった。 要するに、 $ grep -w PATTERN FILES としたとき、PATTERN の前後に "英数字およびアンダースコア" がないときしかヒットしなくなる。例えば、以下は "'add pin'" にはヒ…

Cocoa Emacs で ddskk を使っているとワーニングが出てしまう件

数日前に Carbon Emacs から Cocoa Emacs に変えたのだけれど、変えて以後、起動する度に以下のようなワーニングが吐かれるようになってしまいました。 Warning: `last-command-char' is an obsolete variable (as of Emacs at least 19.34); use `last-comm…

socketpair なんてのがあるんだな

プロセス間で通信というと,pipe システムコールを 2 つ使って,送信用と受信用ソケット作るだろ常考というのがぼくの中での固定観念としてあったんですけど,なんか socketpair なんてお洒落なものがあるということを知ったりしました.いやリアルで全然知…

ls -A

ls というと何より使用頻度の高いコマンドだと思いますが,周りの話を聞いていると,ls の -A オプションを知らない人がわりと多いような気がする. 一般に隠しファイルを表示させるときは -a オプションを使いますが,これだと自身と親ディレクトリまで含ま…

横に長い htgroup ファイルを vi で開くと表示がバグる件

Apache で mod_authn_file を使って Basic/Digest 認証で用いるファイルを指定するということは皆さん毎日のように夢に見る作業ではないでしょうか.本当に恐しい. mod_authn_file を使ってユーザ単位の id/passwd を記述したファイルを指定することができ…

WebDAV サーバ立てた

なんかこう,ファイルサーバ的なものが自宅に欲しかったんだけど,インターネット経由でアクセスしたいと思った末に,WebDAV サーバを立てることにしました. Apache に mod_dav とか当たり前のように入っているものですから,作業自体は非常に単純.Apache …

シェルスクリプト面白挙動

こんなのつくる. #!/bin/bash cat myfile | while read line do exit 2 done echo "out of loop" myfile はこんな感じ $ perl -e 'print map { "$_\n" } "a" .. "z"' > myfile 実行する $ ./test.sh out of loop おーーーーーー!!!!!!! 知ってる人はしって…

Mac から Linux の Samba に接続しようとしたら -43 エラーが出る件

タイトル通り,Mac (Leopard) から Samba に接続しようとしたときに,-43 エラーが出て smb で接続できないという事象が発生したりしました. smb.conf の [homes] セクションあたりのコメントを外すと接続できるようになったという謎の状態. [homes] comme…

find の -xdev オプション

comp.unix.shell の一つの質問に対する回答として -xdev っていう find コマンドのオプションが使われていましたが,ぼくはこれが何だか知りません. 知らないことは調べないといけないので,man を引いて調べてみるなどしました. -xdev Don't descend dire…

mod_auth_cookie (テスト編)

mod_auth_cookie (インストール編) - 理系学生日記 mod_auth_cookie (設定編) - 理系学生日記 mod_auth_cookie (テスト編) - 理系学生日記 テスト用 CGI ここでは,クライアントにクッキーを設定するための単純な CGI (cookie.cgi) を作成しました.この CGI…

mod_auth_cookie (設定編)

前提を整える まずばベーシック認証がきちんと動作していることを確認します. テスト用のディレクトリを 2 つ作成し,それぞれ id/pass が test1/test1,test2/test2 しかアクセスができないようにします. <Directory "/var/www/basic-test1/"> AuthName "Members Only" AuthType Basic AuthUs</directory>…

mod_auth_cookie (インストール編)

mod_auth_cookie は,クッキーによって Basic 認証を行うというステキモジュールです. mod_auth_cookie - Home HTTP リクエストに Cookie ヘッダが設定されており,かつ指定したキーが入っていた場合,リクエストを受信した Apache は内部でその値を Author…

HTTP から HTTPS へのリダイレクトにはまる

研究室でもやった(正しくはコイさんとかにやってもらった)のだけれど,HTTP から HTTPS へ自動的にリダイレクトさせるというのは,Web サーバの設定ではよくあるものだったりします.Apache クックブックにもその解は載っていて,まぁこんなかんじだ. Rewri…

mod_ssl のディレクティブ

apt-get でインストールしたときそのままの ssl.conf の内容は少なくとも把握したいとか思ったので調べてみたのでした. SSLRandomSeed SSLRandomSeed startup builtin SSLRandomSeed startup file:/dev/urandom 512 SSLRandomSeed connect builtin SSLRando…

CGI 関係で Apache 1.x から Apache 2.x に乗り換えるときのハマりポイント

ぼくはちょっくら Apache 1.x から 2.x に乗り換えようとか調子コいたことをやってみたんですけど,なんか CGI とかでいろいろ不都合が出たりしたので,ちょっとメモしておこうと思ったのでした. Apache::SizeLimit メモリがデカくなりすぎるとプロセス kil…

Ubuntu の apache2 についてくる a2{en,dis}mod

なんかこれで apache のモジュールの有効化/無効化をするらしい.得られるメリットは,モジュールの有効化/無効化に際してコンフィグファイルの書き換えが必要なくなり,コマンド一発でできることかな. /etc/apache2/apache.conf にはこんなディレクティブ…

apt-file があれば

ぼくの家の Linux はもっぱら fedora だった (研究室で流行ってたので) のですけども,ちょっと Ubuntu を使ってみようと思い立ちました.思い立ったが吉日ですからさっさと fedora 消して,ぼくは Ubuntu をインストールしてやったぞ!! パッケージ管理シス…