UNIX一覧

[HP-UX] dateコマンドが違う

HP-UXに実装されているdateコマンドは、Linuxのそれとはどうやら違うものらしい。そのため、オプションで「–date ‘5 days ago’」を指定したら、怒られた…。

ファイルの更新日を見て、5日以上前のものは削除するようなシェルがあったのですが、どうやらHP-UX上ではダメそう。

GNU Shellutilsをインストールすればいいらしいけど、システム上それは無理なので、他の方法を探す。

となると、findで削除してしまえばいいや、と、以下のようなコマンドを試してみた。

find ${LOGDIR}/LOG*.* -type f -mtime +5 -exec rm -r {} \; >/dev/null 2>&1

とりあえず置き換えは可能ですが、findだと「+5」と指定すると5*24時間以上前のものを削除するので、最終更新日時によっては削除される条件が微妙に変わる。

ということで、時刻は「0:00」を指定してもらえるように、パラメータに「-daystart」をつけてみると…ダメ。HP-UX上では「-daystart」は使えないっぽい。

独自路線すぎて使いにくいOSですこと…。


[HP-UX] PHPを動かしてOracleと接続するまで

HP-UXって、何でもかんでも独自な感じだから嫌い。でも仕事上使わざるを得ないのが辛いところ。

今回はHP-UXでPHPを動かして、さらにOracleとの接続までの設定を行ったので、手順をメモメモ。

とりあえずHP-UXは、HP-UX Itanium 11i 11.23 というもの。

まずは、/opt/hpws/apache/conf/httpd.conf を設定。PHPのモジュールがコメントアウトされているので外すだけ。環境によってはユーザーやグループの変更も必要。

#LoadModule php5_module        modules/libphp5.so
      ↓
LoadModule php5_module        modules/libphp5.so

次に、/opt/hpws/apache/conf/php.ini を設定。以下の項目を環境に合わせて編集する。コメントアウトされているものはコメントアウトを外す。今回はシフトJISを使ったので、SJISを指定している。

date.timezone = Asia/Tokyo
register_globals = On
magic_quotes_gpc = Off
default_charset = "SJIS"
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
extension=oci8.sl

続いて、/opt/hpws/apache/bin/apachectlを修正。ライブラリパスを追加し、さらにOracle固有の設定を追加した。

#export SHLIB_PATH=$ORACLE_HOME/lib:$APACHE_PREFIX/php/lib/php/extensions:$SHLIB_PATH
      ↓
export SHLIB_PATH=$ORACLE_HOME/lib:$APACHE_PREFIX/php/lib/php/extensions:$SHLIB_PATH
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LANG=Japanese_Japan.JA16SJIS
export PATH=$ORACLE_HOME/bin:$PATH

この状態でapacheを再起動して接続してみると、OCILogon()がない!と怒られた。どうやらライブラリのバージョンが違うために、見つからないらしい。シンボリックリンクを張ることで対処可能。

# su - oracle
% cd /opt/app/oracle/10.2.0/db_1/lib
% ln -s libclntsh.so.10.1 libclntsh.so.9.0

もう一度apacheを再起動して、ブラウザからアクセスし、Oracleとの接続が確認できた。

Linuxとは一味違った設定方法だったので結構大変でしたが、そのぶんつながるようになったときの嬉しさは大きいかも?(笑)

余談。

apacheを自動起動にする場合は、/etc/rc.config.d/hpws_apacheconf というファイルの HPWS_APACHE_START の値を 1 にすればイイ。


kshで補完とコマンド履歴

新プロジェクトに移り、かなり久しぶりにAIXを使うことになったわけですが、今回使うシェルがkshということで、コマンド履歴の出し方とか、Linuxでいうタブ補完のやり方を忘れてしまっていて困りました。

今後いつまた同じようなことになるかわからないので、メモを残しておかねばなりませぬ(笑)

◆コマンド履歴の出し方
  Ctrl+p(Linux上のカーソルキー上)
  Ctrl+n(Linux上のカーソルキー下)

◆コマンド入力補完(Linux上でのタブ補完)
  set -o vi(ESC1回と’¥’で補完)
  set -o emacs(ESCを2回たたくと補完、ESC1回と’=’で補完候補表示)

コマンド入力補完は、emacsの方が便利かも。同じキーを2回たたく方が早いし、候補を表示できるのが大きい。でも、やっぱりLinuxの方が長く使っているから、手が自然とカーソルキー上下やタブキーを押しちゃうんだよなぁ・・・しくしく。


[Solaris] Solarisサーバの謎 <追記編>

昨日、電源管理デーモン(powerd)の設定ファイルのautoshutdownをコメントアウトした結果、どうやら今日はサスペンドモードに入っていなかった模様。

ということで、設定が合っていたのかな。と思いきや、autopmの設定もどうやら必要だった模様。むしろ、/etc/power.confには、以下のエントリだけ記述しておけばいいらしい。

autopm          disable

このエントリのみにすることで、低電力モードを使わず、常にフルパワーで動作するようになるということだ。サーバ用途がメインのOSなんだから、デフォルト設定でフルパワーにして欲しいものだ。

・・・と思ったけど、もしかして・・・ちゃんと設定をするまでは一定時間でサスペンドにすることで、外部からの思わぬ攻撃を最小限に食い止める、という意味があるのかな~。管理者がきちんとセキュリティに関する設定を行い、自分の手でフルパワーモードに変更することで「セットアップ完了!」とする、という意味があるのかな、なんてね。

何はともあれ、これで無事サーバとして稼動させることができました。

あ、設定ファイルを書き換えた後は、pmconfigを忘れずに(笑)


[Solaris] Solarisサーバの謎 <解決編>

先日記事にしたSolarisサーバの謎が、どうやら解決した模様。

Solarisには電源管理をするデーモン(powerd)がいて、そのデーモンが自動でサスペンドモードにしてしまっていたらしい。実際、このデーモンのconfigファイルを開いてみると、

device-dependency-property removable-media /dev/fb
autopm           default
statefile        //.CPR
# Auto-Shutdown  Idle(min) Start/Finish(hh:mm) Behavior
autoshutdown     30        9:00 9:00           default

という記述になっていて、確かにautoshutdownという項目が設定されている。この設定だと、朝の9時にチェックをして、30分間アイドル状態が続くとサスペンドするってことなのかな・・・?

しっかし、本来サーバとして稼動させることが目的だと思われるSolarisが、なんでこんな設定をデフォルトにしているんだろう?サーバが落ちてしまったら、サーバとして使えないじゃないか(笑)

ということで、autoshutdownの行をコメントアウトして、設定を有効にするためのコマンドを実行。

# pmconfig

明日になってみないと結果はわかりませんが、manやマニュアルなどを見た限りでは、これで解決しそうです。なので、少し気が早いですが解決編でした。もしこれでも改善しなければ、後日<解決編2>という記事を書くことになりそうです(ノ∀`)


[Solaris] Solarisサーバの謎

先日セットアップした Solaris 10 サーバに Oracle 10g をインストールした翌日、telnetからログインしようとするとなぜかつながらない。シリアルコンソールでログインしようと接続してみると、画面には「Debugging」と表示され、「{1} ok」というプロンプトが・・・。

思いつく限りのコマンドを入力してみても全然だめで、何をやってもどうにもならないため、仕方なくサーバの電源をオフに。結構危険な賭けでしたが、再起動してみると特にエラーなどが出なかったので一安心。

誰も何もしていないのに、なぜいきなりそんな状態になったのかがわからず気持ち悪いですが・・・ひとまず今は問題なく動いているので、良しとしました。

今度時間のあるときに調べてみよう(´Д`)


[Solaris] Solaris 10 のセットアップ

会社に新しいサーバマシンがやってきた。さっそくラックに組み込み、シリアル経由でセットアップを開始。

すでに Solaris 10 がインストールされているので、まずはユーザーを作成。

# groupadd GROUPNAME
# useradd -g GROUPNAME -d /export/home/USERNAME -m USERNAME
64 ブロック
# passwd USERNAME
新しいパスワード:
新しいパスワードを再入力してください:
passwd: USERNAME のパスワードが変更されました

ここで注意しないといけないのは、-d と -m のオプション。-d でホームディレクトリを指定し、-m でホームディレクトリを作成する、という指定をしないと、ユーザーのホームディレクトリが作成されないらしい。

次に、ネットワークの設定。これは簡単に設定する方法がわからなかったので、ひとつひとつ設定ファイルを手直ししていく。

◆/etc/hosts の修正
  127.0.0.1 localhost
  192.168.100.205 solaris loghost

◆/etc/netmasks の修正
  192.168.100.0 255.255.255.0

◆/etc/defaultrouter の作成
  192.168.100.250

◆/etc/resolv.conf の作成
  nameserver 192.168.100.220
  nameserver 192.168.100.221

そして、設定を反映させる。念のため、しっかりと設定も渡しておく(笑)

# ifconfig bge0 down
# ifconfig bge0 192.168.100.205 netmask 255.255.255.0 broadcast 255.255.255.255
# ifconfig bge0 up

最後に、FTPを使えるように設定する。

# svcs -a | grep ftp
disabled       10:08:33 svc:/network/ftp:default
# svcadm enable svc:/network/ftp
# svcs -a | grep ftp
online         15:22:52 svc:/network/ftp:default

ここまで設定できたら、telnetでログインしてみる。無事成功したものの・・・ユーザーディレクトリに何かファイルがある。

-rw-r–r– 1 hoge hoge 136 3月 28日 14:04 local.cshrc
-rw-r–r– 1 hoge hoge 157 3月 28日 14:04 local.login
-rw-r–r– 1 hoge hoge 174 3月 28日 14:04 local.profile

これらはユーザープロファイルっぽいので、名前を変更すればよさそう。

$ mv local.cshrc .cshrc
$ mv local.login .login
$ mv local.profile .profile

一旦ログアウトして、再度telnetからログインすると、きちんとパスなども設定されて、これで初期設定は終了。もうシリアル接続はしなくてよさそうです。


[HP-UX] コンパイラが変?

さて、デバッガが正常に動いたのでこれで万事解決!かと思っていたら、開発で指定されているコンパイラでデバッグオプションが指定できないから、デバッグできないよ!何とかして!と、またしてもヘルプが。

コンパイラは何を使っているか聞いてみると、aC++だという。よくわかんないので、自分で調べてみた。

とりあえずログインして、バージョンチェック。

# cc –version
(Bundled) cc: HP aC++/ANSI C B3910B A.05.50 [May 15 2003]

ん?バンドル版?とりあえずネットで調べてみると、このバージョンでもデバッグオプションは使えるはず・・・。なのに、確かにコンパイル時にデバッグオプションをつけると、

# cc -g -o hoge hoge.c
(Bundled) cc: warning 922: "-g" is unsupported in the bundled compiler, ignored.

と警告が出る。バンドル版コンパイラはサポートしていません、ですかぁ。

そしてさらにネットで調べてみると、どうやら/usr/ccs/binのccは、カーネルコンパイル用らしい。だから、その他のオプション(-Acとか、-AAとか)も警告が出て使えないのか。なるほど、これは開発用ではないのね(ノ∀`)

ということで、別途gccなどを入れてもらった上でデバッグしてくれるようお願いして、調査終了。

自分がデバッガの動作確認をしたときのgccを残しておけばよかったかなー、と反省(ノ∀`)


[HP-UX] デバッガのインストール

自分は担当していない別プロジェクトで、HP-UXの11i v2を使っているのですが、どうもデバッガがうまく動いてくれないとのこと。なんとかしてくれ~とヘルプがきたので、さっそく手をつけてみました。

とりあえずいろいろいじってみると、HP-UXって何とも使い辛い・・・。AIXに慣れてしまっているせいか、はるか昔にいじったときより使い勝手が悪いように感じます。

そんな訳で試行錯誤しながら、HP-UX添付のDVDを覗いていると、どうやらgdbとpxdbの2種類のデバッガがある様子。そして、うまく動いてくれないのがgdbということだったので、早速pxdbをインストールしてみることに。

まずはDVDドライブのデバイスを確認。

# ioscan -funC disk

でろでろ~っとデバイスが表示されるので、DVDドライブのデバイス名を探します。デバイス名がわかったら、次はマウント。

# mount DVD-DEVICE-NAME /dvdrom

これでマウント完了。インストールツール?を立ち上げます。

# swinstall -i -s /dvdrom

CUIのグラフィカルな?画面になって、DVDに入っているアプリの一覧が表示されるので、それを選択して、インストールを実行すればいいのですが・・・なぜか、pxdbが一覧に表示されず。別のディレクトリとして認識されているのかと思って、全部のディレクトリをチェックしても、ない・・・。

困った・・・。

だったら、DVDにバイナリで入っているんだから、直接コピーしちゃえ!ということで、直接コピーしていましました(笑)

# cd /dvdrom/DebugPrg/DEBUG-PRG/opt/langtools/bin
# mkdir /tmp/pxdb
# cp ./pxdb* /tmp/pxdb
# chmod 755 /tmp/pxdb/*

さあ、これで使えるはず!!と思ったら、なんかパーミッションがダメ!と怒られる・・・。fileコマンドでファイルを見てみたら、なんとzip圧縮されているではありませんか。こりゃ思いもよらなかった(ノ∀`)

ということで、一旦ファイル名を変更してから、解凍。

# cd /tmp/pxdb
# mv pxdb pxdb.zip
# mv pxdb32 pxdb32.zip
# mv pxdb64 pxdb64.zip
# gzip -d -S .zip pxdb
# gzip -d -S .zip pxdb32
# gzip -d -S .zip pxdb64

今度こそこれで使えるはず!!と、使ってみたところ・・・正常に動きました。後はパスの通ったディレクトリにコピーして作業終了。お疲れ様デシタ(´∀`)


スポンサーリンク