- PR -

trussコマンドの戻り値について

1
投稿者投稿内容
なおっち
常連さん
会議室デビュー日: 2004/11/15
投稿数: 29
投稿日時: 2006-04-05 22:17
あるプログラムで稀にエラーが発生するため
trussを使用し情報をファイルに格納しようとしています。

ただ、以下のように使用すると「truss」自体は正常終了するので
「command 」が異常終了した場合も戻り値は「0」を返します。
truss command > aaa.txt
echo $?

この状態だとエラーが発生した場合も、
本来エラーを出力し停まるべき後続ジョブが起動し処理が終了してしまいます。
「truss」のオプションも色々探したのですが、コマンドの戻り値を返す方法を
見つけることができませんでした。

勉強不足で申し訳ありませんが、戻り値を取得する方法をご存知の方が
おられましたらご教示の程お願いします。
たお
会議室デビュー日: 2005/11/22
投稿数: 13
投稿日時: 2006-04-06 08:32
Sunのユーティリティですか?
http://docs.sun.com/app/docs/doc/817-1782/6mhg753ls?l=ja&a=view

手元にSunが無いので確認できないのですが、
こういうことできます?

truss "command;echo $? 1>&2" > aaa.txt
※リターンコードがエラー出力される

[ メッセージ編集済み 編集者: たお 編集日時 2006-04-06 08:40 ]
なおっち
常連さん
会議室デビュー日: 2004/11/15
投稿数: 29
投稿日時: 2006-04-06 08:59
お世話になります。

>Sunのユーティリティですか?
言葉足らずで申し訳ありませんでした。Sunのユーティリティです。

以下の通り実行しましたが、「echo $rc」は空欄を返しました。
$ rc=`truss "echo abc;echo $?" 1>&2 2>&1 2> aaa.txt`
$ echo $rc


又、「aaa.txt」には以下の通りエラーが出力されていました。
$ more aaa.txt
truss: cannot find program: echo abc;echo 0
上記より、「"」があると「truss」は動かないのかと思います。

以上ですが、何か他に手立てはありますでしょうか?
たお
会議室デビュー日: 2005/11/22
投稿数: 13
投稿日時: 2006-04-06 22:56
これは動きます?
truss command > aaa.txt
デフォルトだと、エラー出力らしいので、
truss command 2> aaa.txt もしくは truss -o aaa.txt command
みたいです。

これは、どうです?
truss -o aaa.txt -f command "command;echo $?"
-fはシェルスクリプト中のcommandを追跡するらしいが、
上記の様に"で括った場合でも、できるかわかりません。
すべて、マニュアルから抜粋ですので再度読んで、
確認してもらえると助かります。
http://docs.sun.com/app/docs/doc/817-1782/6mhg753ls?l=ja&a=view

たぶん、straceなら他ディストロでもあるんですけど、
trussじゃないとだめですかね?

[ メッセージ編集済み 編集者: たお 編集日時 2006-04-06 22:57 ]
なおっち
常連さん
会議室デビュー日: 2004/11/15
投稿数: 29
投稿日時: 2006-04-07 19:44
お世話になります。

以下のコマンドを実行しましたが、やはり「"」が曲者でした。
>truss -o aaa.txt -f command "command;echo $?"

>すべて、マニュアルから抜粋ですので再度読んで、
>確認してもらえると助かります。
一旦マニュアルを熟読致します。

お忙しい中ありがとうございました。
1

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