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

如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。