- PR -

シェルスクリプトでログをファイルに出力

1
投稿者投稿内容
Penguin
常連さん
会議室デビュー日: 2006/06/29
投稿数: 34
投稿日時: 2006-10-25 16:52
現在サーバのバックアップのためのシェルスクリプトを作成しています。作成したシェルスクリプトの中で、コマンドの標準出力と標準エラーをファイルに出力したいのですが、一部うまくいきません。以下に作成したシェルスクリプトを示します。

---------------------------シェルスクリプトlog.sh------------------------------
#!/bin/bash

cd /tmp/backup
mkdir day.`date +%Y%m%d`
ls
chmod 777 day.`date +%Y%m%d`

# tarコマンドでファイル実体をバックアップ。tarコマンドのログをlog.txtに記述
bash tar zcfP /tmp/backup/day.`date +%Y%m%d`/tar.`date +%Y%m%d`
/xxx/yyy/AAA_Storage /xxx/yyy/BBB_Storage >> tmp/backup/log.txt 2>&1

# pg_dumpallコマンドでメタデータをバックアップ。ログをlog.txtに記述     
su postgres -c "bash /xxx/aaa/bbb/ccc/pg_dumpall >     
/tmp/backup/day.`date +%Y%m%d`/dump.`date +%Y%m%d` >> tmp/backup/log.txt 2>&1"

/xxx/aaa/bbb/ccc/log.sh >> /tmp/backup/log.txt 2>&1 #シェルスクリプトlog.shの                        ログをlog.txtファイルに出力する

---------------------------------------------------------------------------

◆ログを出すために◆
@tarコマンドではオプションのPオプションをはずしました。そうするとコンソールに は"tar:Removing leading '/'from member names"というエラーがでます。
Apg_dumpallコマンドの設定しているPATHを正しくないものに置き換えました。そうす ると"pg_dumpall: pg_dumpall:そのようなファイルやディレクトリはありません"と いうエラーがでます。

これらのエラーメッセージがlog.txtファイルに出力されてほしいのですが、シェルスクリプトを実行すると、@はそのままコンソール画面に出てしまいます。そしてlog.txtファイルには、"bash tar"のみを実行したときのエラー"tar: /bin/tar: cannot execute binary file"というエラーがlog.txt に出てしまいます。Aはコンソール画面にもlog.txtファイルにもでません。
また、シェルスクリプトlog.shのログも何も見受けられずどのように判別したらよいのか分かりません。
リダイレクトの書式に自信がありません。ご教授をお願いできますでしょうか。

[ メッセージ編集済み 編集者: Penguin 編集日時 2006-10-25 16:59 ]
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2006-10-25 17:30
こんな事を言うのも何ですが…

先日も似た様な質問されてましたよね?

シェルスクリプトの本をご自分で買って、
手元に置いてそれを見ながら書いた方が良いと思いますよ。

「百聞は一見にしかず」

です。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2006-10-26 00:30
こんばんゎ

>> logfile 2>&1

2>&1 >> logfile
にしてみたら?

「百聞は一見にしかず」
はもとより、経験に勝る知識は無いと思います
1

スキルアップ/キャリアアップ(JOB@IT)