« 2011年4月10日 - 2011年4月16日 | トップページ | 2011年5月1日 - 2011年5月7日 »

2011年4月21日 (木)

最近学んだこと---ctimeとdaemon

ちなみに、Cのライブラリ関数のお話です。

○ctime
ctimeというのは、

   #include <time.h>
   char *ctime(const time_t *timep);
   char *ctime_r(const time_t *timep, char *buf);
カレンダー時刻から日付文字列に変換してくれるというライブラリ関数です。
日付文字列というのは
    "Thu Apr 21 17:38:56 2011\n"
みたいな形式で、「かならず26バイト」とのこと。
ところが!!この関数、上の例にもあるように「最後に改行を付けてくれます」
これ、すごく余計なお世話だと思うけど、どうなのかなあ。この文字列をそのまま
csvファイルに出力したらえらいことになりましたよ。

○daemon
通常、daemonになるプログラム---要するにずっと動き続けるプログラムですな---
を作るときは、親と縁を切るだのプロセスリーダーになるだの入出力を切るだの...
とまあ、いろいろ厄介なのですが、この関数、

   #include <unistd.h>
   int  daemon(int nochdir, int noclose);
を使えば簡単にできてしまいます。作業ディレクトリの変更や、標準入力・標準出力・
標準エラーを/dev/null にリダイレクトするとかが不要ならば、
   daemon(1,1);
をプログラムに挿入するだけでOKでした。本当にこれでいいのかなあ...

以上、最近学んだことでした。

にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村

| | コメント (0) | トラックバック (0)

linuxが重いと思ったら...

ずっと使っていると案外わからないのですが、linuxが重く感じる時があります。
私の場合、職場でも家庭でも非力なCPUと乏しいメモリ(最も容量が多いもの
でも1GBのノート)のマシンばかりなので、元々厳しいのですが、時々システム
モニタとか、もしくはtopコマンドとかで確かめた方が良いですね。
ちなみに、Vine linux、GNOMEでchromium、sylpheedを動かしているくらいだった
ら、どんなに非力なマシンでも、通常CPU利用率がずっと100%なんていうこ
とはありませんし、load averageも1以下だと思います。
ところが、3台ほどひどいマシン、CPUがずっと天井をうちっぱなし...というのが
ありました。
その原因は...

その1:印刷の不具合によるもの−−−

ずっと昔から、CUPSでの印刷に失敗したジョブがキューに沢山ありまして、あま
り気にもしていなかったのですが、topやってみるとずっと下記のような状態でした。

 PID USER  PR  NI  VIRT RES SHR S %CPU %MEM    TIME+  COMMAND
5196 lp        20   0  2144  844  456  R   33.2     0.1   4:43.53   xxxxmodule     
5209 lp        20   0  2144  868  476  R   33.2     0.1   4:41.89   xxxxmodule

某メーカーのプリンタ用のドライバではないかと思います。別のPCでは別のメー
カーのプリンタドライバが動いてました。ずっと失敗したジョブを処理しようとして
たんでしょうね。このケースでは、マシンをリブートしても高負荷が続きます。
一番古いジョブは昨年のものでした(ひどい!)。
lprmした上で、上記のプロセスをkillしたら、非常に快適になりました。

その2:metacityがいくつか動いてる!

家のマシンですが、ログインしていない状態でもmetacityが二つほど動いてまして、
これがCPUのほぼ100%を使ってました。これってGNOMEの標準ウィンドウマネー
ジャだそうですが、通常は以下の程度で引っ込みます。

   PID   USER     PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2280 keroro     20   0 51980  9.9m  8704 S     1.7     2.0   1:51.84   metacity

多分、XサーバかXアプリケーションの不具合でXごと落ちた時に、metacityだけ
生き残ったのでしょう。この場合も、二つのmetacityのプロセスをkillしただけで、
ひょーーと思うほど軽くなりました。

とまあ、いずれもトホホな事情で、近頃の高性能マシンならこんなこと無いかも知れ
ませんが、「なんか前より重いなあ」とお感じでしたらご確認を。
・・・・・世界的に使われている某OSなら良くあることでしたが....原因がわかるだけ
でもlinuxの方がマシかな

にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村

| | コメント (0) | トラックバック (0)

« 2011年4月10日 - 2011年4月16日 | トップページ | 2011年5月1日 - 2011年5月7日 »