![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
さくらインターネットのレンタルサーバーのOSはFreeBSDですが、
たとえば、自サイトのCGIの負荷が高くなるとホームページが開かなくなります。
個人のページなので、強制的にプロセスを削除するスクリプトをperlやシェルスクリプトで書きたいのですが、どのように書けばよいでしょうか?
topとすると、
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
23981 test 1 4 0 16180K 13144K select 0 0:00 0.00% perl5.8.
これをスクリプトで削除する方法です。
人間が見ればCOMMANDがperl5.8.となっているので、これがcgiでPIDは23981なので
kill -9 23981とすればよいのはわかりますが、
スクリプトで実行する方法が知りたいです。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> 人間が見ればCOMMANDがperl5.8.となっているので、これがcgiでPIDは23981なので
> kill -9 23981とすればよいのはわかりますが、
どうしようもない異常な状態で行うなら仕方ありませんが、そうでないのに kill -9(kill -KILL)は避けた方が良いです。
ゾンビになっても適当に再起動できるコンピュータなら良いですが。
CGIプログラムに非同期終了させる機能を入れてはいかがでしょうか。
例えば、SIGUSR1が送られたら、exit終了する様なシグナル処理を入れておけば、kill -USR1 23981で終了させる事ができます。
> スクリプトで実行する方法が知りたいです。
シェルスクリプトでしょうか、perlスクリプトでしょうか。
使いたいスクリプティング言語の種類が分からないのでなんとも答えにくいですが、大抵の言語に機能は備わっているはずですよ。
シェルスクリプトならkillコマンドを使えば良いでしょうし、perlやC言語などならkill関数を使う事やsystem関数などのコマンドを実行できる関数や機能を使ってkillコマンドを実行するなどの方法で実現できるかと思います。
強制的なプロセスのシグナル停止ではない方法も平行してお調べになってはいかがでしょうか。
ウェブサーバの設定(プロセス数などのリソース調整)で行えた方が良さそうな感じの問題に見えますので。
http://www.drk7.jp/MT/archives/001594.html
※ 高負荷になりすぎないように、起動するCGIプロセス数を制限してしまうのも一手法です。無理にKILLすれば、利用者が送信したデータが消えてしまったりもしますから。(シグナル処理で終了すれば、データを処理してから終了するようにプログラムを書く事もできますが)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PostgreSQL postgreSQLをbashで実行する際に「MORE」表示をなくす方法 1 2023/05/08 21:42
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
タスクバーの音量アイコンをク...
-
HP-UXでのプロセス別メモリ使用...
-
実行中のプロセスのシステムコ...
-
アクロバットを終了しても、プ...
-
強制終了できないプロセスの強...
-
OS内のアプリケーションファイ...
-
ネットワーク使用率約75%維持状...
-
シェルスクリプトでお聞きした...
-
EXCELのプロセスが残ってしまう
-
プロセスがタスクマネージャー...
-
PIDからプロセス・アプリを特定...
-
killコマンドの終了と強制終了...
-
CPU使用率100%
-
【プログラム】 iu14d2n.tmp ...
-
タスクマネージャで終了できな...
-
ps コマンドのステータス。S Ss...
-
プロセス、サービス、デーモン...
-
Windowsホストプロセス Rundll...
-
CD書き込みウィザードの不具合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
タスクマネージャのCPU率がおか...
-
プロンプトが返らない
-
コマンドライン上でファイルを...
-
タスクバーの音量アイコンをク...
-
プロセスがタスクマネージャー...
-
アクロバットを終了しても、プ...
-
httpdの子プロセスがゾンビ化す...
-
System Idle Processってなに?...
-
Windowsで作れるスレッド最大数...
-
CPU使用率が常に50~10...
-
タスクマネージャで終了できな...
-
Windows 10のエクスプローラー...
-
ps コマンドのステータス。S Ss...
-
【プログラム】 iu14d2n.tmp ...
-
ネットワーク使用率約75%維持状...
-
killコマンドの終了と強制終了...
-
Powershell プロセス二重起動
-
タスクマネージャに表示されな...
おすすめ情報