저는 Jetson Nano에서 JetPack 4.6.1을 실행하고 있습니다.PHP 스크립트나는 아무것도 불평하지 않으려 고 노력하고 있습니다 usleep
:
sh: 1: usleep: not found
대답Linux usleep: 명령을 찾을 수 없습니다. 이유는 무엇입니까?initscripts
(RH) 에 있어야 하는 것이 좋습니다 .데비안도 분명히 똑같습니다. 단, initscripts
감가상각되어 util-linux
(또는 sysvinit-utils
)로 대체됩니다. 설치했는데 util-linux
아직도 못찾겠어요 usleep
.
실제로 세 패키지 모두의 파일 목록을 보면(initscripts
,util-linux
그리고sysvinit-utils
) 어떤 파일도 공개하지 않습니다 usleep
.
이것답변도착하다우분투에는 잠이 있나요?, BusyBox 설치를 제안했지만 제가 설치했지만 도움이 되지 않았습니다. 이것답변동일한 문제에 대한 해결책( nosql
패키지 내부에 묻혀 있음)이 있을 수 있지만 시도하기 전에 그것이 어디에 있는지 알고 싶습니다.~해야 한다응, 왜 이렇게 찾기 힘들어? 명령 자체가 더 이상 사용되지 않습니까?
답변1
sleep
부동 소수점 초 호출(GNU 스타일)을 사용 하도록 PHP를 업데이트할 수 있습니다 . usleep
"특정 마이크로초 동안 절전 모드"는 1초에 1백만이므로 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초에 가까운 문제
또한 셸 스크립트에서 0초에 가까운 절전 모드는 문제가 될 수 있습니다. 특히 느리거나 매우 바쁘거나 타이밍이 좋지 않은 시스템(아마도 가상 머신)에서는 문제가 될 수 있습니다. 절전 대기 시간이 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)
여기에는 하나가 아닌 두 개의 호출(PHP에서 )이 있지만 exec
sleep의 이식성이 향상되었습니다.
답변2
귀하의 질문 중 일부는 몇 년이 지난 후 유틸리티 명령으로 패키지를 찾는 방법을 묻는 것으로 보이며 명령이 다른 패키지로 이동되었을 수 있습니다(또는 여러 구현이 있을 수 있으며 일부는 여전히 사용 가능). Debian 및 Ubuntu의 경우 패키지 검색 사이트를 통해 이러한 검색이 더 쉬워졌습니다. 즉,https://packages.debian.org/그리고https://packages.ubuntu.com/각기.
검색창의 일반적인 이름은 다음과 같습니다.패키지 디렉터리 검색, 일반적으로 이러한 종류의 검색에는 도움이 되지 않지만 아래 검색창은패키지 내용 검색할 것이다. 이름이 지정된 파일의 확인란/라디오 버튼을 클릭합니다.끝키워드가 핵심입니다.
Debian 및 Ubuntu 사이트에서 이 검색은 gnulib, epic4-help,chemic9 및 lmbench 패키지에 유용할 수 있는 파일이 포함되어 있음을 보여줍니다. lmbench일 가능성이 가장 높습니다. 다른 하나는 실행 가능한 코드가 아닌 도움말 텍스트처럼 보입니다.
yum/rpm 패키지 저장소가 있는 배포판에 유사한 검색 기능이 있는지는 모르겠지만 Debian/Ubuntu 배포판은 어떤 상황에서는 나에게 매우 유용했습니다.