Linux運行有時間限制的命令—timeout命令

  • 2020 年 2 月 25 日
  • 筆記

1、簡介

timeout是用來控制程式運行的時間,運行指定的命令。如果在指定時間後仍在運行,則殺死該進程。使用timeout命令可以讓程式在指定的時間內仍然運行則強制退出。

2、timeout命令常用格式

 [root@RedHat_test ~]# timeout [OPTION] DURATION COMMAND [ARG]...   s : 秒 (默認)   m : 分鐘   h : 小時   d : 天   長選項必須使用的參數對於短選項時也是必需使用的。   -s : --signal=訊號,指定在超時時發送的訊號。訊號可以是類似"HUP"的訊號名或是訊號數。,查看"kill -l"以獲得訊號列表   --help        顯示此幫助資訊並退出   --version        顯示版本資訊並退出   # 如果不添加任何單位,默認是秒。如果DURATION為0,則關聯的超時是禁用的。   # 如果程式超時則退出狀態數為124,否則返回程式退出狀態。   # 如果沒有指定訊號則默認為TERM 訊號。TERM 訊號在進程沒有捕獲此訊號時殺死進程。   # 對於另一些進程可能需要使用KILL (9)訊號,當然此訊號不能被捕獲。

3、10秒後結束,top命令

 [root@RedHat_test ~]# timeout 10 top

4、5分鐘之後終止ping操作

 [root@RedHat_test ~]# timeout 5m ping www.baidu.com

5、1天之後終止ping操作

 [root@RedHat_test ~]# timeout 1d ping www.baidu.com

6、發送SIGKILL訊號給ping命令,5秒鐘後終止

 [root@RedHat_test ~]# timeout -s SIGKILL 5s ping www.baidu.com   PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.   64bytes from 180.101.49.12 (180.101.49.12): icmp_seq=1ttl=49time=4.03 ms   64bytes from 180.101.49.12 (180.101.49.12): icmp_seq=2ttl=49time=4.60 ms   64bytes from 180.101.49.12 (180.101.49.12): icmp_seq=3ttl=49time=4.30 ms   64bytes from 180.101.49.12 (180.101.49.12): icmp_seq=4ttl=49time=4.40 ms

7、查看全部訊號

 [root@RedHat_test ~]# kill -l   1) SIGHUP2) SIGINT3) SIGQUIT4) SIGILL5) SIGTRAP   6) SIGABRT7) SIGBUS8) SIGFPE9) SIGKILL10) SIGUSR1   11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM   16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP   21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ   26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR   31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3   38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8   43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13   48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12   53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7   58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2   63) SIGRTMAX-164) SIGRTMAX

8、timeout命令運行一分鐘,如果命令沒有結束,將在10秒後終止命令

 [root@RedHat_test ~]# timeout -k 10s 1m sh test.sh

9、timeout在後台託管

 [root@RedHat_test ~]# timeout --foreground 5m ./script.sh

如果文章有任何錯誤歡迎不吝賜教,其次大家有任何關於運維的疑難雜問,也歡迎和大家一起交流討論。