• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メッセージキューへ書き込める量を増やしたい)

メッセージキューの容量を増やす方法とは?

DT200の回答

  • ベストアンサー
  • DT200
  • ベストアンサー率38% (63/164)
回答No.1

# su root : # echo nnnnn > /proc/sys/kernel/msgmax で、できませんか。nnnnnは設定値です。

tatsu99
質問者

お礼

ありがとうございます。ご教示の方法でうまくいきました。

関連するQ&A

  • プロセス間でのメッセージキュー送信

    Linux初心者です。 あるプロセスが生成したメッセージキューへ、別のプロセスからメッセージキュー送信する場合、キューIDを指定する必要があります。 しかし、Linuxでは仮想メモリを使用しているため、共有メモリにアクセスできないはずで、異なるプロセス間でキューIDを共有する方法がわかりません。。 メッセージキューについて以下のサイトでサンプルプログラムが紹介されていますが、2つのプロセスが親子関係であるため、キューIDを共有できています。 http://linuxmag.sourceforge.jp/Japanese/March2003/article287.shtml そもそも、親子関係がないとプロセス間通信ができないのでしょうか? ご存知の方、よろしくお願いします。

  • メッセージキューのFIFOの保証

    Solaris10を使用しています。 プロセスAがメッセージキューXに対してメッセージを投げます。 プロセスBがキューXからメッセージを受け取り、処理をします。 プロセスBは複数プロセス(B-1,B-2・・・)あり、すべてがキューXでメッセージを受け取り処理をします。(A:B=1:多になる) この場合 (1)メッセージキューXのFIFO(先入先出)は普通保証されるでしょうか。 (2)プロセスBはメッセージ取得順にメッセージの割り当てが行われるでしょうか。(つまりB-1が先でB-2が後から取りに行ったらB-1に先にメッセージを渡すのが保証されるかどうか。) (3)上記を行うためには、キューの作成もしくはOSのパラメータの設定が必要か、必要ならどれを設定すればいいか。 よろしくお願いします。

  • 異なるプロセスですでに開かれているキューのオープンができません

    現在、Linux(Suse10.3)の環境でPOSIXのメッセージキューを用いたプロセス間通信のプログラムを作成しています。 mq_openでメッセージキューをオープンしているのですが、 異なるプロセスですでに開かれているキューのオープンができません。 最初にオープンしたキューは受信専用、異なるプロセスでオープンするキューは送信専用です。 errnoを調べましたが、 EACCES("\nキューは存在するが、呼び出し元が指定されたモードでそのキ>ューをオープンする許可を持たない。")となっています。 プロセスAの第3引数についてはmode_t S_IRWXU=0x777;としていますが、この辺りの設定方法がよくわかりません。 例) <プロセスA(プロセスBより先に実行)> msqid = mq_open(   "/sample001", O_RDONLY | O_CREAT, S_IRWXU, &mqattr); cout << "msqid:" << msqid << enld; msqid:3 <プロセスB> mqd = mq_open("/sample001", O_WRONLY); cout << "msqid:" << msqid << enld; msqid:-1 ///////////////////////////////////////////////////////////// //errnoは下記の通りです。 ///////////////////////////////////////////////////////////// EACCES(キューは存在するが、呼び出し元が指定されたモードでそのキ>ューをオープ>ンする許可を持たない。) 何か心当たりはありませんでしょうか?

  • スレッドとメッセージキューに関して

    現在、下記のようなプログラムを作成しています。 内容は、メッセージキューを受信するスレッドを生成するというイメージです。 処理内容は下記のようになります。  (1)メッセージキューの生成  (2)スレッド生成(メッセージキュー受信側)  (3)スレッド停止  (4)メッセージキューの削除 しかし、(3)のスレッド停止を実施しても、(4)のメッセージキューの削除以降にて、msgrcvのエラーが出力されてしまいます。 スレッド停止を行ったことから、TestThreadは動作しなくなり、(4)のメッセージキューの削除にて、エラーともならずに終了することを望んでりますが、上手くいきません。 下記に作成しているプログラムを記載いたします。 正常終了をするには何がいけないのでしょうか? ご教授宜しくお願い致します。 [test.cc] ---------------------------------------------------------------- #include <time.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <fcntl.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <ctype.h> #include <stdlib.h> #include <pthread.h> #include <stdlib.h> #include <sys/ipc.h> #include <sys/msg.h> // メソッドポインタ定義 typedef void (*testT); // スレッドID pthread_t threadId; // メッセージキュー識別子 int msqId; // 送受信するメッセージ struct msgbuf{ long int type; char data[BUFSIZ]; }; // テストスレッド void TestThread() { // メッセージ struct msgbuf message; while( 1 ) { printf("### TEST ###\n"); printf("msq start\n"); // 受信 if( msgrcv( msqId, &message, BUFSIZ, 0, 0 ) == -1) { printf("ERR! msgrcv errno[%d]\n", errno); continue; } printf("msq ed\n"); sleep(1); } return; } // メイン int main(int argc, char *argv[]) { // メッセージキュー識別子退避変数 int testMsqid; // スレッド操作リターン値 int status; // スレッドa用のパラメータ pthread_t thread_test; printf("### TEST START ###\n"); // メッセージキューの作成 if( (testMsqid = msgget((key_t)1111, 0666 | IPC_CREAT)) == -1 ) { printf("ERR! CREATE bkMsqId[%d]\n", testMsqid); return 1; } // メッセージキュー識別子を共通変数に設定 msqId = testMsqid; printf("msgget OK\n"); sleep(5); // スレッドを生成 status = pthread_create(&thread_test, NULL, (void*(*)(void*))TestThread, (void*)NULL); if(status!=0) { printf("pthread_create ng\n"); return 1; } printf("pthread_create OK\n"); sleep(5); // スレッド停止 status = pthread_cancel(thread_test); // スレッド停止結果 if ( status != 0 ) { printf("pthread_cancel ng\n"); return 1; } printf("pthread_cancel OK\n"); sleep(5); // メッセージキューの削除 if ( msgctl( msqId, IPC_RMID, NULL) == -1 ) { printf("msqId[%d] errno[%d]\n", msqId, errno); return 1; } printf("msgctl OK\n"); sleep(5); printf("### TEST E N D ###\n"); return 0; } ----------------------------------------------------------------

  • qmailのキューに、覚えの無いメッセージが溜まっていきます

    急遽メールサーバーの管理を任されてしまい、悪戦苦闘しています。 先任の人が突然辞めてしまったので。 困っているのは、qmailのキューに知らない間にとても多くのメッセージが溜まっていることです。 qmHandleというのにたどり着いたので、それを使って調べてみたところ、 一晩のうちに「Messages with remote recipients: 105」のように100件以上のメッセージが キューに入っています。 毎朝削除するのですが、夕方までにはまた増えています。 うちは社員数も少なく、一日のメール送信の回数もそれほど多くないです。 メッセージを調べると、To:のところが 「xxxxxxxxxxxxxxxxxxxx@yahoo.com」 のような、うちの社員の誰も知らない、送信した覚えも無いメールアドレスになっています。 xxxxxxxのところはだいたい適当な英数字です。 From:は「From: MAILER-DAEMON@mail.うちのドメイン」となっています。 うちのメールサーバーに何が起きているのでしょうか? ・誰かに踏み台にされている? ・サーバー内にウィルスのようなものがいて、勝手に適当なアドレスにメール送信している? といったことなのでしょうか。 どのような可能性があるか、もし分かる方がいらっしゃいましたら教えていただけますでしょうか。 出来れば対策も教えていただけるととてもありがたいです。 環境は以下の通りです。 OS: Redhat 7.3 メールサーバー: qmail-1.03 よろしくお願い致します。

  • POSIXメッセージとは?

    こんにちわ。 私はSolaris8のC++でプログラミングをしている中級者です。 プロセス間通信の方法として、メッセージキューを使っています。 具体的には、キュー作成(msgget)、送信(msgsnd)、受信(msgrcv)、削除(msgctl)等の関数を使っているのですが、これ以外に「POSIXメッセージ」とかいうメッセージがあると聞きました。 SUNのドキュメントで調べてみたのですが、POSIXとは"Potal Operating System Interface for UNIX"で、まあUNIXベースのOSならみんな使えるような関数と解釈しました。この解釈は正しいでしょうか? そして、私が使用しているmsgXXX関数とどのように違って、どのような利点があるのでしょうか? 具体的には、上記のmsgXXXを実現するために、mq_open(), mq_close, mq_send, mq_receiveを使えば良いというだけのことなのでしょうか? POSIXメッセージとは、何か?また、こうやって使うんだよというような参考になるURLをご存じの方がいらっしゃいましたら、教えてくださいませ。

  • LinuxのOS稼動時間(uptime)を変更する方法を探しております

    お世話になります。 ◆質問 現在、社内試験において、 OSが起動してからの連続稼動時間を、変更する方法を探しております。 通常は、uptimeコマンドを実行すれば、OSが起動してからの起動時間が表示されますが、 この時間を365日起動後、497日起動後にする方法がございますでしょうか? ------------------------------------------------------------------------ 15:19:31 up 3 days, 23:23, 2 users, load average: 0.00, 0.00, 0.00 ------------------------------------------------------------------------ ※なお、実際にその日まで待つことは、試験の日数上できません。 ※環境は下記の通りとなります。 ◆実行環境 マシン: ML115 G5 OS: Red Hat Enterprise Linux ES release 4 (Nahant Update 6) ◆備考 インターネットで、「/proc/uptime」に秒数が 書き込まれて(?)いることはわかりました。 「/proc/uptime」をviで編集をしてみましたが、 エラーとなり、値を書き換えることができませんでした。 ※システムファイルを操作することはよくないと思いますが実行してみました。 --------------------------------------------------------------- 警告: 読込んだ後にファイルに変更がありました!!! 本当に上書きしますか (y/n)?y "/proc/uptime" E667: fsync に失敗しました 警告: 原本ファイルが失われたか変更されました ファイルの保存に成功するまでエディタを終了しないでください! -------------------------------------------------------------- どうか、よろしくお願いいたします。m(_ _)m

  • メッセージ機能でのフラッシュについて

    こんばんは。 またなのですが、サンプルプログラムに疑問点があるので質問させてください。 今、メッセージ機能を用いてプロセス間でデータを受け渡しするプログラムについて考えています。 サンプルを見ると、 送信側では("メッセージを入力してください")というようなことがprintfされていて、そのあとでfflush(stdout)をしています。 受信側では受け取ったメッセージをwhile(1)の中で出力しているのですが、こちらはfflushしていません。 fflushはどんな時に必要なのでしょうか。 なぜ送信側ではして、受信側ではしていないのですか。 分る方がいたら回答よろしくお願いします。

  • qmail キュー

    現在、メールサーバを構築中です。主環境は下記の通りです。 ・CentOS(ver.5.3) ・qmail(ver.1.03) ・vpopmail(ver.5.4.25) ※qmailはtcpserverより起動するよう設定。 ★現在、自分ではどうすることもできず、行き詰っているのは、キューの何らかのエラーによってメールが送信できないことです。 下記で経緯を説明させていただきます。 POP3とSMTP環境まで構築し、メーラーでメールを受信できることを確認済みですが、もともと送信ができておりませんでした。 また、何度も送信テストを繰り返していたので、キューにメールが大量に溜まっていましたので、「/var/qmail/queue」ディレクトリ配下のフォルダを削除しました。 #rm -rf info/ intd/ local/ mess/ remote/ todo/ その後、下記サイトを参考にキューを再構築しました。 #http://www.hand-in-hand.biz/c-board/c-board.cgi?cmd=one;no=34;id=0002 キューの再構築後、telnetコマンドでメール送信テストを実施(※参照)しましたところ、「451 qq trouble creating files in queue」とエラーメッセージが出力され、送信できません。 ※telnetコマンドによるメール送信テスト ------------------------------------------------ [root@xxxx ~]# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 xxxx.xxxxxxxxx.com ESMTP helo xxxx.xxxxxxxxx.com 250 xxxx.xxxx.xxxxxxxxx.com mail from: xxxxxxxxx@xxxxxxxxx.com 250 ok rcpt to: xxxxxxxxx@xxxxxxxxx.com 250 ok data 354 go ahead subject: test This is Test mail. . 451 qq trouble creating files in queue (#4.3.0) ------------------------------------------------ 恐らく、キューの不整合なのだろうと推測し、キュー再構築を試してみたものの、何度やっても同じエラーが発生します。 ネットでもいろいろと調べましたが、解決に至らず、自分ではどうしようもない状況です。 みなさまの力をお借りできると助かります。 どうぞよろしくお願いいたします。

  • JNIからCのメッセージキューが使用できない

    JAVAからJNIを使用してC言語の関数呼び出しを行っています。 C側の関数は内部でmsgrcv()とmsgsnd()を呼び出しているのですが、どちらも処理が正常終了しているにもかかわらず、メッセージ自体の送信(受信)ができていません。しかしながらメッセージ長は正常に取得できている状態です。 このような現象でどういったことが考えられるのでしょうか。 環境は OSがHP-UX11、 JDKのバージョンが1.5です。 宜しくお願い致します。