※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


Solaris 9

  • nkf が入ってない

OpenBoot PROMパスワードを変更

$ su
# eeprom security-password=
Changing PROM password:
New password: <パスワードを指定>
Retype new password:<パスワードを確認>
【参考】
  • PROMコマンド リファレンス → http://www.syns.net/3/index.html#3
  • v100 は lom (電源管理モジュール) が動いてる
  • v210,v240 は ALOM が動いてる
    • デフォルトのP/Wは admin

画面が化け化けになった

バイナリファイルをうっかり cat で表示したりすると、画面が文字化けしてしまいます。
こういう場合は、以下のようにして回復させます
echo ^v^[c
わかりやすく入力を示すと…
[e]
[c]
[h]
[o]
[スペース]
[Ctrl]を押しながら v
[Esc]
[c]
[Enter]

topコマンドが無いけど?

代わりに prstat コマンドを使いましょう。

引数が長すぎます

【現象】
例えば、あるディレクトリの下にファイルが非常にたくさんあるとしましょう。
ここで次のように入力した場合、上記のようなメッセージが出される場合があります。
ls *
この場合、次のように指定しても同様のエラーになります。
rm *
【原因】
上記の場合、次のように入力したらうまく表示されたことでしょう。
ls
つまり、ワイルドカード指定を実際のファイル名一覧にした場合、あまり数が多いと展開できないということ。
作業用のバッファに収まらないくらいに長い(いっぱいある)ものは処理できないのでエラーになるということか。
では、どれくらいならOKかというと、OSや設定によって違ってきます。

【対策】
  • その1
find コマンドと組み合わせる方法があります。
次のようにすれば、ファイルが1つづつ rm コマンドに渡されるので問題解決です。
find . -exec rm {} \;
  • その2
xargs コマンドと組み合わせる方法があります。
echo * | xargs rm
"echo *" では、カレントディレクトリにあるファイル名が表示されます。
それをパイプで xargs が受けて rm コマンドに渡すということです。
find の場合と異なるのは、ファイル名が1つづつ rm コマンドに渡されるわけではないという点です。
つまり、「今回発生した制限にかからないくらい少なくして渡す」ことを繰り返します。(処理が早い。ただし場合による)
  • その3
csh の代わりに sh を使う。
※csh の場合、その2を使っても同様の症状が出ることがあります。

【備考】
実験してみた

[条件]
  • ファイル名は 'a' + n + '.dat' のように付与する。(n = 1,2,3,...)
  • ファイル実体はサイズ0となるよう touch で作成する。
  • この状態で "ls *" と入力するとどうなるか?

[結果]
  • sh や bash では、60,000ファイルはOK
 さすがに100,000ファイルになると、コマンド自体の(本来の)制限で引っかかるよう。
 シェル自体の制限は無いと考えてもよさそう。
  • csh では 1,705ファイルまでならOK
 ちなみにファイル名を長くしても同じなので、文字としてのサイズではなく、エントリ数の限界らしい。

BSキーが利かない!?

Solaris の場合、デフォルトでは [Ctrl]+[BackSpace] で1つ手前の文字が削除されます。
[BackSpace] のみでそうするためには、次のように入力します。
stty erase [BackSpace][Enter]

クーロンが編集できない!?

Solaris では、デフォルトのエディタが ed になっているため、
crontab -e でクーロンを編集しようとすると、ed が起動します。
ed を終了するには [q][Enter] と入力します。
※クーロン編集中のままターミナルを切るとよくないことが起こるかも。

エディタを vi などにするには環境変数 EDITOR を設定します。(sh での例)
EDITOR=vi
export EDITOR
これで crontab -e とすると vi が起動されるようになります。

改行コード

Windows で作成したままのテキストファイルだと、vi で編集すると行末に "^M" が表示されます。

対策1)コマンドラインから次のように操作します。
tr -d '\r' <入力ファイル名 >出力ファイル名

対策2)vi でファイルを編集
:%!tr -d '\r'&br;
:wq

対策3)Windowsのテキストエディタで保存時改行コードを LF のみに設定します。

echo コマンド

GNU の echo コマンドは、指定する文字列にエスケープコード( "\n" など) を
指定すると適宜解釈されますが、Solaris の echo コマンドではできません。
同様のことをする場合、Solaris では printf コマンドを使います。

date コマンド

GNU の date コマンドでは、書式に "%-m" などの書き方ができますが
Solaris の date コマンドでは指定できません。( "%m" のように書きます)

シャットダウン

停止 shutdown -y -g0 -i0
停止&電源断 shutdown -y -g0 -i5
リブート shutdown -y -g0 -i6

OSバージョン番号

一般的な表記 Solarisな表記 Sunな表記
SunOS 4.x.x (なし) SunOS 4.x.x
Solaris 2.6 同左 SunOS 5.6
Solaris 7 Solaris 2.7 SunOS 5.7
Solaris 8 Solaris 2.8 SunOS 5.8
Solaris 9 Solaris 2.9 SunOS 5.9
  • バージョンを確認するには uname -a
  • リリース情報は /etc/release を参照

ライブラリのパスを登録

libraryとは、ソフト(バイナリ)がSolaris上で実行されるに必要な関数が収録されているファイル群です。
多くのソフト(バイナリ)が「/usr/lib」等のlibraryファイルを参照しています。
これらlibraryの一部が欠けていたりすると、そのソフト(バイナリ)は、正常に動作しません。
デフォルトでは「/usr/lib、/usr/openwin/lib、/usr/dt/lib」の3つが登録されていますが、
色々とパッケージを導入していくと「/usr/local/lib」にも導入されていきます。
しかし、後で追加された「/usr/local/lib」はシステムに登録されていません。
これでは「/usr/local/lib」を使うソフト(バイナリ)に支障が出るので、登録する必要があります。
一般的な方法として、crleコマンドの使用、.profileにLD_LIBRARY_PATHの登録の2種類があります。
両者の違いは、前者はシステム的に登録。後者はユーザーごとに登録です。「/usr/local/lib」は、よく使われるのでシステムに登録した方が便利なのです。
ここではcrleコマンドを使用します。設定にはroot権限が必要です。

$ crle -c /var/ld/ld.config -l /usr/lib:/usr/local/lib:/usr/openwin/lib