成功最有效的方法就是向有经验的人学习!

运行有时间限制的命令—timeout命令

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
赞(2) 打赏
未经允许不得转载:陈桂林博客 » 运行有时间限制的命令—timeout命令
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册