- PR -

シェルスクリプトが実行されない

投稿者投稿内容
Penguin
常連さん
会議室デビュー日: 2006/06/29
投稿数: 34
投稿日時: 2006-10-10 19:35
backup.sh という名前のシェルスクリプトを作りました。シェルスクリプトを保存したディレクトリに移動し、ファイルに実行権限を付けました。./backup.sh としたところ、以下のようなエラーがでました。これはなぜでしょうか・・?

[root@localhost local]#./backup.sh
 tar: Remoding leading '/' from member names
[postgres@localhost postgres]$

このように、スーパーユーザのrootで実行しても勝手にpostgresユーザに変換されてしまいます。

ちなみに、作ったシェルスクリプトは以下です。

-------------------------------------------------------
#! /bin/bash

tar cf /tmp/backup/backup.tar /opt/Non_data/Nonstorage
/opt/Non_data/AAA_Nonstorage

su - postgres

cd /home/postgres/postgresql-7.4.13

pg_dumpall > /tmp/backup/backup.tar

gzip /tmp/backup/backup.tar

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

初めての作業で支離滅裂なスクリプトかと思います。

手前味噌で恐縮ですが、シェルスクリプトの中でユーザを変更する場合、 su - でよいのでしょうか。うまくいきません。そもそも、ファイル実体とデータベースクラスタをそれぞれ異なるコマンドでバックアップし、同じディレクトリにバックアップを取る場合、ユーザ変更は必須なのでしょうか・・ コマンド操作ではユーザpostgresを作ってからそこでデータベースを作ったものですから、シェルスクリプトの中でも必要かと思うのですが。。
 未熟な質問ですがご教授いただければ幸いです。よろしくお願いします。
Console
ベテラン
会議室デビュー日: 2005/09/10
投稿数: 65
お住まい・勤務地: 石川県金沢市
投稿日時: 2006-10-10 19:53
根本的に理解されていないようなので、スクリプトの作成以よりコマンド1つ1つ実行して確かめて見たらどうですか?
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-10-10 20:03
こちらは解決済みということでいいんでしょうか?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34120&forum=10
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34119&forum=26

また、こちらは??

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34123&forum=26

[ メッセージ編集済み 編集者: shimix 編集日時 2006-10-10 20:07 ]
Penguin
常連さん
会議室デビュー日: 2006/06/29
投稿数: 34
投稿日時: 2006-10-10 21:16
Linuxsquare と Database どちらに載せるべきか迷い両方に同じものを載せています。間際らしくてすみません。

 一つ一つコマンドは試しました。tar コマンドや pq_dump コマンドなどはできましたが、使うのはtar コマンドと pg_dumpall で、ただ今、pgdumpall コマンドの使い方を試作しているところです。 pg_dumpall コマンドのほうはまだ解決していません。
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2006-10-11 06:11
>
>[root@localhost local]#./backup.sh
> tar: Remoding leading '/' from member names
>[postgres@localhost postgres]$
>
>このように、スーパーユーザのrootで実行しても勝手にpostgresユーザに変換されてしまいます。

勝手にではなく、シェルの中でsuを使って postgres に切り替えていますけど...
(suを実行した時点で、新たなシェルが起動されてしまうので、本来のシェルプロセスとは別の処理になります)
man su で su の使い方を参照して -c オプションについて確認してみてください。

シェルの中でsuを使わないで、起動コマンドを

# su - postgres -c /xxx/xxx/xxx/backup.sh

という手もあるかな。


[ メッセージ編集済み 編集者: 非武装エリア 編集日時 2006-10-11 06:13 ]
Penguin
常連さん
会議室デビュー日: 2006/06/29
投稿数: 34
投稿日時: 2006-10-11 09:34
非武装エリアさん

自分が行っていた設定がこのように反映されていたのですね・・・!!

気づかせていただきました。ありがとうございます。su コマンド、確認します。

irgal
会議室デビュー日: 2006/10/16
投稿数: 5
投稿日時: 2006-10-22 19:31
引用:

ぽんたさんの書き込み (2006-10-10 21:16) より:
Linuxsquare と Database どちらに載せるべきか迷い両方に同じものを載せています。間際らしくてすみません。



もしご存じでなければ、"マルチポスト"という言葉をGoogle等で調べてみてください。
Johann
ベテラン
会議室デビュー日: 2005/08/31
投稿数: 52
投稿日時: 2006-10-23 08:36
>su コマンド、確認します。

ん?コマンドって先に確認してから書くものじゃないの?
どこかから引っ張ってきたものを動かそうとして動かない、
挙句の果てに他人にデバッグお願いしますというのは
どうかと思いますよ。

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