Sleep: Difference between revisions
Jump to navigation
Jump to search
(→BASH) |
|||
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 & install sleep package
Verify the installation of sleep package[3][4]
- Key-in cmd to open command prompt (How to Open Command Prompt (Windows 10, 8, 7, Vista, XP))
- 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: 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 & Mac [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')