• 締切済み

LINUXでログ出力

今、LINUX(RedHat7.0J)でイントラサーバを運用しているのですが 毎日、夜中にログを出力したいと考えています。 ログ内容はログイン失敗ユーザーやディスク容量など運用ログです。 FreeBSDなどはデフォルトで出力するようcrontabにありましたが LINUXの場合ありません。シェルスクリプトを書ければいいのですが 当方書けないため、どなたか作っておられる方、またはツールがあるよ っ方あつかましいお願いですが、教えていただけませんか? 急ぎでなければ勉強がてら作るのですが、もうしわけありません。

みんなの回答

  • masaton
  • ベストアンサー率50% (1/2)
回答No.1

Solarisで使用しているshですが、ほとんど変わりないと思います。 #!/bin/csh set date = `date '+%Y%m%d'` /usr/bin/echo 'Start Auto-Loging ' > /home/log/autolog.$date /usr/bin/date >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo 'DiskCapacity Check' >> /home/log/autolog.$date /usr/sbin/df -k >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo 'SWAP Area Capacity Check' >> /home/log/autolog.$date /usr/sbin/swap -s >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo 'The rate of operations Check' >> /home/log/autolog.$date /usr/bin/uptime >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo 'Process Check' >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/ucb/ps -ax >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo 'Castomor Check' >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/who /var/adm/wtmp >! /home/log/who.log /usr/bin/sleep 1 /usr/bin/tail -25 /home/log/who.log >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo 'System Log Check' >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/tail -50 /var/adm/messages >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo 'Kernel Loading Check' >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/dmesg >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo '---------End of Auto-Loging --' >> /home/log/autolog.$date /usr/bin/date >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date /usr/bin/echo '' >> /home/log/autolog.$date 但し、以下のことに気をつける必要があります。 (1)Linuxでswapというコマンドは存在していないはずです。(swaponと言うコマンドのはず)変更する必要があります (2)wtmpの場所が違います。(/var/adm→/var/log)変更する必要があります。 (3)パスが全然違うはずです。恐らく、相対パスでも大丈夫だと思いますので、全てのコマンドパスを消してから動かしてみた方がいいかもしれません。 このコマンドをcrontabで稼動させてあげればいいはずです。 恐らく動くと思います。以下のことをして動いているLinuxがありますので。 手元にないのでお送りすることが出来ませんが。

関連するQ&A

  • LinuxのCrontabについて質問します。

    LinuxのCrontabについて質問します。 通常cronを編集するには、crontab -eを使用するかと思います。 そうするとエディターが起動し、入力モードになります。 今、シェルスクリプトで、crontabを書き変えたいのですが、直接cronのファイルを触ってしまってもよい物なのでしょうか? 以上、よろしくお願いします。

  • syslogからログが出力されなくなりました。

    こんにちは。 昨日よりログの出力が一切されなくなりました。 以下の状況です。 OS:Redhat ES4 カーネル:2.6.9-11 /etc/syslog.conf(デフォルトのまま) *.info;mail.none;・・・ /var/log/messages syslogデーモンの状況 psでの結果 syslogd -m 0 syslog以外のアプリケーションが出力しているログは 各ログに出力されています。 messages以外に、cron、secureなどsyslogが担当しているログが全て出力されません。 ログローテーションは使用しており、指定した日時に0バイトのままローテーションされています。 わかる方お願いします。

  • linuxのシェルスクリプト

    linuxのシェルスクリプト シェルスクリプトの質問をどこですればよいのかよくわからないので、ここでさせていただきます。 最近、始めてシェルスクリプトの勉強を始めました。 スクリプトに渡す引数を出力したいと思い、 echo $1 echo $2 echo $3 とかくと、スクリプトに渡した引数が出力されます。 これを、for文で書くと for i in 1 2 3 do echo $i done とねるのですが、これでは1,2,3が出力されてしまいます。 どうなおしたらいいのでしょうか? よろしくお願いいたします。

  • Linux起動時にシェルスクリプトを走らせるには?

    いつも参考にさせていただいてます。 私はRedHat7.0でLinuxを勉強中です。 現在、Linuxの起動時にシェルスクリプトを走らせようと思っているのですがうまくいきません。 まだ初心者で手順自体が違っているかもしれませんので、大まかで構いませんので手順を教えてください。

  • linuxのsshの反応が非常に遅い。

    初めまして。 最近wgetを多用するスクリプトを組み、それをcrontabで繰り返し実行しています。 例えば、一つのシェルスクリプトに10回wgetを実行するように書いています。 そしてcrontabでは、その類のスクリプトを7~8回程実行するように書いています。 実行間隔は10分に1度です。 先日まではもう少し少なかったのですが、昨日からcrontabでそのスクリプトを上記ぐらいの頻度に少しずつ増やしていったところ、SSHへの反応が鈍くなりました。 端末はputtyで、エンターを押すとカーソルは下がるのですが、「root #」といったようなプロンプトがなかなか出てきません。 10分程度待って見ているとようやくプロンプトが出て操作は短時間だけできるのですが、またすぐに反応がなくなってしまいます。 HTTPとFTPは正常に通信できることを確認しています。 サーバのハードウェアは遠隔地にあるため、直接操作することができない状態です。 telnetは利用していません。 crontabが実行するスクリプトが長時間かかるものである場合、SSHにも影響を与えるものなのでしょうか? もしそうであるのなら、なにか回避策はないでしょうか。 もしそうでない場合、crontab以外の原因は何が考えられるか、教えて頂けないでしょうか。 ぜひ、宜しくお願い致します。 linux: fedora core 3

  • Linux(RedHat)で実行できる操作をメニュー化したいのですが具

    Linux(RedHat)で実行できる操作をメニュー化したいのですが具体的な手法を教えて下さい。 参考になるページなどでも構いません。 やりたいことは、運用オペレータの人がLinuxにログインした際に、 通常のログインではなくて、メニュー化された操作しかできなくしたいと思っています。 イメージとしてLinuxベースのアプライアンス製品によくあるような、 CUIでの操作メニューが出来ればと思っています。 例) 1.ログ参照(cat /var/log/・・・みたいな) 2.再起動(shutdown -r now) 3.ログアウト よろしくお願い致します。

  • proftpdのログ分析ツールは?

    ProFtpdのログ分析ツールを探しています。サーバに対してtelnet/sshのみでアクセスしているのと、手元にLinuxがないため、Windowsでログを分析できるものが欲しいのですが、そういうものはないでしょうか? なお、サーバはRedHat Linux7.2、ProFtpdは1.2.5rc3を使用しています。

  • linuxでaliasをbashrcに記載してsh

    linuxでaliasをbashrc(bashrcでなくともログイン時に読み込まれるprofile)に記載してあるコマンドを設定したいのですが、これが上手くいきません。 やりたいことは、bashrcで設定したコマンド内容をshスクリプトで実行したいのですが、これはどうやれば出来るのでしょうか? 以下に.bashrcの内容とshスクリプトの内容を記載します。 .bashrcの内容 # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi alias log='tail -f /var/log/messages' test01.shの内容 #! /bin/bash log 実行すると ./test01.sh: line 2: log: command not found となってしまいます。 ちなみに、shの中ではなく、ログイン後にコマンド(log)だけプロンプトに打つとちゃんとtail -f /var/log/messagesの内容が出力されます。 shの作りが悪いのでしょうか? どなたかご教授いただけますとありがたいです。 osはlinux redhat5.4です。 どうぞよろしくお願いいたします。

  • 自動起動時のログについて

    現在FedoraCore6にapache-tomcat-5.5.23をインストールしてOS起動時にTomcatを自動起動させようと考えています。 自動起動のシェルスクリプト/etc/rc.d/init.d/tomcatを作成し、コマンドラインからTomcatが起動および終了するのを確認しました。 合わせて、chkconfig --add tomcatのコマンドを実行し、 chkconfig --listコマンドで2,3,4,5レベルがonになっていることを 確認しました。 ですが、OS起動時にTomcatが自動起動しません。 /usr/local/tomcat/logs配下のログファイルには何も出力されていなかったので、おそらくOSがなんらかの理由で自動起動シェルスクリプトを実行しなかったのだと考えています。 で、その関連のログファイルを探しているのですが、見つけることができませんでした。 Linuxの自動起動のログはどこに出力されるのか、教えていただければと思います。 当方、Linuxを始めて1週間程度の素人ですがよろしくお願いいたします。

  • syslogでログファイルの出力方法

    現在、syslogを利用してログファイルを出力しようと思っています。 syslogというサービスを利用する事を教えて頂き、syslog.confを書き換えて Linux上でsyslogのサービスは起動しており、ファイルが自動的に作成されました。 (パーミッションが600なので644にしたいのですが、ひとまず置いておき、 手動でテスト的に777に変更しました) しかし、syslogのサービスが正常に動作しているかの確認は出来ておりません。 それでいてPHPからログが出力されるようにするコーディングが分かりません。 別環境の他のスクリプトで既に実績があるのですが、書き方が違う分、ダメなのかもしれません。 初めて使うので、定数が実際に何を意味しているのかがPHPのマニュアルを見ても意味不明です。 宜しければPHPを介在しない、syslogが正常に動作してログを出力してくれるLinuxのコマンドと、 PHPでのsyslogの書き方をご教示下さい。 現在、スクリプトはこんな感じです。 A.php $abc = LOG_LOCAL5; //実際はメソッドの引数(参照渡し) //↓実際は別クラスのメソッド $log = "test"; define_syslog_variables(); openlog('log', LOG_PID | LOG_PERROR, $abc); syslog(LOG_NOTICE, $log); closelog();

    • 締切済み
    • PHP