
RedHatlinux AS3.0でperl内部でsystemコールでtarコマンドを
発行していますが
$result = system "tar czvf・・・ 1> /dev/null 2> /dev/null"
の結果として$resultの値に512という値が入ることがあります。
実際、tarファイルの作成には成功しているので0が返ってきて
それ以外をエラーとして判定するように期待していたのですが
上記の通りの値になってtar成功に関わらずエラーと判断して
しまいます。
この512というリターン値は何なのでしょうか?
なお、単純にsystemで簡単なtarをすると0で普通に返ってきたりします。またtar元はディレクトリ配下の複数のファイルを*で圧縮しようとしています。
No.3ベストアンサー
- 回答日時:
FreeBSDですが、
% perldoc -f system
すると、system関数のマニュアルが見られます。(Linuxにもあるんじゃないかな)
そのサンプルスクリプトでは、
printf "child exited with value %d\n", $? >> 8;
なんてしているので、exitステータスは、8bit shiftする(256で割る)
必要があるんですね。
# 検索すると同様の説明が他数あると思います。
>実際、tarファイルの作成には成功している
対象ファイルが全て入っていますか?
全ての対象ファイルが含まれていないtarファイルになっているんじゃないでしょうか。
ファイルリストを作ってtar の"-T"オプションで読み込むか、ディレクトリ名だけを指定するのが無難じゃないですかね?
>-T, --files-from F
> 抽出又は作成するファイルの名前をファイルFから読み込む
ありがとうございます。
tatsu99さんのアドバイスにもありましたが
ビットシフトしていたりしているのですね。
またishi7474さんの所でもファイルリストの
制限などの話も伺いまして、tarの指定の仕方などに
検討の余地がありそうです。
No.2
- 回答日時:
とりあえず、標準出力と標準エラー出力を/dev/nullに捨てずに、
何かのファイルに書いて原因をつきとめる必要があると思います。
よくあるケースとして、"tar czvf /dir1/*"等とした場合、/dir1
以下に存在するファイル数が多過ぎて、ファイルリストがシェル
のコマンドライン長の制限を越えることがあります(ワイルドカード
はtarコマンドに渡される前に、bash等のシェルがファイル名の
リストに展開します)。
そういう時は"tar czvf /dir1/"等と、ワイルドカードを使わない
指定を考えます。
ありがとうございます。
ファイルリストのコマンドライン長の制限はまったく
気がつきませんでした。
確かに数のあるディレクトリもあるので怪しそうです。

No.1
- 回答日時:
perlの場合、tarの戻り値を知るためには、systemのreturn値を256で悪必要があります。
従って512÷256=2ですので、tarの終了ステータスは2と言うことになります。tarの終了ステータスは、参考URLを参照下さい。
(但しHP-UX11.0ですので、linuxと同じかどうかの保証は私は出来ませんので、ご了承下さい)
参考URL:http://h50221.www5.hp.com/cgi/service/knavi/prod …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名一覧の印刷
-
Dirコマンドでフォルダ内ファイ...
-
ラズパイで『’test.service’をs...
-
ファイル名についている「-」と...
-
DOS コマンドの~zfの意味を教え...
-
cpコマンドで強制的に上書きし...
-
Ubuntuでrcpを使おうとしている...
-
batファイルの強制終了を回避し...
-
ピクチャクリッピングのファイ...
-
ftpコマンドで丸ごとダウン...
-
lastコマンドの結果が更新されない
-
~以外を削除する場合(rmコマ...
-
数字を複数回繰り返す正規表現...
-
linux コマンド
-
作成日時でのファイル検索
-
DOSのコマンドで、隠しファイル...
-
ファイル編集について
-
BATファイルの記述で
-
コマンドプロンプト dir でのソ...
-
ファイルが消せない、移動でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ファイル名についている「-」と...
-
ラズパイで『’test.service’をs...
-
ファイル名一覧の印刷
-
テキストファイルから最終行の抽出
-
batファイルの強制終了を回避し...
-
DOSのコマンドで、隠しファイル...
-
ファイルが消せない、移動でき...
-
~以外を削除する場合(rmコマ...
-
DOS コマンドの~zfの意味を教え...
-
数字を複数回繰り返す正規表現...
-
lsでは一画面ずつ表示できませ...
-
cpコマンドで強制的に上書きし...
-
ftpコマンドで丸ごとダウン...
-
oracleの文字コードとlinuxサー...
-
ファイル名の -(ハイフン)を _(...
-
win11のエクスプローラーの右ク...
-
xcopyのエラー情報のはき...
-
エクセルのツールバーから数値...
-
Cygwinのコマンドラインから.ba...
おすすめ情報