Linux命令——timeout

Linux命令——timeout
命令简介

运行指定的命令,如果在指定时间后仍在运行,则杀死该进程。用来控制程序运行的时间。

使用方法

timeout [选项] 数字[后缀] 命令 [参数]...1

后缀”s”代表秒(默认值),”m”代表分,”h”代表小时,”d”代表天。

选项详解

长选项必须使用的参数对于短选项时也是必需使用的。
-s, --signal=信号
指定在超时时发送的信号。信号可以是类似"HUP"的信号名或是信号数。
查看"kill -l"以获得信号列表

--help 显示此帮助信息并退出
--version 显示版本信息并退出

如果程序超时则退出状态数为124,否则返回程序退出状态。

echo $? 
#失败时返回124

如果没有指定信号则默认为TERM 信号。TERM 信号在进程没有捕获此信号时杀死进程。
对于另一些进程可能需要使用KILL (9)信号,当然此信号不能被捕获。12345678910

示例

commond 不需要加引号,否则会报错

很有效的解决开机脚本等待时间过长问题

#命令中用法
##command命令在10秒内结束,则结束,超过10秒,将被强行kill
timeout 10 command1
timeout 5 mount -t nfs nfs01:/nfsdata/blog /usr/local/nginx/html/blog/wp-content/
#默认是秒  也可是 5m 5h  代表5分钟 5小时
#脚本中用法
inotifywait -mrq --timefmt '%Y/%m/%d %H:%M ' --format '%T%w%f' -e create,delete,modify,close_write $Path/ \
|while read line
    do
        cd /server
        timeout 5
        rsync -avz $Path/  rsync_backup@$Ip::server  --password-file=/etc/rsync.pp

        done    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 中,select 函数可以用于监视多个文件描述符的状态变化,从而实现 IO 多路复用。如果你想在 select 函数中设置一个超时时间,可以在 timeout 参数中指定一个非零值。timeout 参数的类型是 struct timeval,它包含两个字段:tv_sec 和 tv_usec,分别表示超时的秒数和微秒数。 下面是一个使用 select 函数并设置超时时间的例子: ```c #include <sys/select.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { fd_set readfds; FD_ZERO(&readfds); FD_SET(STDIN_FILENO, &readfds); struct timeval timeout; timeout.tv_sec = 5; timeout.tv_usec = 0; int ret = select(STDIN_FILENO + 1, &readfds, NULL, NULL, &timeout); if (ret == -1) { perror("select error"); exit(EXIT_FAILURE); } else if (ret == 0) { printf("select timeout\n"); } else { if (FD_ISSET(STDIN_FILENO, &readfds)) { printf("data is available now.\n"); } } return 0; } ``` 在上面的例子中,我们使用 FD_ZERO 宏和 FD_SET 宏来初始化和设置文件描述符集合 readfds。然后,我们设置一个超时时间为 5 秒,调用 select 函数来等待标准输入文件描述符的可读事件。如果在超时时间内没有事件发生,select 函数将返回 0,程序输出 "select timeout"。如果标准输入文件描述符变为可读状态,select 函数将返回 1,程序输出 "data is available now."。 注意,select 函数的 timeout 参数是可选的,如果你不想设置超时时间,可以将 timeout 参数设置为 NULL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值