bashでログを書き出すコマンド
- bashにてログを書き出す際のコマンドについて説明します。
- 未経験の方でも簡単に使える小さなシェルスクリプトを組み、ログの出力を制御する方法を解説します。
- 具体的なコマンドの意味や使い方について説明し、参考になるサイトも紹介します。
- ベストアンサー
bashにてログを書き出すコマンド
未経験で小さいシェルスクリプトを組んでいます。 バックグラウンドで動いているので、rmやmvをした時に何らかのメッセージがでてスクリプトがとまらないようにログ吐き出しをしたいのです。 それで、先人の書いたスクリプトを部分コピーしながらうまくやっていたのですが、ちゃんと意味を知らなければと思って質問しています。 たとえば rm $ファイル 2>> $ログファイル 1>&2 という記述がありまして、 2>> というのがどういう意味を持つのかが分かりません。 1>&2はググったところ、書き出しの順番のようですが、数字と&が具体的に何を意味しているか分かりませんでした。 bashのこういったコマンド群で参考になるサイトをご存じの方は教えていただけませんでしょうか。 また、簡単に上述の意味を教えていただけるとうれしいです。 よろしくお願いします。
- nyalio
- お礼率37% (43/114)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> や >> などは「リダイレクト」と呼ばれます。 「bash」と「リダイレクト」で検索するとよいでしょう。 1は標準出力 2は標準エラー出力なので 2>> は標準エラー出力を $ログファイルに「追記」するです 2> にするとログファイルの過去の内容が消えてしまいます。 1>&2 は標準出力と標準エラー出力を一緒に出力したい場合に使用します。
関連するQ&A
- [シェルスクリプト内で bashコマンド後のコマンドが実行されない]
[シェルスクリプト内で bashコマンド後のコマンドが実行されない] 以下の様にシェルスクリプトを記述するとコマンド2が実行されません。 #! /bin/sh コマンド1 bash コマンド2 bash環境でコマンド2を実行させるにはどうしたら良いのでしょうか?
- ベストアンサー
- Linux系OS
- シェルスクリプトのbashとperlについて
シェルスクリプトのbashとperlについて 今さら気づいたのですが、PerlもUNIXのコマンドやシェルスクリプトとして使用できるということでしょうか。 RubyやPHPをUNIXのコマンドやシェルスクリプトとして使用することはできますでしょうか。 学ぶとしたら、bashとPerlのどちらが良いでしょうか。 また、シェルスクリプトはどんな用途や利点がありますでしょうか。 Webアプリケーションによるバックアップやログをタイマーでセットして自動的に取得したりすることは可能でしょうか。
- ベストアンサー
- Linux系OS
- bashからFTPコマンドのステータスを調べる方法
bashからFTPコマンドのステータスを調べる方法 シェルでFTPによるファイル転送を行っていますが、FTPが成功したかどうかをシェル側で受け取ることはできますか? FTP転送に失敗したら、3回やりなおして、それでダメならあきらめるというスクリプトにしたいです。 <サンプル> /usr/bin/ftp -n -v hostname << EOF user user1 passwd1 binary put file1 bye EOF
- ベストアンサー
- その他(プログラミング・開発)
- シェルスクリプト bashのtestコマンドが動きません
こんにちは、ど素人なのにシェルスクリプト仕事で書かされ苦しんでます。 SUN-solaris8で動作したシェルをLinuxE3.0へ移動させたら testコマンドでエラーになりました。 SUN-solaris8ではbsh LinuxE3.0ではbashです。 test -s file名は両方で認識するようですが、 test -s ../directory名/file名で指定して 実行するとSUNでは動作したのですが Linuxではわけの分からないメッセージが出て終了。 Linuxで % sh と打つと/bin/bash % test と打つと /XXX/usr/binだったかな?パス忘れました。 % man bashでマニュアル見るとtestは[]で囲め? 英語だから良く分からなかった。 疲れたので今日は諦めました。 testコマンドで良い解決法ご教示願います。 情報が不足なら指摘いただいた物を追加いたします。
- ベストアンサー
- Linux系OS
- bashで変数にパイプを入れ、コマンドとして使う?
パイプを含む文字列が入った変数をシェルコマンドとして実行する方法がありましたら 教えてください。 Linux環境で、bashを使って定期的にモニタリングするスクリプトを書こうとしています。 スクリプトの引数で実行するモニタリングコマンドを変えれるようにしたいのですが、 パイプが入っているとうまくいきません。 下記のようなスクリプトで、引数に "ps -ef | grep pty" と入れたら、定期的に そのようなコマンドを実行できるようにできますでしょうか? (引数指定時に、きちんとクォーテーションで全体を囲んで、パイプが評価されない ようにしてもダメでした。) 変数として入ったコマンドを実行するときに、パイプがシングルクォーテーションで 囲まれて "ps -ef '|' grep pty" のようになってしまい、パイプとして実行時に認識 されないようです。 bashシェルで設けてる制約でしょうか?回避策などありますでしょうか? <<スクリプト poll.sh>> ## # Defs export RUNCMD='finger' export INTERVAL=10 ## # Getopt while getopts "t:" OPT; do case ${OPT} in t) INTERVAL=${OPTARG};; esac done shift $((OPTIND-1)) [ ${#} -gt 0 ] && RUNCMD="${*}" ## # Main part while :; do (set -x; ${RUNCMD}; sleep ${INTERVAL}); done
- ベストアンサー
- Linux系OS
- シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。
シェルスクリプト(Bash偏)の実行ファイルに関するご質問があります。 ファイル名を変更するシェルスクリプトをbashで行おうとプログラムを作成したのですが、 実行するとbad interpreter: ディレクトリではありません とメッセージが出て終了します。記述に誤りがあるのか、実行の仕方が悪いのか分かりません。教えて下さい。 シェルの記述内容は ファイル名をtest.sh #!/bin/bash/ -f mv A.txt A.ori exit 実行方法として #>chmod x+a test.sh #>./test.sh で行いました。そうしたら、bad interpreter: ディレクトリーではありません とメッセージが出ます。 ちなみに #>. test.sh で実行するとターミナルがシェルの実行と同時に閉じてしまいますが、シェルを実行したディレクトリーを確認すると、処理が終わっておりました。
- ベストアンサー
- Linux系OS
- bashシェルスクリプトで空白がある場合のコマンドは変数にどう記述したらいいのでしょうか?
bashのシェルスクリプトで #!/bin/bash -x CMD=/bin/service portmap restart;/bin/service nfslock restart;/bin/service nfs restart $CMD としたのですが2行目で既にコマンドが実行されてしまいます。 空白がある場合のコマンドは変数にどう記述したらいいのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- コマンドプロンプトでのcopyコマンド
Windowsのコマンドプロンプトでのcopyコマンドで困っています。 フォルダ内に次のテキストファイル群があり、これを1つのファイルに結合したいです。 0201.log 0202.log 0203.log : : 0229.log と日付.logがある。 プロンプトから copy 02*.log feb.log とすると結合してはくれるのですが、順番が前後する場合があります。 0201の次に0210がきて0211,0212,..0219,0202,0203といった感じです。 コマンドプロンプトからdirでファイル名を表示させると、確かに結合される順番と合って いる様子。 この順番を変えてやればいいのかと思いますが、やり方がわかりません。 もちろん copy 0201.log + 0202.log + 0203.log + .... とやる方法や、全テキストデータをnotepad等で開いて地道に結合する方法もあるのでしょうが、 効率悪すぎます。 0201,0202,0203...と順番通りに結合する方法がありましたら、教えてください。 なお、type 02*.log >> feb.logでも望む結果は得られませんでした。
- ベストアンサー
- Windows XP
- Cygwinでログをのこす方法
Cygwinをつかって、シェルを作成しました。 ログを残そうとおもい、シェルの中に script logfile.log と記述したのですが、 「コマンドがない」 というメッセージがでて実行できませんでした、 Ctgwinでログを残すコマンドとか、方法わかるかたいたらご教授ください。よろしくお願いします
- ベストアンサー
- その他(プログラミング・開発)
- bashのaliasに引数を渡すには?
sshでログインしたubuntuサーバー上で時間のかかるシェルスクリプト(例えば hoge.sh) を実行した後、sshから抜けてもプロセスを走り続けさせるためにnohupを使っています。 nohup hoge.sh > out.log 2> err.log < /dev/null & これはタイプ量が多いし、時間のかかるシェルスクリプトはhoge.shだけではないので、実行したいシェルスクリプトの名前の部分を引数にした下記のようなエイリアスを作りたいのですが、bashのaliasには引数が渡せないとの事です。 alias run='nohup $1 > out.log 2> err.log < /dev/null &' "alias 引数"で検索すると「関数を使うと良い」というページがいくつか見つかりますが、関数ではsshから抜けると終了してしまいます。どうするのが良いでしょうか?
- ベストアンサー
- Linux系OS
お礼
ありがとうございます。 非常に参考になりました。 さっそく検索して調べてみます。