cgiで呼び出したプログラムを数分後killする方法
- cgiで呼び出したプログラムを指定した時間後にkillする方法について教えてください。プロセスIDはすでにわかっており、killコマンドは使えます。
- また、cgiから受け取ったメールアドレスに対して、プロセスをkillした後の処理結果を送信したいです。どのように実装すればよいでしょうか。
- 質問ばかりで申し訳ありませんが、お知恵を拝借させていただければと思います。
- ベストアンサー
cgiで呼び出したプログラムを数分後killする
cgiで呼び出したプログラム(延々と実行します)を、 指定した時間後にkillするcgiを作りたいです。 ここでプロセスidはすでにわかっており、 killコマンドは使えます(linuxを自分で立ち上げてるので) というか、chmod 4755にしておくので 指定する時間はformから受け取るつもりです。 時間は数分、数時間単位、もしくは数日単位です。 あと、formからメールアドレスを受け取って、 プロセスをkillしたあと、その処理結果を受け取ったメールアドレスに送信もしたいです。 メールサーバは立ち上げています。 質問ばかりですいません。 お知恵を拝借させてくださいm(__)m
- CGI
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
数分や数時間ならともかく、数日動きっぱなしなんですか?(^^; 取りあえずですが、こんな感じで出来ると思います。 1.CGIからbackgroundで延々と実行するプログラムを実行。 2.処理結果は逐次、プログラム名+PIDといった感じのデータファイルに書いておく。 3.同時にCGIから計算プログラムをkillするプログラムをbackgroundで起動する。 4.起動パラメータにはsleep時間とkillするPID、メールアドレスを渡す。(shellで書けば簡単ですね) 5.指定時間sleep後、killしたら、該当のデータファイルをメールで送信。 ただサーバーのCPU負荷を考えると、こんなものを大量に起動されたら簡単に落ちちゃうと思いますが…。
関連するQ&A
- PIDではなくプロセス名を指定してkillする方法
PIDではなくプロセス名を指定してkillする方法 皆さんこんにちは。 Linuxで使うkillコマンドに関して教えてほしいことがあります。 killを使う際は、 killの後ろにPIDを指定してkillを実行していましたが、 PIDではなくプロセス名を指定して、 該当するプロセスを一度に終了させる方法はあるでしょうか。 宜しくお願い致します。 OS:Fedora9
- ベストアンサー
- Linux系OS
- 指定プログラムのプロセスを監視・killするには?
CGIが不正終了(もしくは無限ループ)して、CPUに負担をかけ続けることで悩んでいます。 topコマンドで負担をかけているプロセスを発見してkillすることは可能ですが、これを自動で実行するようなことはできないでしょうか。 cronを使って1分間に1度チェックし、3分以上同じプロセスが動いている場合にkillしたり、もしくは不具合の起こる特定のプログラム(hoge.cgi等)を監視してkillするということができるようにしたいのです。 自分で考えたのは「top -n 1」で出力して、3分間同じプロセスがCPUに負担をかけ続けている場合にkillできるようにphpなどでプログラミングすることでしたが、もっと簡単にできるような方法がありますでしょうか。
- 締切済み
- Linux系OS
- linuxで絶対パスからプロセスをkillの仕方
事情があって、linuxで絶対パスからプロセスをkillしようと思ったのですが、ググっても、プロセスidからkillする方法などしか出てきませんでした。 教えてください。
- ベストアンサー
- Linux系OS
- UNIX(Linuxでも)のkillコマンドで、終了メッセージを抑止し
UNIX(Linuxでも)のkillコマンドで、終了メッセージを抑止したい。 例えば、シェルの中で以下のようなコマンドがある場合に、 「○○が終了しました」とメッセージが出力されてしまいます。 抑止方法があれば教えてください。 kill xxx > /dev/null 2>&1 ※xxxはプロセスID よろしくお願いします。
- ベストアンサー
- Linux系OS
- 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はありませんというエラーメッセージが出ました・・・。パソコンを停止しなければ、そのコマンドで上手く停止・復帰が出来たのですが・・・。 パソコンを再起動しても、実行プログラムを停止・再開させる方法をご存知の方がいれば、是非アドバイスを頂きたいです。
- 締切済み
- Linux系OS
- ホームページサービスのメール送信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が改善される方法はないでしょうか。
- 締切済み
- HTML
- 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
お礼
ありがとうございました。 なんとか、4まではできました^^ あとは、メール送信のみ! systemでコマンドを実行させればいいかなと思っています。 あ、ちなみに、同時にこのcgiを実行できなくするつもりです。 どうやればいいんだろう・・・汗 分からなければ、また質問します。 ありがとうございました