Sleep in Mandarin
Jump to navigation
Jump to search
不同程式語言,如何隨機「暫停」數秒
Windows 下的 MS-DOS[edit]
方法 1:使用 %RANDOM% 加上 ping 本地[edit]
目的
- 在 5 到 60 秒之間隨機暫停
批處理檔案:
REM 列印當前日期與時間 ECHO %date% %time% REM 暫停 5 到 60 秒 SET /a timeout=%RANDOM% * 55 / 32767 + 5 ping 127.0.0.1 -n %timeout% > nul REM 列印當前日期與時間 ECHO %date% %time%
說明[1]
- %RANDOM% 會返回一個介於 0 和 32767 之間的整數[2]。
- 55 是你想要的範圍:5 到 60。
- 32767 是由 %RANDOM% 返回的數值範圍(0 到 32767)。
- 5 是你想要的最小值。原始數值範圍是「0 到 55」。加上 5 之後範圍變成了「5 到 60」。
- ping 本地地址:/n <Count> "指定發送的回聲請求消息數量。預設值是 4。"[3][4]
方法 2:使用 CygWin 的 sleep 套件[edit]
要求:在 Win 上安裝 Cygwin 並安裝 sleep 套件(如何安裝:設定 Cygwin/X)
驗證 sleep 套件的安裝[5][6] 1. 輸入 cmd 打開命令提示符(如何打開命令提示符(Windows 10、8、7、Vista、XP))
2. 輸入以下其中一個命令
- 如果你將 CygWin 的安裝路徑添加到系統路徑,輸入 where sleep( 如何設置我的系統路徑)。或
- 如果 CygWin 的安裝路徑是 C:\cygwin64\,輸入 dir C:\cygwin64\bin\sleep.exe。
C:\Users\user>dir C:\cygwin64\bin\sleep.exe # 成功條件 C:\cygwin64\bin\sleep.exe # 失敗條件 檔案未找到
批處理
檔案:
REM 列印當前日期與時間 ECHO %date% %time% REM 暫停 5 到 60 秒 SET /a timeout=%RANDOM% * 55 / 32767 + 5 C:\cygwin64\bin\sleep.exe %timeout% REM 列印當前日期與時間 ECHO %date% %time%
方法 3:TIMEOUT[edit]
替代命令: 在執行了 TIMEOUT %timeout% 之後,以下命令 ECHO %date% %time% 將不會被執行。
批處理檔案:
SET /a timeout=%RANDOM% * 55 / 32767 + 5 TIMEOUT %timeout% ECHO %date% %time%
BASH[edit]
方法 1:sleep[edit]
# 列印當前日期與時間 echo $(date '+%Y-%m-%d %H:%M:%S') # 暫停 5 到 65 秒 timeout=$(($RANDOM * 60 / 32768 + 5)) sleep $timeout # 列印當前日期與時間 echo $(date '+%Y-%m-%d %H:%M:%S')
# 列印當前 Unix 時間戳,例如 1598346362244 date +%s%N # 暫停 1 毫秒 = 0.001 秒 sleep 0.001s # 列印當前 Unix 時間戳 date +%s%N
在 macOS 上測試暫停幾微秒
# 列印當前 Unix 時間戳,例如 1598346362244 php -r 'echo microtime(TRUE) . PHP_EOL;' # 暫停 1 毫秒 = 0.001 秒 sleep 0.001s # 列印當前 Unix 時間戳 php -r 'echo microtime(TRUE) . PHP_EOL;'
暫停幾毫秒(1 秒 = 1000 毫秒)例如 1671090194.136471987[10]
# 列印當前 Unix 時間戳(毫秒),例如 1671090194.136471987 perl -MTime::HiRes=time -e 'printf "%.9f\n", time' # 暫停 1 毫秒 = 0.001 秒 sleep 0.001s # 列印當前 Unix 時間戳 perl -MTime::HiRes=time -e 'printf "%.9f\n", time'
方法 2:ping[edit]
ping 本地地址:-c <Count> "在發送(並接收)數量 count 的 ECHO_RESPONSE 封包後停止。"[11]
# 列印當前日期與時間 echo $(date '+%Y-%m-%d %H:%M:%S') # 暫停 5 ~ 65 秒 timeout=$(($RANDOM * 60 / 32768 + 5)) ping 127.0.0.1 -c $timeout > nul # 列印當前日期與時間 echo $(date '+%Y-%m-%d %H:%M:%S')
方法 3:usleep[edit]
usleep(3) - Linux 手冊頁面 "在微秒間隔內暫停執行"(1 秒 = 1,000,000 微秒)。在 Linux 上測試
# 列印當前日期、時間與奈秒 echo $(date '+%Y-%m-%d %H:%M:%S')$(date '+.%N') # 暫停 0.2 ~ 1.2 秒 timeout=$(($RANDOM * 1000000 / 32768 + 200000)) echo $timeout usleep $timeout # 列印當前日期、時間與奈秒 echo $(date '+%Y-%m-%d %H:%M:%S')$(date '+.%N')
BASH 範例:下載檔案並在 1 ~ 7 秒之間隨機暫停[edit]
以下腳本檢查特定檔案是否存在於指定路徑中。如果檔案不存在,則從提供的 URL 下載檔案,然後在 1 到 7 秒之間隨機暫停。如果檔案已存在,則僅列印一條消息,表示找到了檔案並跳過了下載。
if [ ! -f /path/to/paper.pdf ] then curl "https://website/to/pdf" -L -o /path/to/paper.pdf sleep $((1 + RANDOM % 7)) else echo "檔案已找到。跳過下載。" fi
相同的命令可以寫成一行:
if [ ! -f /path/to/paper.pdf ]; then curl "https://website/to/pdf" -L -o /path/to/paper.pdf; sleep $((1 + RANDOM % 7)); else echo "檔案已找到。跳過下載。"; fi
References
PHP[edit]
JavaScript[edit]
References[edit]
- ↑ 批處理檔案 - .bat 隨機暫停時間 - Stack Overflow
- ↑ 隨機數字 - Windows 命令 - SS64.com
- ↑ 時間
- ↑ windows xp - 如何在批處理腳本中等待? - Stack Overflow
- ↑ 如何從命令行安裝 cygwin 組件? - Stack Overflow
- ↑ SLEEP 手冊頁面在 Cygwin 上
- ↑ 執行算術運算 - Linux Shell 腳本編寫教學 - 初學者手冊
- ↑ Linux Sleep 命令(暫停 Bash 腳本) | Linuxize
- ↑ 如何在 Bash 中獲取當前 Unix 時間(毫秒)? - Server Fault
- ↑ macos - 自紀元以來的時間(毫秒) - 在終端 - Ask Different
- ↑ ping(8) - Linux 手冊頁面