私は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つのパッケージすべてのファイルのリストを見ると(initscripts
、util-linux
そしてsysvinit-utils
)どのファイルも公開しませんusleep
。
これ回答到着Ubuntuには眠りますか?、BusyBoxのインストールを提案しましたが、私はインストールしましたが、役に立ちませんでした。これ回答同じ問題に対する解決策(nosql
パッケージ内に埋め込まれている)があるかもしれませんが、試す前にそれがどこにあるかを知りたいです。しなければならないうん、なぜこんなに探すのが難しい?コマンド自体は使用されなくなりましたか?
答え1
sleep
浮動小数点秒呼び出し(GNUスタイル)を使用するようにPHPを更新できます。usleep
「特定のマイクロ秒間のスリープモード」は1秒に100万であるため、aは
$SleepStep
100000です。
$ 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
)。マニュアルページにはusleep
RedHatの誰かが書いたものがあります。 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
スリープの移植性が向上しました。
答え2
あなたの質問のいくつかは、数年後にユーティリティコマンドでパッケージを見つける方法を尋ねているように見えます。 Debian と Ubuntu の場合、パッケージ検索サイトでこれらの検索が簡単になりました。つまり、https://packages.debian.org/そしてhttps://packages.ubuntu.com/それぞれ。
検索ボックスの一般的な名前は次のとおりです。パッケージディレクトリの検索通常、この種の検索には役立ちませんが、下の検索ボックスはパッケージ内容の検索します。名前付きファイルのチェックボックス/ラジオボタンをクリックします。終わりキーワードが重要です。
DebianおよびUbuntuサイトでは、この検索はgnulib、epic4-help、chemic9、およびlmbenchパッケージに役立つ可能性があるファイルが含まれていることを示しています。 lmbenchの可能性が最も高いです。もう一つは、実行可能コードではなくヘルプテキストのように見えます。
yum / rpmパッケージリポジトリがあるディストリビューションに似た検索機能があるかどうかはわかりませんが、Debian / Ubuntuディストリビューションは状況によっては非常に便利でした。