CentOSでコマンドを実行しており、同時に2つのことをしたいと思います。
- コマンドの実行時間をファイルに書き込みます。
- 停止コマンドのタイムアウト設定
最初の実装を正常に実装しました。次のようになります。
(time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt
ご覧のとおり、timeコマンドを使用してコマンドにかかる時間を計算し、時間の結果をファイルに渡しますmeasures.txt
。例は次のとおりですmeasures.txt
。
real 0m0.002s
user 0m0.000s
sys 0m0.000s
次の2番目の項目を追加しようとしています。
(timeout 1s time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt
このコマンドの結果は、私のファイルを混乱させ、次のような結果を返します。
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 6368maxresident)k
0inputs+0outputs (0major+440minor)pagefaults 0swaps
ご覧のとおり、「リアルタイム」の結果は何とか消え、他の結果は別の形式でした。time
コマンドの結果とを区別する方法はtimeout
?
編集:2番目のアイデアは、タイムアウトの代わりにulimitコマンドを使用することです。私は同じことを試しましたが、ulimitを使用しました。
(ulimit -t 10 time ./minisat+_64-bit_static opb_clauses.txt ) 2>>../measures.txt
しかし、今回はMeasures.txtに結果が記録されませんでした。
答え1
同じ例を試してみると、期待した結果が出てくるので、環境に問題があるようです。たとえば、
# command #1
$ (time echo "hi") 2>> measures.txt
hi
$ cat measures.txt
real 0m0.000s
user 0m0.000s
sys 0m0.000s
# command #2
$ (timeout 1s time echo "hi") 2>> measures.txt
hi
$ cat measures.txt
real 0m0.000s
user 0m0.000s
sys 0m0.000s
0.00user 0.00system 0:00.05elapsed 0%CPU (0avgtext+0avgdata 552maxresident)k
56inputs+0outputs (1major+173minor)pagefaults 0swaps
コマンドを2つの別々の呼び出しで構成するのではなく、次のことを試してください。
(
time ./minisat+_64-bit_static opb_clauses.txt
timeout 1s time ./minisat+_64-bit_static opb_clauses.txt
) 2>>../measures.txt