• ベストアンサー
  • 困ってます

bashにてログを書き出すコマンド

未経験で小さいシェルスクリプトを組んでいます。 バックグラウンドで動いているので、rmやmvをした時に何らかのメッセージがでてスクリプトがとまらないようにログ吐き出しをしたいのです。 それで、先人の書いたスクリプトを部分コピーしながらうまくやっていたのですが、ちゃんと意味を知らなければと思って質問しています。 たとえば rm $ファイル 2>> $ログファイル 1>&2 という記述がありまして、 2>> というのがどういう意味を持つのかが分かりません。 1>&2はググったところ、書き出しの順番のようですが、数字と&が具体的に何を意味しているか分かりませんでした。 bashのこういったコマンド群で参考になるサイトをご存じの方は教えていただけませんでしょうか。 また、簡単に上述の意味を教えていただけるとうれしいです。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数620
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

> や >> などは「リダイレクト」と呼ばれます。 「bash」と「リダイレクト」で検索するとよいでしょう。 1は標準出力 2は標準エラー出力なので 2>> は標準エラー出力を $ログファイルに「追記」するです 2> にするとログファイルの過去の内容が消えてしまいます。 1>&2 は標準出力と標準エラー出力を一緒に出力したい場合に使用します。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 非常に参考になりました。 さっそく検索して調べてみます。

関連するQ&A

  • シェルスクリプトのbashとperlについて

    シェルスクリプトのbashとperlについて 今さら気づいたのですが、PerlもUNIXのコマンドやシェルスクリプトとして使用できるということでしょうか。 RubyやPHPをUNIXのコマンドやシェルスクリプトとして使用することはできますでしょうか。 学ぶとしたら、bashとPerlのどちらが良いでしょうか。 また、シェルスクリプトはどんな用途や利点がありますでしょうか。 Webアプリケーションによるバックアップやログをタイマーでセットして自動的に取得したりすることは可能でしょうか。

  • mailコマンドで送信元を指定する方法は?

    シェルスクリプト(Bash)からmailコマンドでメールを送信する際に、 送信元が自動的に root になってしまいます。 これを明示的に別のアドレスに指定したいのですが 送信元を指定する方法はあるでしょうか。 送信元を指定するにはphpスクリプトに作り変えるしか方法はないでしょうか。。

  • scriptコマンドによる操作ログの取得について(編集履歴まで)

    サーバーの運用を行うにあたり、シェルや、ファイルの書き換えの際に、変更履歴を把握したいと考えています。 UNIX/Linuxであれば、OS側の「script」コマンドで、ある程度の操作をログとして取得できますが、vi等で編集した内容までは、ログとして取得できません。(viを利用して編集した、までです) そこで、catコマンドで表示した内容が、ログとして取得できることに着目しています。 勉強不足で申し訳ありませんが、たとえばviで編集を完了後に、かならずcatを自動的に発行するようなことは可能でしょうか? (理想は、ユーザに見えないように編集内容をログ取得することですが、さすがにバックグラウンドで変更内容を取得することは難しいと思っています。) 上記が実現可能であった場合、編集内容なども一つのログファイルから追えるため、非常に便利(安易な考えで申し訳ありませんが)だと考えております。 お手数ですが、ご協力いただければと思います。 以上、よろしくお願いします。

  • 【sh】tee コマンドの代替方法

    お世話になります。 パイプを使わずにtee コマンドと同じように振る舞わせる方法がわかりません。 なにかよい知恵はありませんでしょうか。。。 今まで、bashスクリプトの中で 関数 | tee -a ログファイル名 という形式でログファイルを出力していたのですが 関数の中でシェル変数を書き換える必要があってパイプが使えなくなってしまいました。 リアルタイムに関数の標準出力をターミナル出力しつつ、ログファイルにも保存していきたいのですが こういう場合、どうすればよいのでしょうか? とりあえず touch ログファイル名 tail -f ログファイル名 & 関数 sleep 2 kill %1 という形で、暫定的に逃げているのですが kill したときに出力されるメッセージが消せずにかっこわるいので できればこの方法は変更したいです。 ご教示ください。

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

    現在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週間程度の素人ですがよろしくお願いいたします。

  • scriptコマンドの開始を出力させない方法

    RedhatLinuxにおいて script <ログファイル名> と入力すると、プロンプト上に "スクリプトを開始しました、ファイルは /xxxx/xxx/xxx です" と言う表示があがりますが、 これを表示させずにログのみを取得するようにすることはできますでしょうか? (要するにscriptコマンドを/etc/profile等にセットし、利用者に意識させないまま作業ログを取得したいという要件になります)

  • シェルスクリプトの記載方法

    linuxでシェルスクリプトを書いています サーバ上に「日付のついた*.bak」ファイルが毎日できています これを3日以上経過した*.bakファイルを消去したいので直接 コマンドラインから次のようにキーボードでたたくと正常に消去できます find /root -name '*.bak' -mtime '+3' -exec rm -f {} \; これをシェルスクリプト(sakujyo.bash)として次のように記載し /rootの中におきました ================(sakujyo.bash)===================== #!/bin/bash find /root -name '*.bak' -mtime '+3' -exec rm -f {} \; =================================================== そして # sakujyo.bash と打鍵すると 次のようにエラーとなります -bash: sakujyo.bash: command not found findのpathが通ってないのかとも考えられるのですが・・・ findコマンドは /usr/bin/ の中にあるので次のように記載してみました =================================================== #!/bin/bash cd /usr/bin find /root -name '*.bak' -mtime '+3' -exec rm -f {} \; ==================================================== このようにしても同じエラーとなります 記載方法等教えていただけませんか よろしくお願いします。

  • AppleScriptでUnixコマンドの不明点

    いつもお世話になってます スクリーンショットを撮るのにシェルスクリプトを使用しています 以下のスクリプトです #!/bin/bash screencapture -iWS 0.png sips -s format jpeg 0.png --out ~/Desktop/SS`date +%H%M%S`.jpeg rm 0.png これをAppleScriptで利用したく思いスクリプトエディタで記述しました do shell script "screencapture -iWS 0.png; sips -s format jpeg 0.png --out ~/Desktop/SS`date +%H%M%S`.jpeg; rm 0.png" これでスクリーンショットを撮る分には問題ありませんが AppleScript実行後スクリンショット確定前にescでキャンセルすると 下記AppleScriptエラーとなってしまいます Warning: 0.png not a valid file - skipping Error 4: no file was specified Try 'sips --help' for help using this tool 想像するにAppleScriptの改行が解らないので[;]の部分が間違ってるのかな?とそうぞうしているのですが スクリプト初心者のため何が悪いのか解りません シェルスクリプトのままで良いじゃないと思われるかも知れませんが、XcodeでGUI化したいのでAppleScriptにと考えています 原因を解決法をご教授よろしくお願いします

    • ベストアンサー
    • Mac
  • シェルスクリプト(bash)によるファイルの編集

    シェルスクリプト(bash)によるファイルの編集についてのご相談です。 私にあまりスクリプトの知識がないので申し訳ございませんが、 どなたかお知恵を拝借させてください。 よろしくお願いします。 【条件】 ・以下のような文字列を含むファイルが複数あるとします。 ・そして、その文字列は、ファイル内の不特定の行に存在します。 ※[半角スペース]、[タブ]は実際には便宜上記載していますが、実際は 本当の半角スペース、タブが入ります。 AAA[半角スペース]BBB AAA[半角スペース]CCC AAA[タブ]BBB AAA[タブ]CCC 【やりたいこと】 このとき、 AAA[半角スペース]BBB および AAA[タブ]BBB の行の下に、それぞれ、 AAA[半角スペース]DDD  と   AAA[タブ]DDD を挿入したいのですが、これをスクリプト(コマンド)でどのように行えば よいのかわからずに困っています。

  • ニフティでメールフォームを使用する方法

    ニフティの無料HPサービスでメールフォームを使いたいのですがsendmailが使えません。 以下の説明書きがありましたが、シェルスクリプトは知識がなく、ちょっと困っています。 シェルスクリプトでも可能なものなんでしょうか? ---------------------------------------------- perlについて perlのバージョンは5です。 (ただし、perl5での標準的なモジュールは使用できません) パスは、「/usr/local/bin/perl」となります。 スクリプトの1行目は「#!/usr/local/bin/perl」と記述してください。 シェルスクリプト(sh)について シェルスクリプト(sh)に関しては、以下のコマンドがご利用可能となっております。 awk, chmod, date, egrep, expr, grep, mkdir, rmdir, sh, cat, cp, echo, env, find, ls, mv, rm, sed なお、sendmailはご利用いただけません。 --------------------------------------------------

    • ベストアンサー
    • CGI