すみません。同じような質問ですが、以下に修正しました。
(1)cronにより特定のコマンドを起動
(2)起動されたコマンドが連続100回ループ
(3)1回毎のCPU使用率、メモリ使用量を取得(vmstat)
(4)cron起動よりコマンド(100回)終了までの時間取得
以上のようなシェルを作成したいのですが、
何かアドバイスが欲しいのでお願いします。
OSはsoralisです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

なぜ、100回のループさせ、1回毎のCPU,メモリの使用量が必要なのかよく分かりませんが、1回あたりの実行時間が分オーダのもので無いとまともな値は出ないでしょう。



その昔SONYのBSDベースだった頃のNEWSでは、acコマンドでプロセス毎についてレポートを出すことが出来たのですが、Solarisはあまり慣れていないもので。

少なくとも、
http://docs.sun.com:80/ab2/coll.140.7/SYSADV2/@A …(SYSRESACCTREF-18142)?Ab2Lang=ja&Ab2Enc=euc-jp#SYSRESACCTREF-18142
を、見る限り どこかに残るように設定できそうですので、下のリンク先を参照してがんばってみてください。
http://docs.sun.com:80/ab2/coll.153.4/REFMAN1M/@ …

ただ、これはOSすべてのプロセスの情報を集めるのでディスクの空き容量に注意してください。
# FreeBSDで、こいつが原因で何度 200M以上ある
# /var をあふれさせたことか...
    • good
    • 0

補足ありがとうございます。



やはり気になるのは、「コマンドが100回起動されている『間』の」ですね。sarにしろtopにしろ、(システムにとっては大変長い)秒単位の瞬間値を表示するもの(つまり観測点は離散的です)ですから。たとえば秒単位でシステムの(粗い)状態をモニタリングしたいということでしょうか?そういうことでしたら、最初に sar をバックグラウンドで立ち上げ、「コマンド」を100回実行するループを書き、終了したらsarを殺す、といった感じでいいと思います。ただし、この場合、当然他のプロセスが走っていたりするとそれも拾うし、そうでなくてもsar立ち上げのタイミングやシステムの状態によって毎回測定値は変化します。

ところで、「間のCPU使用率」を正直に解釈すると、(離散的でなく)連続的な変遷や時間積分値なんかを求めるんじゃないかと考えてしまうのですが、そのような使用方法となると、私には見当つきません。

この回答への補足

すみません。sarの使用方法を理解していませんでした。
調査中なのですが、k-841さんが上記の方法をご存知であれば
教えて頂けませんか?

補足日時:2001/07/25 15:51
    • good
    • 0

情報をもらったからといって私がお答えできるかどうかわかりませんが・・・



(1)で起動される特定のコマンドは「以上のようなシェル」なのですか?シェルの内部でとあるコマンドを100回起動する、という意味でしょうか?

(3)の1回ごとのCPU使用率というのが意味がわかりません。CPU使用率はプロセス実行中にも刻一刻と変化します。メモリ使用量も然りです(こちらはたいてい減らさないような実装みたいですけど)。また、最後の(vmstat)も気になります。特定プロセスのそれではなく、システム全体のそれを知りたいのですか?

この回答への補足

(1)についてはYESです。
(3)については私の誤りです。申し訳ありません。
コマンドが100回起動されている間のCPU使用率、メモリ使用量
を取得したいのです。ですのでsarかなにかになるのでしょうか?

補足日時:2001/07/25 12:34
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシェルから起動するコマンドの一部をマスクする

シェルから起動するコマンドの一部にパスワードなどのセキュリティ情報が含まれている場合、それをpsコマンドなどによって見えなくするには、一般にどのような手法が採られているのでしょうか。

例えば、

#!/bin/sh
USER=hoge
PASS=hogehoge
foo -u $USER -p $PASS

というシェルを実行した時に、psコマンドで見ると

foo -u hoge -p hogehoge

と出ては困るわけで、

foo XXXXXXXX

とかいう表示にできるとありがたいです。XXXXXXの部分は、ユーザ名やパスワードが表示されなければ、どんな表示でもいいんですけど…。

Aベストアンサー

 qmail で使われるコマンド群のように、環境変数を使って親プロセスから子プロセスに値を渡してやる、というのはいかがでしょうか?

 あるいは OS 限定でもよければ FreeBSD 5.x で、System MIB の security.bsd.see_other_uids に 0 を設定することで、他人のプロセスを参照できなくすることができます。

Qシェルコマンドについて

先日自分のPCにやっとLinuxをインストールし、UNIXの勉強に励もうと思って
いるのですが、基本的なシェルコマンドがまだよくわからなく苦戦しています。

もし、『シェルコマンド一覧表』みたいなのが、記載されているサイトがあるならば、URLを教えて頂けませんか?  また、効率の良いシェルコマンドの覚え方があったら教えて下さい。  宜しく御願いします!

Aベストアンサー

コマンドの一覧を載せているサイトは、それこそ山のようにあります。
その中からひとつを紹介するとしたら、やっぱり本家だろう、ということで、
linux のマニュアルを日本語化するという "JM Project" というのがある
ので、そこの URL を紹介します(→参考URL)。

コマンドの一覧を、というのであれば、参考URLの「JMインデックス」から、
コマンド名が分からないので、キーワードで検索をしたい、というのであれ
ば、参考URLの「 man on WWW 」や「全文検索」を使うと良いでしょう。

参考URL:http://www.linux.or.jp/JM/

QBシェルのawkコマンドについて

Bシェルのawkコマンドについてですが、例えばプロンプトから
% ls -l hoge.txt | awk '{print $5}'

と入力すると、hoge.txtのファイルサイズが出力されますが、同様のことをBシェルの中で行おうと思っています。

下記のように、配列arrayにはスペース区切りで3つのデータが入っており、N番目のデータを取得したいという場合に、Nに変数を使用して取得する方法がわかりません。

#!/bin/sh

array="AA BB CC"
num=3 # CCを取得したい
echo $array | awk '{print $num}'

上記で実行すると、"AA BB CC"のようにすべて出力されてしまいます。awkで出力する箇所を${数値}で指定すればうまくいくのですが、ランダムで決めた数値(1~3)をnumに入れて取得したい場合、このようなことは可能でしょうか。

もし不可能な場合でも、awk以外に何かコマンドがあればご教授願います。なお、作成するのはBシェルになります。

Aベストアンサー

' ' で囲まれた中では、$によるシェル変数置換は効きません。" " で囲むとシェル変数置換が行われます。ただ、
echo $array | awk "{print $num}"
と書くと、$num が 3 のため、
echo $array | awk "{print 3}"
となり、3が表示されるだけです。

echo $array | awk "{print \$$num}"
echo $array | awk '{print $'$num'}'
のどちらか好みのほうを使ってください。私の好みは後者です。

他には、cut コマンドも使えるかと思います。詳しくは、man cut を。

Qコマンドライン からproftpd を起動しようとすると、proftpd が起動しません。

こんばんわ,
現在Linuxでftpサーバー(インターネット)を立ち上げようと挑戦しています。
とりあえず,インストールは終わり,基本的な設定は終わったのですが,タイトルどおりコマンドライン からproftpd を起動しようとすると、"Fatal: Socket operation on non-socket"というメッセージが出て、proftpd が起動しません。http://www.infoscience.co.jp/technical/proftpd/configuration.html
によると,それは,「proftpd.conf 設定ファイルを編集して、ServerType directive を読み込むように、追加、編集する必要があります」とありますが,
私のetc/proftpd/proftpd.confの中身は
「ServerType    inetd」
にしています。何がおかしいのでしょうか。

よろしくお願いします。

Aベストアンサー

ServerType standalone

にして、

# service proftpd stop <ENTER>
# service proftpd start <ENTER>

ではどうですか?

Qシェルの中から他のシェルを呼び出す

例えば、ひとつのシェルファイル( aaa.sh )の中に、
-------------------------
#!/usr/bin/csh
set HOME=/home/test/tmp
bbb.sh
-------------------------
と記述した場合、bbb.shで変数$HOMEを使いたいと思いましたが、
使えないようです。(HOME: 未定義の変数と表示されます)
どなたか、これ以外の方法で、このように
シェルからほかのシェルを呼び出して、変数も引き継がれるような方法ご存知ないでしょうか?
多分こーやれば、こうなるかも!みたいなご回答でも結構ですので情報提供をお願いします。

どうぞ宜しくお願い致します。

Aベストアンサー

たぶん環境変数は引き継がれます。
setenvを使えばいいように思います?


このカテゴリの人気Q&Aランキング

おすすめ情報