>  기사  >  운영 및 유지보수  >  Linux가 지연 스레드를 잠자기 상태로 만들 수 있습니까?

Linux가 지연 스레드를 잠자기 상태로 만들 수 있습니까?

青灯夜游
青灯夜游원래의
2023-03-16 11:02:242309검색

수면이 늦어질 수 있습니다. Linux sleep 명령을 사용하면 일정 시간 동안 현재 작업을 지연할 수 있습니다. 구문은 "sleep [--help] [--version] number[smhd]"이며 기본적으로 sleep 명령은 몇 시간 동안 지연됩니다. 초이지만 접미사를 사용하여 시간을 지정할 수 있습니다. 단위는 초, 분, 시간 또는 일 단위로 지연을 지정합니다.

Linux가 지연 스레드를 잠자기 상태로 만들 수 있습니까?

이 튜토리얼의 운영 환경: 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'

이 예에서는 세미콜론(;)을 사용하여 각 명령을 구분해야 합니다.

Linux가 지연 스레드를 잠자기 상태로 만들 수 있습니까?

2. N분 동안 기다리는 명령을 실행합니다.

일반적으로 sleep 명령에서는 접미사를 사용하여 시간 단위를 지정할 수 있습니다. 이는 다음 접미사를 사용하여 sleep 명령에서 표현할 수 있습니다.

  • s – 초 단위의 시간 단위를 지정합니다.

  • m – 시간 단위를 분 단위로 지정합니다.

  • h – 시간 단위를 시간 단위로 지정합니다.

  • d – 시간 단위를 일 단위로 지정합니다.

여기에서는 'm' 접미사를 사용하여 1분 동안 절전 모드로 전환합니다.

$ 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를 지정하는 것과 동일한 효과를 갖습니다.

초가 있으면 분과 시간도 있어야 합니다. 그렇다면 이 단위는 수면에서 어떻게 표현되나요?

  • s: 초를 나타냅니다.

  • m: 분을 나타냅니다.

  • h: 시간을 나타냅니다.

  • d: 일을 나타냅니다.

예를 들어, Shell 프로그램을 1시간 동안 잠자기 분 , 모직물은 어떻게 해야 하나요?

[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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.