수면이 늦어질 수 있습니다. Linux sleep 명령을 사용하면 일정 시간 동안 현재 작업을 지연할 수 있습니다. 구문은 "sleep [--help] [--version] number[smhd]"이며 기본적으로 sleep 명령은 몇 시간 동안 지연됩니다. 초이지만 접미사를 사용하여 시간을 지정할 수 있습니다. 단위는 초, 분, 시간 또는 일 단위로 지연을 지정합니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
수면으로 인해 스레드가 지연될 수 있습니다.
Linux sleep 명령 소개
Linux sleep 명령을 사용하면 현재 작업을 일정 시간 지연시킬 수 있습니다.
사용 권한: 모든 사용자.
Syntax
sleep [--help] [--version] number[smhd]
매개변수 설명:
--help: 보조 정보 표시
--version: 버전 번호 표시
번호: 시간 길이, 뒤에 s, m이 올 수 있음 , h 또는 d
여기서 s는 초, m은 분, h는 시간, d는 일 수
1. Linux 명령 실행을 지연합니다
기본적으로 sleep 명령은 몇 초 동안 기다리십시오. 이를 이해하기 위해 sleep 명령을 사용하기 전후의 현재 시간을 출력해 보겠습니다. 예를 들어, 다음 명령은 현재 시간을 인쇄한 후 5초를 기다려 시간을 다시 인쇄합니다.
$ date '+%r'; sleep 5; date '+%r'
이 예에서는 세미콜론(;)을 사용하여 각 명령을 구분해야 합니다.
2. N분 동안 기다리는 명령을 실행합니다.
일반적으로 sleep 명령에서는 접미사를 사용하여 시간 단위를 지정할 수 있습니다. 이는 다음 접미사를 사용하여 sleep 명령에서 표현할 수 있습니다.
$ date '+%r'; sleep 1m; date '+%r'
3 명령을 X분과 초 동안 절전 모드로 설정합니다.
실제로 여러 접미사를 사용할 수도 있습니다. 수면 명령. 이 경우 기간은 모든 값을 더하여 계산됩니다. 이를 이해하기 위해$ date '+%r'; sleep 1m 20s; date '+%r'명령을 사용하여 1분 20초 동안 자자. 위의 예에서는 두 가지 다른 접미사가 사용되었습니다. 그러나 동일한 접미사를 사용할 수도 있습니다. 예를 들어 2s 및 3s 접미사를 사용하여 5초 동안 절전 모드로 전환할 수 있습니다. 명령은 다음과 같습니다.
$ date '+%r'; sleep 2s 3s; date '+%r'
4. sleep 명령을 통해 부동 소수점 숫자를 사용하세요
또한 sleep 명령은 부동 소수점도 허용합니다. 숫자를 입력하므로 이 방법을 사용하면 1초도 없이 잠을 잘 수 있습니다. 예를 들어 0.5초 값을 사용하면 0.5초 동안 잠을 잘 수 있습니다.$ date '+%r'; sleep 0.5s; date '+%r'위 출력에서 date 명령이 초 시간 단위에 대해 동일한 값을 표시하는 것을 볼 수 있습니다. 이 외에도 다른 접미사가 붙은 부동 소수점 값도 사용할 수 있습니다. 예를 들어 0.5m 값을 사용하면 30초 동안 잠을 잘 수 있습니다.
$ date '+%r'; sleep 0.5m; date '+%r'
5. sleep 명령을 사용하여 알람 시계를 시뮬레이션합니다.
이전 예에서는 주로 sleep 명령을 사용하여 다음을 수행하는 방법을 소개했습니다. 다음 명령의 실행을 지연시킵니다. 또는 이 트릭을 사용하여 알람 시계를 시뮬레이션할 수 있습니다. 그러면 다음 명령을 사용하여 5초 후 알람을 설정하세요.$ sleep 5; cvlc alarm.mp3위 명령은 5초를 기다린 후 VLC 미디어 플레이어를 사용하여 알람.mp3 파일을 엽니다. 다른 Linux 명령과 마찬가지로 VLC 미디어 플레이어는 Ctrl+C 키 조합을 사용하여 중지할 수 있습니다.
sleep 명령 사용 예
먼저 프로그램을 30초 동안 sleep시키세요
말 그대로 sleep 명령의 기능을 짐작하셨을 겁니다. 간단히 말해서, 수면은 프로그램이 잠시 휴식을 취한 후 계속 작업하도록 하는 것입니다(휴식은 더 잘 작동하기 위한 것입니다...). Shell 프로그램이 30초 동안 낮잠을 자도록 합니다.#睡眠30秒 [roc@roclinux ~]$ sleep 30s #让date命令来监督, 看看是不是真的睡了30秒 [roc@roclinux ~]$ date;sleep 30s; date Thu Feb 25 08:25:17 CST 2016 Thu Feb 25 08:25:47 CST 2016
개인화된 수면 시간
sleep 명령은 간단하지만 개인화하여 더욱 재미있게 만들 수 있습니다. 일반적으로 sleep 명령 다음에 오는 값은 시간을 나타내는 데 사용됩니다. 시간은 단위를 지정하지 않으면 기본 단위는 무엇입니까?[roc@roclinux ~]$ date; sleep 1; date Thu Feb 25 09:55:47 CST 2016 Thu Feb 25 09:55:48 CST 2016이 예에서 기본 단위는 초이며, 이는 단위 s를 지정하는 것과 동일한 효과를 갖습니다. 초가 있으면 분과 시간도 있어야 합니다. 그렇다면 이 단위는 수면에서 어떻게 표현되나요?
[roc@roclinux ~]$ date; sleep 1m; date Thu Feb 25 10:00:43 CST 2016 Thu Feb 25 10:01:43 CST 2016그런 다음 쉘 프로그램을 1시간 동안 대기시키려면 단위를 h로 변경하면 됩니다. 쉘 프로그램이 1분 40초 동안 휴면 상태가 되도록 하려면 어떻게 해야 할까요? 1분 = 60초, 1분 40초 = 100초, 컴퓨터를 직접 100초 동안 절전 모드로 전환할 수 있습니다.
[roc@roclinux ~]$ date; sleep 100; date Thu Feb 25 10:12:28 CST 2016 Thu Feb 25 10:14:08 CST 2016사실 수면은 생각보다 배려심이 깊습니다. 이렇게 직접 입력하시면 됩니다.
#注意: 分钟和秒之间一定要有空格哦 [roc@roclinux ~]$ date; sleep 1m 40s; date Thu Feb 25 10:17:04 CST 2016 Thu Feb 25 10:18:44 CST 2016
这种方法简单、直接,节省了我们不少的思考时间。
在 sleep 中最大的单位是 d(天),如果想表示更长的时间,比如周、月、年的话,那么你只能把它们转换成天来表示了。
# 这样, Shell程序乖乖地沉睡 "一周2小时5分4秒" [roc@roclinux ~]$ date; sleep 7d 2h 5m 4s; date Thu Feb 25 10:17:04 CST 2016 Thu Feb 25 10:18:44 CST 2016
毫秒级睡眠时间可不可以
sleep 命令的默认时间单位是秒,但对于高速运行的程序来说,“秒”还是显得太长了。那 sleep 能不能实现毫秒级的睡眠呢?答案是可以的,例如,我们让 Shell 程序睡眠 3 毫秒:
[roc@roclinux ~]$ time sleep 0.003 real 0m0.004s user 0m0.000s sys 0m0.001s
time 可以通过浮点数的方式实现毫秒级的睡眠,但这里有一点需要注意,即睡眠时间的精度。sleep 命令只能保证 10ms 级别的精度控制,对于小于 10ms 的睡眠时间是存在误差的。实际应用中,如果你对时间精度要求特别高的话,sleep 或许不是一个正确的选择,还是请考虑其他方法吧。
sleep 的过程中 CPU 是否被占用
默认情况下,sleep 的进程是不占用 CPU 时间的,我们可以通过实验来说明这个问题:
[roc@roclinux ~]$ \time sleep 1 0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2560maxresident)k 0inputs+0outputs (0major+200minor)pagefaults 0swaps
看到了吗?0.00user、0.00system、0%CPU 这三个输出项都表明 sleep 是不会耗费 CPU 的计算资源的。
注意:上面使用了\time命令,它指代的是 /usr/bin/time,而不是 Shell 内置的 time 命令。/usr/bin/time 命令可以显示更多的信息,而 Shell 内置的命令做不到这一点。
相关推荐:《Linux视频教程》
위 내용은 Linux가 지연 스레드를 잠자기 상태로 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!