Sleep in Mandarin

From LemonWiki共筆
Jump to navigation Jump to search

不同程式語言,如何隨機「暫停」數秒

🌐 Switch language: EN, 漢字


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 Os windows.png 上安裝 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]

替代命令:Icon_exclaim.gif 在執行了 TIMEOUT %timeout% 之後,以下命令 ECHO %date% %time% 將不會被執行。

批處理檔案:

SET /a timeout=%RANDOM% * 55 / 32767 + 5
TIMEOUT %timeout%

ECHO %date% %time%

BASH[edit]

方法 1:sleep[edit]

Linux Os linux.png macOS icon_os_mac.png 上測試[7][8]

# 列印當前日期與時間
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')

暫停幾 微秒[9]。在 Linux Os linux.png 上測試

# 列印當前 Unix 時間戳,例如 1598346362244
date +%s%N

# 暫停 1 毫秒 = 0.001 秒
sleep 0.001s

# 列印當前 Unix 時間戳
date +%s%N

macOS icon_os_mac.png 上測試暫停幾微秒

# 列印當前 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]

Linux Os linux.png macOS icon_os_mac.png 上測試

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 Os linux.png 上測試

# 列印當前日期、時間與奈秒
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]

Related[edit]