GNU coreutils timeoutコマンドは、特定のスクリプトの状況に非常に便利で、実行が速い場合はコマンドの出力を使用でき、時間がかかりすぎる場合はスキップできます。
timeoutPOSIXで指定されたユーティリティのみを使用する基本的な動作を概算するにはどうすればよいですか?
(私はそれがの組み合わせを含むことができると思っていますwait、sleep、killそして他に何が、おそらく私はより簡単なアプローチを欠けているを知っています。)
3
シェルスクリプトでのタイムアウトを参照してください。ただし、POSIX以前のシステムへの移植性を要求し、バックグラウンドプロセスを含む一部のソリューションで除外されるstdinとstdoutを保持する必要があるため、これは重複とは見なしません。
—
ジル 'SO-悪であるのをやめる'
command & pid=$! ; sleep 5 && kill $pid
@Pandyaはわずかな競合状態を引き起こしません。
—
ワイルドカード
command急速に終了pidすると、killコマンドが実行される前に別のプロセスが再利用される可能性がわずかにありますか?実動コードではそれは望ましくありません
解決しようとしている根本的な問題について詳しく説明していただけますか?
—
ジェームズヤングマン
timeoutプログラムをコンパイルして使用するだけではどうですか?
@JamesYoungman、あなたは移植性のためのスクリプトを書くことにあまり精通していないと思います。POSIX準拠(またはPOSIX指定)の方法を要求することは、移植性を意図していることを意味します。ソースコードをバイナリにコンパイルすることは非常に移植性が低く、企業のセキュリティポリシーによっては、運用サーバーにコンパイラがまったくインストールされていない場合があります。
—
ワイルドカード