ソフトウェアエンジニア現役続行

雑多なことを綴ります

Linux

「dpkg-reconfigure tzdata」コマンドをバッチ処理

Ubuntuでタイムゾーンを設定するときは「dpkg-reconfigure tzdata」コマンドを実行して、起動したインタラクティブウィンドウで Asia -> Tokyo を選択するのが良いのですが、chefなどバックグラウンドでバッチ処理で設定するときは、インタラクティブだと困…

UbuntuでTimezoneを変更する方法

Ubuntuでタイムゾーンを設定する方法を検索すると、主に以下の2通りが出てきます。 「cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime」コマンドを実行して再起動 「dpkg-reconfigure tzdata」コマンドを実行して、インタラクティブウィンドウが起動する…

cassandra を apt-get でインストール(debとdeb-srcはコマンドではない)

やり方は以下に書かれています。 http://wiki.apache.org/cassandra/DebianPackaging が、以下を設定する方法が分からなかった。。。 deb http://www.apache.org/dist/cassandra/debian 11x main deb-src http://www.apache.org/dist/cassandra/debian 11x m…

Can't locate local/lib.pm in @INC at ...

私の使っている Ubuntu 12.04 だけかも知れませんが、必ずCPANコマンド実行の一回目は「Can't locate local/lib.pm in @INC at...」というメッセージでエラー終了します。でもリトライすると成功します。初回時のエラーメッセージは以下のとおりです。 ... C…

bindでゾーン転送の設定確認と手動適用

複数台のbind(DNSサーバー)を構築する場合、1台をマスターにして、残りをスレーブにするのが一般的です。そうすれば、マスターで設定したゾーンの設定が自動的にスレーブに反映されます。 「bind ゾーン転送」などで検索すると、方法が色々と出てきます。…

run-parts --test で cronスクリプトが動くかテスト

結論から言うと、以下のようにrun-partsコマンドを--testオプションで実行することで、cron.dailyで実行されるスクリプト名を確認することができます。同様にcron.hourly, cron.weekly, cron.monthlyも確認可能です。 run-parts --test /etc/cron.daily cron…

PPPのtxqueuelenが小さすぎる

LinuxでイーサネットとPPPインタフェースのルーティングをすると、イーサネットからPPPインタフェースへの通信パケットをこぼしてしまうことがありました。 調べていった結果、PPPインタフェースのtxqueuelenが3(デフォルト値)であることが原因だと分かり…

gcovを使ってテストカバー率を測定する

gcovというツールを使ってC言語のテストカバー率を測定することができます。gcovはgccパッケージに同梱されています。たとえば次のようにHoge.cをtestHoge.cでテストするとき↓ [Oswald@fedora14 tmp]$ cat Hoge.c int plus1(int i) { return i+1; }int minus…

DBD::SQLite-1.14に関数が戻ってこない不具合がある

Unix環境でperlのDBD::SQLite-1.14の関数を使ってsqlite3につなぐと、関数から戻ってこない不具合が起こることがあります。DBD::SQLite 1.14はCent OS 5.1に標準で入っているバージョンです。再現プログラムは↓ use DBI; DBI->connect('dbi:SQLite:dbname=/t…

ndiswrapper-1.56 と kernel-2.6.35

ndiswrapperはカーネルが上がるたびに自分で再コンパイルして、カーネルモジュールをインストールしなくてはなりません。fedora14が出たので、13から上げてみました。kernelのバージョンは2.6.35です。構造体のメンバーが変わったようで、コンパイルでエラー…

関数のスタック使用量を計算する方法

POSIXが使える環境でC言語のプログラムを書いていて、特定の関数が使用するスタックの量を調べる必要がありました。別スレッドを生成してその特定の関数を実行させることで、スタックの使用量を調べることができます。あらかじめ別スレッドのためのスタック…

Fedora14にMozcをインストール

FedoraにデフォルトでインストールされているAnthyというIMEはあまり優秀ではありません。特に長い文字を変換しようとするとうまく行かないようです。 例: ゆいがどくそん → 湯意が独尊 すみとみしんたくぎんこう → 隅とも信託銀行 しゅかいせん → 首魁せん…

ファイルサーバのためのユーザ

Linuxでファイルサーバを立ち上げるとき、クライアントPCがWindowsであることを考えると、Sambaによる共有フォルダ機能を使う方法と、Ftpサーバを使う方法があります。Sambaの場合、ログインできないユーザを作って、クライアントからはそのユーザで認証して…

F10キーでファイルメニューが開かれるのを無効にする

全角モードで文字を入力してからF10キーを押して、入力した文字を半角化するショートカットはとても便利です。しかし、fedoraやUbuntuでgedit(エディタ)やpidgin(チャット)を使っていてF10キーを押すと、半角化されずにファイルメニューが開かれてしまい…

プロセスを再起動せずにログを削除するにはtruncate

Linuxサーバーで、sambaが大量のログを出力してパーティションがフルになってしまうトラブルが発生しました。 /var/log/samba/ディレクトリのログファイルを削除しても、改善されずにパーティションはフルのまま。これは、削除したファイルのファイルディス…

rootになったらプロンプトの色を変える

root権限になりたいとき、「$ su -」でrootになると、パスワードを入力が手間だったり、一般ユーザで使っていたときの環境変数がクリアされてしまいます。 「$ sudo bash」でrootになると、パスワードの入力を省略できるし(visudoでNOPASSWDを設定しておく…

tomcat上で動かすプログラムの配置と実行

linuxマシンにtomcatとjdkを入れてjavaプログラムをサーブレット上で動かす方法です。 バージョンはtomcat6とjdk1.6.0です。 手順概要 tomcatへのサーブレットプログラムの配置と実行の手順は次のようになります。 サーブレットプログラムを作成・コンパイル…

異なるHDDでデュアルブート

WindowsとLinuxのデュアルブートというと、単一のHDDをパーティション分割して、それぞれのOSを入れるのが一般的だと思いますが、HDDを二つ用意して、それぞれにWindowsとLinuxを入れてデュアルブートする方法もあります。 単一のHDDでデュアルブート 次のよ…

ApacheでユーザごとのhtmlとCGIを公開させる

CGIをnobodyで実行するのではなくユーザー権限で実行したいときがあります。そのときは次のようにします。 /etc/httpd/conf/httpd.confを編集する 次のようにUserDirを定義します。 #UserDir disabled (←コメントアウト) UserDir public_html (←コメント…

rpmスペックファイルの%config

RedHat系のLinuxディストリビューションではRPMでパッケージ管理を行います。RPMスペックファイルで、%configをつけるとそのファイルは設定ファイルとして認識されます。%configでは、noreplaceとmissingokを指定することができます。第5章 SPECファイルの記…

LinuxにJDKをインストール

LinuxにJDKがデフォルトでインストールされていない場合、Sunのサイトからダウンロードしてこないとダメなようです。他の言語のようにyumで簡単にインストールできるのかと探しまわったのですが、見つけることが出来ませんでした。 参考 ここの説明がとても…

仮想マシンのGuestOSでルータを構築する

仮想マシンを使って、GuestOS(ゲストOS)をルータとして使うことができます。複数のインタフェースを設定できる仮想マシンであれば構築できます。ユースケースとしては、Linuxルータを作って仕組みを理解したいが、物理的なマシンや追加NICを用意するのが面…

補助コマンドは /usr/libexec に

Unix系OSでは、コマンドによって登録されているパスが違います。一般的に/bin以下にあるコマンドは、そのLinuxディストリビューションにとって基本的なコマンドを指します。また/usr以下には/usr/binと/usr/sbinの2種類があります。/usr/bin以下に実行ファイ…

文字コードの違うマシンにssh接続するときの文字化け対策

日本語の文字コードは、今までのLinuxではEUC-JPが主流でしたが、今後はUTF-8が主流になっていくことでしょう。最新のfedoraもUbuntuも、デフォルトの文字コートはUTF-8になっています。さて、UTF-8環境のターミナルからEUC-JP環境のサーバにssh接続すると、…

シェルスクリプトで、空白で詰めない

シェルスクリプトでは、空白は詰められてしまいます。 ダブルクォーテーションで囲むと、空白は詰められなくなります。 [Oswald@fedora ~]$ string="a b" [Oswald@fedora ~]$ echo $string a b (←空白を詰める) [Oswald@fedora ~]$ echo "$string" a b (←…

cronスクリプトが終了しない

cronスクリプトの実行が最後まで完了しない現象が起こりました。調べたところ、cronスクリプトの標準出力(+標準エラー出力)の量が多すぎて、パイプ詰まりが起こってしまい、処理がそこで固まっていました。例えば次のように大量の標準出力を行うcronスク…

cronディレクトリはinotifyサポートを受けている

/etc/cron.d、/etc/cron.daily、/etc/cron.weeklyなどのcronディレクトリはinotifyでサポートされているため、このディレクトリにスクリプトを追加/削除したり、編集したりすると、それらの変更はcrondを再起動しなくても反映されます。 サーバの設定ファイ…

ndiswrapperを使ってWindows用ドライバを動かす

Windowsで使っていたLogitec LAN-TX/U1H2 Ethernet AdapterをLinuxでも使おうと思ったら、楽勝でした。dmesgを見たらデバイスが認識されているようだったので、ndiswrapperを使ってWindows用のドライバをインストールしたら、簡単に動きました↓ [Oswald@fedo…

fedora12でvmware playerが起動しない

一昨日のエントリで、PCをデュアルブートにして、WindowsとLinuxを入れました。そして昨日のエントリで、Linuxからvmware playerでWindowsを起動できるようにしました。Linuxは、具体的にはFedora12を使っていました。仮想マシンはvmware-player-3.0.1を使っ…

vmware playerで既存のパーティションを起動する

昨日のエントリでWindowsとLinuxのデュアルブート(マルチブート)の状態になっています。/dev/sda1にWindows、/dev/sda2にLinuxがインストールされています。/dev/sdaにgrubが入っています。この状態でLinuxを起動して、ホストOSがLinuxの状態で仮想マシン…