절전 모드없이 X 초 후에 명령을 실행하려면 어떻게해야합니까? 아니면 수면 상태이지만 쉘이 없으면 해당 명령의 응답을 기다리는가?
나는 이것을 사용했지만 작동하지 않았다
sleep 5 ; ls > a.txt
백그라운드에서 실행해야합니다. ls
5 초 후에 실행하려고하는 스크립트에서 실행 하지 않아도되고 쉘은 수면이 끝날 때까지 기다리지 않습니다.
답변
Hennes가 제안한보다 간결한 작성 방법은
(sleep 5; echo foo) &
또는 몇 초 이상이 필요한 경우을 사용할 수 있습니다 at
. 다음과 같은 명령을 내리는 세 가지 방법이 있습니다 at
.
-
그것을 파이프 :
$ echo "ls > a.txt" | at now + 1 min warning: commands will be executed using /bin/sh job 3 at Thu Apr 4 20:16:00 2013
-
실행할 명령을 텍스트 파일로 저장 한 다음 해당 파일을 다음으로 전달하십시오
at
.$ echo "ls > a.txt" > cmd.txt $ at now + 1 min < cmd.txt warning: commands will be executed using /bin/sh job 3 at Thu Apr 4 20:16:00 2013
-
at
STDIN에서 명령을 전달할 수도 있습니다 .$ at now + 1 min warning: commands will be executed using /bin/sh at> ls
그런 다음을 눌러 쉘 CtrlD을 종료하십시오
at
.ls
명령은 1 분 실행됩니다.
의 형식으로 매우 정확한 시간을 제공 할 수 있습니다 [[CC]YY]MMDDhhmm[.ss]
.
$ at -t 201412182134.12 < script.sh
이렇게하면 script.sh
2014 년 12 월 18 일 21:34 및 12 초에 스크립트가 실행됩니다 . 따라서 이론적으로 at
향후 5 초 동안 실행할 수 있습니다 . 그러나 그것은 탱크를 사용하여 비행을 시작하는 것과 비슷하며 Hennes의 제안이 더 좋습니다.
답변
백그라운드에서 쉘이나 스크립트를 시작하여이 문제를 해결할 수 있습니다.
예:
/ bin / sh -c "sleep 5; echo foo"& [1] 63791 > 활성 쉘 프롬프트 foo 5 초 후에 출력이 나타납니다.