cgiで呼び出したプログラムを数分後killする方法

このQ&Aのポイント
  • cgiで呼び出したプログラムを指定した時間後にkillする方法について教えてください。プロセスIDはすでにわかっており、killコマンドは使えます。
  • また、cgiから受け取ったメールアドレスに対して、プロセスをkillした後の処理結果を送信したいです。どのように実装すればよいでしょうか。
  • 質問ばかりで申し訳ありませんが、お知恵を拝借させていただければと思います。
回答を見る
  • ベストアンサー

cgiで呼び出したプログラムを数分後killする

cgiで呼び出したプログラム(延々と実行します)を、 指定した時間後にkillするcgiを作りたいです。 ここでプロセスidはすでにわかっており、 killコマンドは使えます(linuxを自分で立ち上げてるので) というか、chmod 4755にしておくので 指定する時間はformから受け取るつもりです。 時間は数分、数時間単位、もしくは数日単位です。 あと、formからメールアドレスを受け取って、 プロセスをkillしたあと、その処理結果を受け取ったメールアドレスに送信もしたいです。 メールサーバは立ち上げています。 質問ばかりですいません。 お知恵を拝借させてくださいm(__)m

noname#6448
noname#6448
  • CGI
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • MarrowG
  • ベストアンサー率53% (41/76)
回答No.1

数分や数時間ならともかく、数日動きっぱなしなんですか?(^^; 取りあえずですが、こんな感じで出来ると思います。 1.CGIからbackgroundで延々と実行するプログラムを実行。 2.処理結果は逐次、プログラム名+PIDといった感じのデータファイルに書いておく。 3.同時にCGIから計算プログラムをkillするプログラムをbackgroundで起動する。 4.起動パラメータにはsleep時間とkillするPID、メールアドレスを渡す。(shellで書けば簡単ですね) 5.指定時間sleep後、killしたら、該当のデータファイルをメールで送信。 ただサーバーのCPU負荷を考えると、こんなものを大量に起動されたら簡単に落ちちゃうと思いますが…。

noname#6448
質問者

お礼

ありがとうございました。 なんとか、4まではできました^^ あとは、メール送信のみ! systemでコマンドを実行させればいいかなと思っています。 あ、ちなみに、同時にこのcgiを実行できなくするつもりです。 どうやればいいんだろう・・・汗 分からなければ、また質問します。 ありがとうございました

関連するQ&A

  • PIDではなくプロセス名を指定してkillする方法

    PIDではなくプロセス名を指定してkillする方法 皆さんこんにちは。 Linuxで使うkillコマンドに関して教えてほしいことがあります。 killを使う際は、 killの後ろにPIDを指定してkillを実行していましたが、 PIDではなくプロセス名を指定して、 該当するプロセスを一度に終了させる方法はあるでしょうか。 宜しくお願い致します。 OS:Fedora9

  • 指定プログラムのプロセスを監視・killするには?

    CGIが不正終了(もしくは無限ループ)して、CPUに負担をかけ続けることで悩んでいます。 topコマンドで負担をかけているプロセスを発見してkillすることは可能ですが、これを自動で実行するようなことはできないでしょうか。 cronを使って1分間に1度チェックし、3分以上同じプロセスが動いている場合にkillしたり、もしくは不具合の起こる特定のプログラム(hoge.cgi等)を監視してkillするということができるようにしたいのです。 自分で考えたのは「top -n 1」で出力して、3分間同じプロセスがCPUに負担をかけ続けている場合にkillできるようにphpなどでプログラミングすることでしたが、もっと簡単にできるような方法がありますでしょうか。

  • linuxで絶対パスからプロセスをkillの仕方

    事情があって、linuxで絶対パスからプロセスをkillしようと思ったのですが、ググっても、プロセスidからkillする方法などしか出てきませんでした。 教えてください。

  • UNIX(Linuxでも)のkillコマンドで、終了メッセージを抑止し

    UNIX(Linuxでも)のkillコマンドで、終了メッセージを抑止したい。 例えば、シェルの中で以下のようなコマンドがある場合に、 「○○が終了しました」とメッセージが出力されてしまいます。 抑止方法があれば教えてください。 kill xxx > /dev/null 2>&1 ※xxxはプロセスID よろしくお願いします。

  • CGIの呼び出し方法について

    CGIの設定方法について質問があります。 今まで正常に動いていたhtml書き出しのCGIファイル(A.cgi)をコピーしてB.cgiを作りました。 A.cgiに書かれているメールの送信先アドレス$mailtoを変更するとその変更が反映されるのですが、 B.cgiについて同様のことをしても変更が反映されず、変更前のアドレスにメールが送られてきます。 cgiの呼び出し元であるC.htmlにはB.cgiを呼び出すよう記述されており、 書き出されたhtmlはB.cgiとなっています。 <form action="../cgi-local/B.cgi" method="post" name=""> ですが、A.cgiを読みに行っているためA.cgiに書かれているメールの送信先アドレスに送信されています。

    • ベストアンサー
    • HTML
  • プログラムの一時停止について

    Linuxである計算プログラムを実行しています。そのパソコンをシャットダウンする必要があるので、現在動いているそのプログラムをシャットダウン前に停止して、パソコンの再起動後に計算も復帰させたいと思っております。そのプログラムに一時停止機能はございませんので、OS側でその作業を行いたいと思っています。 はじめ、”kill -STOP プロセスID”でプログラムを停止して、”kill -CONT プロセスID”で復帰できると思ったのですが、それで復帰させようと思うと、そのようなプロセスIDはありませんというエラーメッセージが出ました・・・。パソコンを停止しなければ、そのコマンドで上手く停止・復帰が出来たのですが・・・。 パソコンを再起動しても、実行プログラムを停止・再開させる方法をご存知の方がいれば、是非アドバイスを頂きたいです。

  • ホームページサービスのメール送信CGIについて

     HP画面に送信メール用CGI( <form action="/cgi-bin/mail2.cgi" method="post"> )をHTML本文に貼り付けアップ後、実際にHPから書き込み操作し「送信」ボタンを押すのですが結果何度繰り返しても同じで、指定先メールアドレスに一切何も届きません。 送信ボタンを押した後、サイト表示画面では送信完了となっています。 他のプロバイダーのCGIタブと比べると、auは少し違っているようですが入れ替えるとその部分がエラーで表示されます。 もうこのCGIは諦めようかとも思いますが、なにかアドバイス頂ければ幸いです。

    • 締切済み
    • CGI
  • cgiでメールを発信する時のユーザ

    UNIX(SUN,Solaris2.4)の環境下でcgiよりsendmailコマンドでメール を送信するようなプログラムを作成しています。 メール送信をした場合、そのデーモン(プロセス)がnobodyのユーザで 実行されているのですが、このユーザをnobodyではなくrootや違うユーザ などで送信プロセスを発行することは出来ないのでしょうか?

  • CGIを使わないフォームメール

    CGI使用不可のWebサーバーにフォームメールを作成しました。HTMLで <FORM ACTION="mailto:送信先メールアドレス" METHOD="POST"> としたものです。 これを使うと 1.送信ボタンを押したら、「このフォームを送信すると、電子メールアドレスが受信者に公開され、フォームのデータが暗号化されずに送信されます。この送信は続行することもできますが、取り消すこともできます。」という非常に物騒なメッセージがでる。 2.受信した時の件名が「Microsoft Internet Explorer から投稿されたフォーム」となり件名を指定できない。 3.受信データがPOSTDATA.ATTという添付ファイルになり、内容がエンコードされたバイトコードでデコードしないと内容が読めない。 CGIを使ってSendmailで送信させればいいじゃないの・・・と思うでしょうが、ISPがCGI使用不可なのです。HTMLフォームで先の1~3が改善される方法はないでしょうか。

  • HDMLでCGIを使おうと思うのですが、、

    アンケートフォームから入力してもらったデータをCGIを介して「送信」「お礼」の画面を表示させたいのですが、HDMLではファイルサイズを1.2kb以下にしなければならず <ENTRY NAME="MAIL" KEY="mail"> <ACTION TYPE="ACCEPT" TASK="GO" LABEL="次へ" DEST="#NAME"> 連絡先のメールアドレスをご入力下さい </ENTRY> <ENTRY NAME="NAME" KEY="name"> <ACTION TYPE="ACCEPT" TASK="GO" LABEL="次へ" DEST="ez_form_b.hdml"> お名前を記入してください </ENTRY> でez_form_aからbへジャンプは出来たのですが ez_form_b.hdmlのCGIでez_form_aの変数を使うにはどうすればよいのでしょうか? ちなみにez_form_bでは <ACTION TYPE="ACCEPT" LABEL="送信" TASK="GO" DEST="/cgi-bin/form.cgi?<!-- CGI Param -->&<!-- CGI Encode:02CSVNULL:ADRESS -->=$adress&<!-- CGI Encode:03CSVNULL:mail -->=$mail&<!-- CGI Encode:04CSVNULL:NAME -->=$name"> と記述しています。どなたかご指導お願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう