パラメータリストが長すぎます。

パラメータリストが長すぎます。

非常に大きなパラメータ(サイズ1MB)を含むコマンドを入力しようとすると、「パラメータのリストが長すぎます」というメッセージが表示されます。この議論にどのように参加できますか?

オペレーティングシステム:Linux Ubuntu

答え1

ARG_MAX引数がカーネル制限より大きい場合、実行可能ファイル間で引数を渡すことはできません。

お持ちの場合リスト引数が長すぎるため、より小さい部分に分割できます(例:を使用)xargs。これにより、できるだけ多くの引数が提供され、必要なだけコマンドが実行されます。

構文はですxargs command <file。省略すると、commandその引数が表示されます(例:)echo

実証的に、

xargs -n 4 </etc/motd

最初の4つのトークンは1行(最初の呼び出し)に印刷され、次の4つのトークンは別の行に印刷されます。 (パラメータは-n最大引数を設定するため、制限はまったく使用されませんARG_MAX。)

実行しようとしているコマンドに望ましくない副作用がある場合は機能しない可能性があります。たとえば、command既存の./a.outファイルを上書きすると、ジョブが完了すると最後の実行結果が残ります。

commandコマンドライン引数の代わりにファイルまたは標準入力を読み取るように構成または変更できる場合は、この制限を解決できます。ファイルまたはストリームはより大きくてもよく、ARG_MAX通常はそうです。

関連情報