私たちの睡眠はどこですか?

私たちの睡眠はどこですか?

私はJetson NanoでJetPack 4.6.1を実行しています。PHPスクリプト私は何も文句を言わないようにしていますusleep

sh: 1: usleep: not found

答えLinux usleep: コマンドが見つかりません。なぜですか?initscripts(RH)にあることをお勧めします。Debianも明らかに同じです。。ただし、initscripts減価償却されutil-linux(またはsysvinit-utils)に置き換えられます。インストールしましたが、util-linuxまだ見つかりませんusleep

実際、3つのパッケージすべてのファイルのリストを見ると(initscriptsutil-linuxそしてsysvinit-utils)どのファイルも公開しませんusleep

これ回答到着Ubuntuには眠りますか?、BusyBoxのインストールを提案しましたが、私はインストールしましたが、役に立ちませんでした。これ回答同じ問題に対する解決策(nosqlパッケージ内に埋め込まれている)があるかもしれませんが、試す前にそれがどこにあるかを知りたいです。しなければならないうん、なぜこんなに探すのが難しい?コマンド自体は使用されなくなりましたか?

ベストアンサー1

sleep浮動小数点秒呼び出し(GNUスタイル)を使用するようにPHPを更新できます。usleep「特定のマイクロ秒間のスリープモード」は1秒に100万であるため、aは $SleepStep100000です。

$ echo 100000 1000000 / p | dc
.1000

これは通話と同じですsleep 0.1。 (GNU sleep、浮動小数点値を使用しない他の型ではありません)

私たち同士

usleep(1)ソースコードを見つけて自分でコンパイルまたは作成することはそれほど難しくありません。最も要求の厳しい部分は、ユーザーが入力した入力を呼び出し usleep(3)値(希望的には32ビットの正の整数)に変換することです。

perl -MTime::HiRes=usleep -e 'usleep shift' 100000

しかし、私のシステムでは約30msのオーバーヘッドがあるので理想的にはusleep(1)

非標準

usleep(1)それ以外の場合は標準ではありません(Linux以外のシステムには存在しない可能性があります。sleep問題についてはGNUがない場合と呼ばれる場合がありますgsleep)。マニュアルページにはusleepRedHatの誰かが書いたものがあります。 RedHatはサポートを中止することを決定することができます。これにより、さまざまなLinuxベンダーがどのようにするかを知ることができません。 POSIX 指定ツールを使用すると役に立ちます。

シェルスクリプトでほぼ0秒に近い問題

さらに、シェルスクリプトのゼロ秒に近いスリープモードは問題になる可能性があります。特に遅い、非常に忙しい、またはタイミングが悪いシステム(おそらく仮想マシン)では問題になる可能性があります。スリープ待ち時間がゼロに近づくと、分岐/実行usleep(または部分呼び出し)のオーバーヘッドがsleepランタイムを支配します。短い睡眠は、同様のシステムコールを持つusleep(3)プロセスでよりよく処理されます。これは持つたくさんコストより間接費が少ない

内面化された呼び出し

したがって、PHPでは次を呼び出すことができます。眠るしたがって:

exec ("v4l2-ctl -d {$Device} -c tilt_speed=1");
# TODO check for a v4l2-ctl non-zero exit here
usleep($SleepStep);
exec ("v4l2-ctl -d {$Device} -c tilt_speed=0");

system(3)これには1つではなく2つの呼び出し(PHPで)がありますが、execスリープの移植性が向上しました。

おすすめ記事