よくある質問は次のとおりです。
今回は反転を加えました。でこれを行う必要がありますzsh
。また、解決策は次のとおりです。
- 沈黙を維持する必要があります(たとえば、ジョブ制御メッセージはありません)。
zsh
移植可能でなければなりません(つまり、できるだけ純粋に近い。そうでないと仮定coreutils
)。- 正確でなければなりません(コメントを参照)
- GNUのように振る舞う
timeout
精度について:
プロセスを開始してしばらく待ってからPIDを終了するのは間違っています。タイムアウトが記録された場合、またはシステムに PID が足りなくなった場合、タイミングを合わせたプロセスが終了し、後で同じ PID を使用して新しいプロセスが開始される可能性があるため、これは間違っています。実際、これはほとんど起こりませんが、プロセスが終了した時期を追跡し、まだ終了していない場合にのみ終了するより明確な方法があれば良いでしょう。
答え1
私が最初に考えたのは、プロセス作成後にPIDを取得し、ツールzstat
(参照man zshmodules
)を使用してプロセスタイムスタンプ(たとえば)を取得し、必要な時間以降に与えられたタイムzstat '+mtime' /proc/PID
スタンプが/proc/PID
変更されていないことを確認することでした。その場合は、ジョブを終了します。 。