• 締切済み

スクリプト中に日本語を表示させたい。

現在top監視スクリプト作成中なのですが、内容に日本語を 含めたくとも文字化けしてしまいます。 #!/bin/sh AVE=`uptime | sed 's/[.,]//g' | awk '{print $(NF-2)}'` if [ $AVE -gt 100 ];then echo "`date +%m/%d/%a/;` `uptime`" >> ./top.$$ top -b -n1 |awk '{if((5>=NR)&&(2<=NR)){print}}' >> ./top.$$ echo ----------------------------------------------------------------------------- >> ./top.$$ printf "USER PID %%CPU %%MEM VSZ RSS TTY STAT START TIME COMMAND\n" >> ./top.$$ ps aux |sort +4r |head -10 >> ./top.$$  >> ./top.$$ CPU負荷平均率が$AVEを超えました。 >> ./top.$$ fi 文字コードを指定するnkfを試しても文字化けは変わらず。 どうしたら文字化けせずにログを保存できますでしょうか

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> CPU負荷平均率が$AVEを超えました。 echoが無いような。

関連するQ&A

  • load averageが0.50を超えた時だけメール送信

    LINUXでtopコマンドのロードアベレージが0.50を超えた時に top.logファイルに内容を記述してさらにメールを送る。 0.50を超えない場合には何も残さないというスクリプトを 作りたいのですが、うまくいきません。 ifの書き方などが悪いのでしょうか #!/bin/sh AVE=`top -b -n1 |sed 'y/,/ /' |awk '{if(1>=NR){print $(NF-2)}}'` if [ $AVE > 0.50 ]; then echo ----------------------------------------------------------------------------- >> ./top.log top -b -n1 |awk '{if(5>=NR){print}}' >> ./top.log echo ----------------------------------------------------------------------------- >> ./top.log printf "USER PID %%CPU %%MEM VSZ RSS TTY STAT START TIME COMMAND\n" >> ./top.log ps aux |sort +4r |head -10 >> top.log echo ----------------------------------------------------------------------------- >> ./top.log echo ----------------------------------------------------------------------------- >> ./top.log mail -s load_average root < top.log else echo ok fi 今はとりあえず0.50を超えない時はOKと出力されるように してますが、何もログを残さずメールも送らないように したいのです。どなた様か教えてくださいませ!

  • 文字化けしたときはnkf -mBにて日本語にしたい

    cat $HEADER |awk '/^Subject/'|nkf 上記コマンドにて日本語が表示される場合と =?ISO-2022-JP?という文字化けが起こる時があります。 なので、出来れば cat $HEADER |awk '/^Subject/'|nkf |if /=?ISO-2022-JP?/ ;then nkf -mB (笑) のようなコマンドで、文字化けが起きてる時だけnkf -mBコマンド を使うようなことはできないでしょうか 以下のようにcase文で試しましたがだめでした。 おそらくパターンにマッチする時の処理に 代入するということができないから失敗するのだと思います。 SUB=`cat $HEADER | awk '/^Subject/' case "$SUB" in =?ISO-2022-JP?*) $SUBJECT=`echo $SUB |nkf -mB` *) $SUBJECT=`echo $SUB |nkf` esac mail -s "$SUBJECT" アドレス

  • シェルスクリプトで、サーバー監視

    まだまだスクリプト初心者なので、教えていただきたいのですが、 条件分岐させるifがあると思うのですが、 「サーバーのロードアベレージが1から2の時にトップを保存して、  2を超える時はサーバーを再起動させる。1以下の場合はログ保存する。」 というスクリプトを書きたいのです。 #!/bin/sh AVERAGE=` awk '{gsub(/[.]/,""); print $1}' /proc/loadavg` if [ $AVERAGE > 100 && $AVERAGE < 200 ] ;then top -b -n1 >> ./top if [ $AVERAGE -gt 200 ] ;then shutdown -r now end uptime >> ./top.log 上記のままだとerror: unexpected end of fileと エラーが出てしまいます。ifが2つ入ってるので 正しい記述が必要だと思うのですが、 どうしたらよいでしょうか

  • awk詳しい方へ

    あるファイルの最終行のみ、他の行と出力形式を変えたいのですが awkとNRを使ってスマートにできないでしょうか? 詳しい方ご教授お願いします。 不細工に作ると(ファイル名xxxのとき) nnn=`wc -l xxx | awk '{print $1}'` awk '{ if (NR != $nnn) printf("%s %s \n",$1,$2) else printf("%s %s \n",$3,$4) }' aaa こんな感じでしょうか。 なんか、一行とかでかけないでしょうか?

  • 日本語が入った本文をユーザごとにメール送信したい

    1行ごとにユーザの情報が記述された内容を 日本語でユーザごとにメールしたいのです。 file.1の中身 01_hamada 1991/01/01 1st 10 01_hamada@メールアドレス 02_yoshida 1992/02/02 2st 20 02_yoshida@メールアドレス 03_satoshi 1993/03/03 3rd 30 03_satoshi@メールアドレス 04_kinosita 1994/04/04 4th 40 04_kinosita@メールアドレス test.sh スクリプト #!/bin/bash while read line; do DAY=`echo "$line" | awk '{print $2}'` RANK=`echo "$line" | awk '{print $3}'` POINT=`echo "$line" | awk '{print $4}'` ADDRES=`echo "$line" | awk '{print $5}'` mail -s test "$ADDRES" < messagebody.txt done < file.1 messagebody.txtの中身 あなたがテストを受けた日は$DAYです。 順位は$RANKです。 点数は$POINTでした。 OSは Red Hat Enterprise Linux ES release 4 (Nahant Update 4) です。これでは日本語ファイルを絡めたスクリプトを 成立させることはできないのでしょうか このままだと、文字化けして$DAY,$RANK,$POINTが そのまま文字列として送信されてしまうのです。 なにか良い方法はないでしょうか

  • sendmailのFROMに日本語を使う

    CGIからsedmailを呼び出してメールを送信しています。 その時に差出人の部分の日本語が文字化けしてしまいます。 そこで&jcode'convertでjisに変えたのですが、今度は CGIがサーバーエラーになってしまいます。 どうすればよいでしょうか。 スクリプトはこんな感じです。 ----------------------------------------------- $from = '両国'; $subject = 'テスト'; &jcode'convert(*from, 'jis'); &jcode'convert(*subject, 'jis'); &jcode'convert(*msg, 'jis'); $errno = 1 unless open(MAIL, "| /usr/lib/sendmail -t"); return 0 if $errno; print MAIL "To: $MailTo\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "$msg\n"; $errno = 2 unless close(MAIL); return 0 if $errno;

    • ベストアンサー
    • Perl
  • cygwinのtschで日本語文字化け

    cygwin2.738 tcshでバッチを実行した際に、echoで表示される日本語が文字化けします。 下記を参考にnkfをインストールしてもダメでした。 http://blog.goo.ne.jp/rm_-rf/e/63aa37f245f401d1404b107355d27a52 かなり前に別のPCでcygwinをインストールして日本語表示できていますが、この時にどうやったか覚えていません。 このPCからnkfをコピーしてもダメでした。 tcshのversionを見るとkanはありますが、dspmがないです。 別のPCからtcshをコピーするとdspmが表示されますが文字化けします。 日本語が表示できているcygwin環境をそっくり移すことはできないでしょうか? cygwinフォルダ丸ごとコピー以外に何があるでしょうか?

  • emacs→cygwinで日本語

    タイトルでは分かりづらいのですが・・・ emacsで日本語を出力するプログラムを作成し、(例:printf("あいうえお\n");) これをcygwinで表示しようとしているのですが、文字化けしてしまいます。 色々ググってやってみたのですができません。 方法知っている方、ご回答お願いします。 ちなみに$echo あいうえお で あいうえお が返ってくることはできます。

  • 文字コードEUCのPerlプログラムが文字化けしてしまいます

    Perlで書かれたCGIを実行しようとしているのですが、プログラムはEUCで記述されているそうです。nkf -g ***とするとEUC-JPとなります。 print " <META http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">\n"; とも記述されているのですが、ブラウザで実行(閲覧)すると文字化けして、ブラウザのエンコードは、Unicode(UTF-8)になっています。 ちなみに、OSはCentOS5.2です。 どうやったら、EUCで記述されたCGIが文字化けせずに実行できるのでしょうか? teratermでサーバに接続語、viコマンドで表示しても文字化けしています。ファイルの文字コードをEUCからUTF-8にして(nkf -w ***)、ブラウザでアクセスしても文字化けしてしまいます。

    • ベストアンサー
    • Perl
  • ActivePerl5.8で日本語を使いたい

    ActivePerl5.8の日本語処理で困っています。 EUCで書かれたのHTMLファイルに、タグの修正などの文字列処理をしているのですが、 *その結果をshift-jisで出力したい。 *コマンドライン上の文字も文字化けさせずに表示したい というあたりで困っています。 use encoding 'shiftjis'; binmode STDERR, ':encoding(shiftjis)'; という記述を書けばOKという記述を見たため試したのですが、うまく動きません。記述を外して、ソースをeucで書くと、コマンドライン表示以外はうまく動くのですが、他の組み合わせですと、日本語の文字処理がうまく行かかかったり、perl自体が落ちたりと、試行錯誤の連続です。 文字処理というのは例えば、以下のような感じです。 print $mytitle; if ($mytitle =~/(【.*?】)/){ $subtitle = "<div class=\"head2\">$1<\/div>\n"; } (【】で囲んだ文字だけに特定のスタイルを効かせる。) 文字列処理とコマンドラインも文字化けの双方を解決させる手立てを教えて頂ければと思います。 よろしくお願いします。