Sleep: Difference between revisions

From LemonWiki共筆
Jump to navigation Jump to search
Line 68: Line 68:
Tested on {{Linux}} & {{Mac}}<ref>[https://bash.cyberciti.biz/guide/Perform_arithmetic_operations Perform arithmetic operations - Linux Shell Scripting Tutorial - A Beginner's handbook]</ref>
Tested on {{Linux}} & {{Mac}}<ref>[https://bash.cyberciti.biz/guide/Perform_arithmetic_operations Perform arithmetic operations - Linux Shell Scripting Tutorial - A Beginner's handbook]</ref>


=== Approach1: sleep ===
<pre>
<pre>
# print current date & time
# print current date & time
Line 75: Line 76:
timeout=$(($RANDOM * 60 / 32768 + 5))
timeout=$(($RANDOM * 60 / 32768 + 5))
sleep $timeout
sleep $timeout
# print current date & time
echo $(date '+%Y-%m-%d %H:%M:%S')
</pre>
=== Approach2: ping ===
ping local address: {{kbd | key=<nowiki>-c <count></nowiki>}} "Stop after sending (and receiving) count ECHO_RESPONSE packets."<ref>[https://linux.die.net/man/8/ping ping(8) - Linux man page]</ref>
<pre>
# print current date & time
echo $(date '+%Y-%m-%d %H:%M:%S')
# sleep 5 ~ 65 seconds
timeout=$(($RANDOM * 60 / 32768 + 5))
ping 127.0.0.1 -c $timeout > nul


# print current date & time
# print current date & time

Revision as of 10:47, 4 November 2018

Sleep random seconds in programming

MS-DOS

Approach 1: %RANDOM% + ping local

batch file - .bat random timeout - Stack Overflow

  • %RANDOM% returns an integer between 0 and 32767.
  • 60 is the range of values you want: 0 to 60.
  • 32768 is the range of values returned by %RANDOM% (0 to 32767).
  • 5 is the minimum value you want. The original range of values you want '0 to 60' became '5 ~ 65'.
  • ping local address: /n <Count> "Specifies the number of echo Request messages sent. The default is 4."[1][2]

BAT file:

REM print current date & time
ECHO %date% %time%

REM sleep 5 ~ 65 seconds
SET /a timeout=%RANDOM% * 60 / 32768 + 5
ping 127.0.0.1 -n %timeout% > nul

REM print current date & time
ECHO %date% %time%

Approach 2: sleep package of CygWin

Requirement: Install Cygwin on Win Os windows.png & install sleep package

Verify the installation of sleep package[3][4]

  1. Key-in cmd to open command prompt (How to Open Command Prompt (Windows 10, 8, 7, Vista, XP))
  2. Key-in one of following command
    • Key-in where sleep if you add installation path of CygWin to system path (How to setup my system path). Or
    • Key-in dir C:\cygwin64\bin\sleep.exe if the installation path of CygWin is C:\cygwin64\.
C:\Users\user>dir C:\cygwin64\bin\sleep.exe

# successful condition
C:\cygwin64\bin\sleep.exe

# failed condition
File Not Found

BAT file:

REM print current date & time
ECHO %date% %time%

REM sleep 5 ~ 65 seconds
SET /a timeout=%RANDOM% * 60 / 32768 + 5
C:\cygwin64\bin\sleep.exe %timeout%

REM print current date & time
ECHO %date% %time%

Approach 3: TIMEOUT

Alternative command: Icon_exclaim.gif The following command ECHO %date% %time% will not be executed after TIMEOUT %timeout% was executed.

BAT file:

SET /a timeout=%RANDOM% * 60 / 32768 + 5
TIMEOUT %timeout%

ECHO %date% %time%

BASH

Tested on Linux Os linux.png & Mac icon_os_mac.png [5]

Approach1: sleep

# print current date & time
echo $(date '+%Y-%m-%d %H:%M:%S')

# sleep 5 ~ 65 seconds
timeout=$(($RANDOM * 60 / 32768 + 5))
sleep $timeout

# print current date & time
echo $(date '+%Y-%m-%d %H:%M:%S')

Approach2: ping

ping local address: -c <count> "Stop after sending (and receiving) count ECHO_RESPONSE packets."[6]

# print current date & time
echo $(date '+%Y-%m-%d %H:%M:%S')

# sleep 5 ~ 65 seconds
timeout=$(($RANDOM * 60 / 32768 + 5))
ping 127.0.0.1 -c $timeout > nul

# print current date & time
echo $(date '+%Y-%m-%d %H:%M:%S')

PHP

References

Related