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@VM-15-9-centos ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
8、timeout命令运行一分钟,如果命令没有结束,将在10秒后终止命令
[root@RedHat_test ~]# timeout -k 10s 1m sh test.sh
9、timeout在后台托管
[root@RedHat_test ~]# timeout --foreground 5m ./script.sh
echo "exit"|timeout --signal=9 2 telnet www.gl.sh.cn 443 2>/dev/null|grep Connected