ShellTimeout是一個用於在命令行執行超時命令的簡單腳本。我們將從基礎介紹開始,然後深入實戰,以幫助您了解如何在自己的項目中使用它。
一、ShellTimeout基礎介紹
ShellTimeout的基本工作原理是啟動一個超時守護進程,以監視從標準輸入中讀取的命令。如果超時時間已過,則它強制終止該命令。
以下是一個簡單的ShellTimeout命令:
timeout 5s cmd
它將執行命令”cmd”,並在5秒後超時。如果命令在超時時間之前完成,則不會執行超時邏輯。
ShellTimeout支持各種時間格式,如「5s」、「1h30m」等等。
二、ShellTimeout配置
ShellTimeout的默認行為可能不適合您的項目需求。因此,您可以使用命令行參數和環境變數進行配置。
以下是一些常見的ShellTimeout配置示例:
1.指定超時時間
timeout 10s cmd
這將在10秒之後超時。
2.指定不同的信號
timeout -s SIGNAL_NAME 5s cmd
可以更改默認的終止信號。
3.指定超時後執行的命令
timeout --foreground 5s cmd || echo "Command timed out."
您可以在超時後執行任意命令。
4.強制關閉進程
timeout --kill-after 30s 5s cmd
在超時之後,您可以選擇強制終止進程。
5.使用環境變數
export TIMEOUT=10s timeout $TIMEOUT cmd
您可以使用環境變數為項目中所有命令提供默認超時值。
三、ShellTimeout實戰應用
ShellTimeout可以在各種場景中使用,這裡僅列出一些示例。
1.運行Shell腳本
#!/bin/bash timeout 10s ./script.sh
如果腳本超過10秒鐘運行,則超時並退出。
2.超時複雜命令
timeout 5s sh -c 'COMMAND1 | COMMAND2'
如果命令1和命令2在5秒後仍在運行,則超時並退出。
3.增加超時保護
function run_with_timeout() { NAME="$1"; TIMEOUT="$2"; shift && shift; timeout --foreground $TIMEOUT "$@" || \ echo "$NAME timed out after $TIMEOUT"; } run_with_timeout "my command" 10s my_command arg1 arg2 ...
運行任何命令,並在特定時間範圍內強制中止它們,同時提供自定義消息。
四、結束語
ShellTimeout是一個相對較小的腳本,但在許多項目中都非常有用。希望本文能對您在將來的命令行項目開發中有所幫助!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/258125.html