• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sortコマンドについて)

sortコマンドで大容量のファイルをソートする方法について

このQ&Aのポイント
  • sortコマンドによる大容量ファイルのソートで「sort:0653-657ソート中に書込みエラーが発生しました。」というエラーが出る場合、/usr/tmpディレクトリのファイルシステムの容量不足が原因と考えられます。
  • ソート時には一時ディレクトリとして/usr/tmpディレクトリが使用され、ソート結果を一時的に保存します。ファイルシステムの容量が不足している場合、ソートが失敗します。
  • ファイルシステムの容量を拡張することができない場合、代替方法としてソート処理を分割する方法があります。例えば、ファイルを複数の部分ファイルに分割して個々の部分ファイルをソートし、最後に結合するという手順です。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

man sort に載ってますが、-T オプションでワークディレクトリを別の場所に指定できます。 そもそもどこにも必要容量のワークを確保できない場合は、対象ファイルを小さく分割して、それぞれソートし、出来た分割ソート済みファイルを sort -m でマージするといいです。sort -m だとワークを使いませんので。

tanamochi
質問者

お礼

ご回答有難うございました。 man sortを確認出来ていませんでした。 -T オプションを用いワークディレクトリを指定したところ、 正常に動作致しました。 また、ファイルシステム的に大きなディレクトリをいつまで確保できるかわかりませんので、 稼動後、sort -m についても検討してみようと思います。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

ウチの環境は FreeBSD ですが man sort すると -T --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or /tmp; multiple options specify multiple directories とあります。 /usr/tmp 以外で空いているディレクトリがあれば、 そこを指定してみてはどうでしょうか?

tanamochi
質問者

お礼

ご回答有難うございます。 -T オプションに指定してもよいというディレクトリを提供して頂けたので、 解決することが出来ました。 80Mbyteのファイルをソートするのにこんなに多くの容量を必要とするとは思ってもいませんでした; 大変参考になりました。