タグ

Linuxとperlに関するstealthinuのブックマーク (3)

  • Sys::Syslogを使ってロギング - 百舌日記

    PerlでSyslogへの出力を行いたい時は、Sys::Syslogを使うと簡単に出力できます。 出力先のファイルは/etc/syslog.confにて設定を行います。以下を追加しました。local6というファシリティを利用する前提。syslogはlocal0からlocal7まで自由に設定できるようになっているので6というのは適宜変更してください。 local6.* /var/log/{ログファイル名}confを変更したときは、syslogdの再起動が必要です。 $ ps axuw | grep [s]yslogd $ kill -HUP {syslogdのpid}で再起動をします。 以下のようにログを出力します。 #!/usr/bin/perl use Sys::Syslog qw(:DEFAULT setlogsock); #Unixドメインソケットを通じて出力する setlogsoc

    Sys::Syslogを使ってロギング - 百舌日記
    stealthinu
    stealthinu 2016/09/28
    perlでsyslogに吐くにはSys::Syslogで
  • Tips (CGI, Perl, Unix and etc.)

    Tips 目次 Tips (CGI&SSI) ブラウザの表示を変化させない CGI スクリプト(Status: 204 No Content) 他の URI (URL) にジャンプする CGI スクリプト(Location フィールド) CGI のタイムアウトおよびブラウザの中断 CGIスクリプト中で重い処理をバックグランド実行 サーバによるタイムアウトを回避 サーバによるタイムアウトを回避&重い処理の保護 SSI における HTML 出力の中断 CGI出力内容のコピーをファイルに出力 CGIによるブラウザでのダウンロード POST のサイズ制限 Content-Encodig による gzip 圧縮 Tips (Perl) flock の使い方 排他制御 実効 UID の切替え perl の setuid スクリプト perl の system、exec、パイプ fork, system

    stealthinu
    stealthinu 2016/01/05
    perlのCGIで非常に時間がかかる処理をさせるような場合にSIGPIPEで死なないようにforkしてそっちで処理を継続させるサンプル。
  • 第6回 UNIXプログラミングの勘所(3) | gihyo.jp

    ネットワークプログラムとSIGPIPE 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。これは多くの場合、SIGPIPEの処理を忘れていることが原因です。SIGPIPEとは、切断されたネットワークソケットなどにデータを書き込もうとした際に送出されるUNIXシグナルです。特に設定しない限り、プロセスはSIGPIPEを受け取ると強制終了されます。そのため、通信が突然切断される可能性のあるTCPサーバにおいては、SIGPIPEを無視するよう設定する必要があります。 # デフォルトの動作(SIGPIPEの場合はプロセスの終了)に設定 $SIG{PIPE} = 'DEFAULT'; # SIGPIPEを無視するよう設定 $SIG{PIPE} = 'IGNORE'; # SIGPIPEを受信した際に実行するサブルーチンリファレンスを # 設定 $SIG{PI

    第6回 UNIXプログラミングの勘所(3) | gihyo.jp
    stealthinu
    stealthinu 2016/01/05
    perlのCGIなどでクライアントの接続が切れている状況で出力しようとするとSIGPIPEが発生してその時点でperlが死ぬ。$SIG{PIPE}を設定するか時間掛かる処理はforkしておく。
  • 1