timeout是用来控制程序运行的时间,运行指定的命令。如果在指定时间后仍在运行,则杀死该进程。使用timeout命令可以让程序在指定的时间内仍然运行则强制退出。
语法格式:
timeout[OPTION]DURATIONCOMMAND[ARG]...
DURATION可以是正整数或浮点数,后跟可选的后缀:
如果不添加任何单位,默认是秒。如果DURATION为0,则关联的超时是禁用的。
5秒后终止ping操作:
[root@localhost~]PINGwww.a.shifen.com(61.135.169.125)56(84)bytesofdata.64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=1ttl=55time=16.3ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=2ttl=55time=16.0ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=3ttl=55time=16.7ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=4ttl=55time=16.0ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=5ttl=55time=17.6ms
5分钟之后终止ping操作:
[root@localhost~]
1天之后终止ping操作:
[root@localhost~]
2.5秒之后终止ping操作:
[root@localhost~]PINGwww.a.shifen.com(61.135.169.121)56(84)bytesofdata.64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=1ttl=55time=14.9ms64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=2ttl=55time=15.6ms64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=3ttl=55time=15.6ms
如果未给出任何信号,则当达到时间限制时,timeout将SIGTERM信号发送到受管命令。可以使用-s(-signal)选项指定要发送的信号。
发送SIGKILL信号给ping命令,5秒钟后终止:
[root@localhost~]PINGwww.a.shifen.com(61.135.169.125)56(84)bytesofdata.64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=1ttl=55time=17.2ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=2ttl=55time=16.6ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=3ttl=55time=16.7ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=4ttl=55time=16.2ms64bytesfrom61.135.169.125(61.135.169.125):icmp_seq=5ttl=55time=16.7msKilled
信号可以指定他的名字也可以指定他序号。下面使用的事SIGKILL的序号,5秒钟后终止操作:
[root@localhost~]PINGwww.a.shifen.com(61.135.169.121)56(84)bytesofdata.64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=1ttl=55time=15.5ms64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=2ttl=55time=16.3ms64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=3ttl=55time=14.9ms64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=4ttl=55time=16.0ms64bytesfrom61.135.169.121(61.135.169.121):icmp_seq=5ttl=55time=22.0msKilled
想要知道全部可用的信号,请使用 kill -l该命令查看全部的信号。
[root@localhost~]1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR31)SIGSYS34)SIGRTMIN35)SIGRTMIN+136)SIGRTMIN+237)SIGRTMIN+338)SIGRTMIN+439)SIGRTMIN+540)SIGRTMIN+641)SIGRTMIN+742)SIGRTMIN+843)SIGRTMIN+944)SIGRTMIN+1045)SIGRTMIN+1146)SIGRTMIN+1247)SIGRTMIN+1348)SIGRTMIN+1449)SIGRTMIN+1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-1253)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-758)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-263)SIGRTMAX-164)SIGRTMAX[root@localhost~]
SIGTERM,当超过时间限制时发送的默认信号可以被某些进程捕获或忽略。在这种情况下,进程在发送终止信号后继续运行。
要确保被执行的的命令终止,请使用-k(–kill after)选项,后面加一个时间。当达到给定的时间限制后会强制结束。
在下面的示例中,timeout命令运行一分钟,如果命令没有结束,将在10秒后终止命令:
[root@localhost~]
默认情况下,timeout在后台运行托管命令。如果要在前台运行该命令,请使用–foreground选项:
[root@localhost~]
安装linux后的启动菜单?~~
启动进Linux系统vi /boot/编辑如下内容:timeout 180 这个是选项的超时,在这个时间段里可以自由选择,过了时间启动默认的OS,180秒default 0默认启动的OS,0代表第1个title,之后的类推#每个机器不一样,这里显示是不同的,不用改title windows这是第1个OS rootnoverify (hd0,0) chainloader +1title linux 这是第2个OSroot (hd2,0) kernel /5PAE ro root=LABEL=/ rhgb quietinitrd /
如何配置grub?
修改/boot/grub/文件。 其中“default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第一项,1表示第二项,依此类推。 “timeout=x”(x是一个数)是超时时间,单位是妙。 也就是引导菜单显示后,如果x秒内用户不进行选择,那么grub将启动默认项。 “splashimage =”,这是引导菜单的背景图,先不理他。 其它常用项我用下面的例子来说明:title Red Hat 8.0root (hd1,6)kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7initrd /boot/其中Red Hat 8.0是在启动菜单列表里显示的名字root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分boot分区),那就指向根分区就行了,hdx是linux所在硬盘,hd0是第一块硬盘,hd1是第二块,依此类推。 y是分区位置,从0开始,也就是等于分区号减一,比如你要指向的分区是hdx7,那么y就是6,如果是hdx1,那y就是0。 注意root后面要有一个空格。 kernel /boot/vmlinuz-2.4.18-14,其中/boot/vmlinuz-2.4.18-14是你要用的内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。 ro就不用管,写上不会有错。 root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7上面是linux的,下面是windows的title windows 98rootnoverify (hd0,0)chainloader +1title 不用解释了,上面有解释。 rootnoverify (hdx,y)用来指定windows所在分区,x,y跟上面一样,注意rootnoverify后有空格。 chainloader +1照抄就行,注意空格。
select和epoll的区别
下面是select的函数接口: int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); select 函数监视的文件描述符分3类,分别是writefds、readfds、和exceptfds。调用后select函数会阻塞,直到有
发表评论