|
教えていただきたいことがあります。 UNIXについてはほとんど初心者なのですが、あるとき急に管理をしろ! と言われてしまいました。はじめはなんのトラブルもなかったのですが、 何日か前に急に他のマシンから自マシンへtelnet接続ができなくなって しまいました。 原因はなんなのでしょう? 機種は SUN ULTRA60 Solaris2.6が入ってます。もちろん自マシンにログイン後 自マシンの他のユーザへのtelnetでのログインもできないのです。 お願いします。 |
|
はじめまして、YOUKOと申します。 C-ISAMを使ってAPLを作成したいのですが 初めてで右も左もわかりません。 どこか初心者用のHPありませんか? OS:Solaris7です。 |
|
>>1881 akihiro > psコマンド(ps -l)を実行したときの C 項目の数値の意味 > なんですけどマイナス値のプロセスがあったのですが OS は何ですか? FreeBSD には C という項目はないように 思えます。Solaris2.6 では「スケジューリングのための プロセッサ利用率、ただし obsolete」と man に書いて あったような気がしますが、それ以上の事はわかりません。 >>1882 クワ > 何日か前に急に他のマシンから自マシンへtelnet接続が > できなくなってしまいました。もちろん自マシンにログイン後 > 自マシンの他のユーザへのtelnetでのログインもできないのです。 それは、問題のマシンで % telnet localhost でログインできないということですね? 全体的に情報が不足しています。「できない」とはどういう意味ですか? 何かエラーメッセージが出ますか? 何秒か待たされたりしますか? login: プロンプトは出ますか? 一般的には inetd が telnet ポートを見張り、接続があると inetd が telnetd を実行し、telnetd が認証を行います。もし % netstat -a | grep telnet tcp4 0 0 *.telnet *.* LISTEN という出力が出ないならば、telnet ポートを監視するサーバがいない ということなので、inetd の問題です。/etc/inetd.conf をチェック しましょう。 他にも tcpwrapper が接続を弾いている、などの可能性もありますが、 そこらへんは /var/log/ の下のログを見ましょう。telnet した後、 ls -lt /var/log すれば、最終更新時刻順にファイル一覧が表示 されますので、最も最近に更新されたログファイルの中を見れば 何かメッセージが書いてあるかもしれません。 >>1883 YOUKO > C-ISAMを使ってAPLを作成したいのですが C-ISAM という物を知らないのですが、Informix の DB 関係の ライブラリか何かでしょうか。そういうものは Informix の出して いるマニュアルを読むのが早道かと思います。 # 同様に、個人が提供している Oracle の情報も少ないですね。 |
|
>> psコマンド(ps -l)を実行したときの C 項目の数値の意味 >> なんですけどマイナス値のプロセスがあったのですが >OS は何ですか? ..(略)..、それ以上の事はわかりません。 HP-UNIXです。私なりに調査していますので解りましたら 載せさせていただきます。 |
|
排他処理のページを見て質問なのですが、シグナル処理でCGIを終了 させたくない場合はどうすればよいのでしょうか? シグナルを無視みたいなことはできないんでしょうかね?? よろしくお願いします。 |
|
>>1886 chie > シグナルを無視みたいなことはできないんでしょうかね?? perl なら $SIG{QUIT} = 'IGNORE'; などとすれば無視できます。ただし、SIGKILL と SIGSTOP だけは無視できません (ハンドラの設定も不可)。 |
|
>ただし、SIGKILL と SIGSTOP >だけは無視できません (ハンドラの設定も不可)。 横からすみませんが、無視できずハンドラの設定不可な シグナルは、どのような意味があるのでしょうか? (なぜ送られてくるのでしょうか?) |
|
>>1888 dio > 無視できずハンドラの設定不可なシグナルは、 > どのような意味があるのでしょうか? シグナルをブロックしたプログラムが誤って無限ループしてしまったら 止める術がなくなります。 なので、プロセス側から制御できない SIGKILL や SIGSTOP という シグナルを飛ばすことで、OS に強制的にプロセスを殺したり、動作を 止めたりするわけです。例をあげると、 #!/usr/bin/perl $SIG{TERM} = sub { print "TERM!\n" }; # kill コマンド対策 $SIG{INT} = sub { print "INT!\n" }; # Ctrl-C 対策 while (1){ printf("%d\n", $i++); sleep 1; } というプログラムを実行すると、Ctrl-C や kill プロセス番号 で 終了させることはできません。しかし Ctrl-Z で動作を止めたり、 kill -9 (=kill -KILL) でプロセスを殺すことはできます。 # 実際は他にもシグナルはありますので、kill -HUP などで # 殺すことが可能ですが、全てプログラム側でブロック可能です。 なお、SIGINT や SIGTERM を受けると、ファイルなどの後始末を 行ってから終了するプログラムは多いです。なので、いきなり SIGKILL で強制終了させるのはおすすめできません。まず SIGTERM や SIGINT を試して、それでも死ななければ SIGKILL を使うように して下さい。 |
|
えーと、私は何か勘違いをしていたかもしれません; >なので、プロセス側から制御できない SIGKILL や SIGSTOP という >シグナルを飛ばすことで、OS に強制的にプロセスを殺したり、動作を >止めたりするわけです。 これはわかります。SIGKILL、SIGSTOPの必要性はわかるのですが、 プロセスから制御できない物をなぜシグナルとして送る 必要があるのだろうかと思ったのです。 私はOSがプロセスにSIGKILL や SIGSTOPをとりあえず送って、 強制終了させる物と思っていたのですが、この考えが方が間違いでしょうか? |