标签: timeout

curl 有超时吗?

到目前为止,我真的找不到任何东西,但是真的curl没有真正超时吗?

 user@host:~# curl http://localhost/testdir/image.jpg
Run Code Online (Sandbox Code Playgroud)

我之所以这么问是因为我testdir将对图像的任何请求重定向到一个单独的 Apache 模块,该模块会动态生成这些图片。图片可能需要长达 15 分钟才能真正准备好并交付给提出请求的客户。

curl一直等待(或者它取决于配置)还是有任何超时?

timeout curl

333
推荐指数
3
解决办法
56万
查看次数

在 shell 脚本中超时

我有一个shell脚本,多数民众赞成从标准输入读取。在极少数情况下,没有人准备好提供输入,脚本必须超时。在超时的情况下,脚本必须执行一些清理代码。这样做的最佳方法是什么?

这个脚本必须非常便携,包括到 20 世纪没有 C 编译器的 unix 系统和运行 busybox 的嵌入式设备,所以不能依赖 Perl、bash、任何编译语言,甚至完整的 POSIX.2。特别是$PPIDread -t完全符合POSIX标准的和陷阱不可用。写入临时文件也不包括在内;即使所有文件系统都以只读方式安装,脚本也可能运行。

只是为了让事情变得更困难,我还希望脚本在没有超时时能够相当。特别是我也在Windows(主要是Cygwin)中使用了脚本,其中fork和exec特别低,所以我想尽量减少它们的使用。

简而言之,我有

trap cleanup 1 2 3 15
foo=`cat`
Run Code Online (Sandbox Code Playgroud)

我想添加一个超时。我不能catread内置替换。在超时的情况下,我想执行该cleanup功能。


背景:该脚本通过打印一些 8 位字符并比较前后光标位置来猜测终端的编码。脚本的开头测试 stdout 连接到支持的终端,但有时环境是谎言(例如,即使使用 调用它也会plink设置TERM=xtermTERM=dumb)。脚本的相关部分如下所示:

text='Éé'  # UTF-8; shows up as Ãé on a latin1 terminal
csi='?['; dsr_cpr="${csi}6n"; dsr_ok="${csi}5n"  # ? is an escape character
stty_save=`stty -g`
cleanup () { …
Run Code Online (Sandbox Code Playgroud)

shell signals timeout

56
推荐指数
3
解决办法
2万
查看次数

运行指定时间的命令,如果时间超过则中止

我想知道如何在指定的时间内运行命令,比如一分钟,如果它没有完成执行,那么我应该能够停止它。

linux timeout time

55
推荐指数
1
解决办法
2万
查看次数

如何为 shell 脚本引入超时?

我想运行一个包含循环的 shell 脚本,它可以永远运行,而我不想发生这种情况。所以我需要为整个脚本引入一个超时时间。

如何在 SuSE 下为整个 shell 脚本引入超时?

shell-script timeout

41
推荐指数
3
解决办法
12万
查看次数

使用 curl 设置网页响应超时

我使用一个工具来监控网页是否已启动并正在运行。

该工具在curl内部使用命令来获取输出。

然而,当一个网页需要更长的时间来响应时,它会返回一个TIMEOUT错误。我无法增加工具的超时时间。

有没有办法设置/修改网页响应的超时时间?

有没有可以修改的变量?

timeout curl

24
推荐指数
2
解决办法
8万
查看次数

ping -w 和 ping -W 有什么区别?

什么是-w(截止日期)标志ping?我在ping手册页中找不到它的描述;only for -W,它以秒为参数。它们之间有什么区别,如何将 ping 超时(如果主机没有响应)设置为 200 毫秒?

shell ping timeout

21
推荐指数
2
解决办法
4万
查看次数

如何使 TCP 套接字超时

对于我们服务器环境的网络灾难模拟,我们正在寻找一种有意使 TCP 套接字超时的方法。现有的套接字有什么简单的方法吗?此外,小的 C 测试用例程序将是一个加分项。

我们已经尝试在 TCP 缓冲区读取期间关闭网络接口,并从断开连接的挂载资源 (samba) 中读取。

出测试服务器是 Ubuntu 12.04.4。

timeout socket

21
推荐指数
2
解决办法
7万
查看次数

超时,打破管道和厕所

我有一个想法来快速对一些解压程序进行基准测试。例如,对于 gz,我会运行以下命令:

timeout 10 zcat foo.gz | wc -c
Run Code Online (Sandbox Code Playgroud)

这将测量解压缩器在 10 秒内可以提取的数据量。

唯一的问题是,它不起作用:因为 zcat 被杀死,wc 也被杀死,所以我没有得到字节数,只是一条Terminated消息。

所以,问题是:有没有办法从 wc 获取计数,或者通过以某种方式阻塞信号,或者使用替代方法而不是 wc 来打印结果,即使它得到一个 term 信号。


当然,还有其他选择:

  1. 写入临时文件:
    timeout 10 zcat foo.gz > /dev/shm/x ; du -sb /dev/shm/x ; rm -r /dev/shm/x 这样做的问题是使用了大量内存,并且可能会有一些性能损失。

  2. 使用 ulimit 代替:
    ulimit -t 10; zcat foo.gz | wc -c
    这也有效,但仅测量 CPU 时间,因此不会测量由于 I/O 导致的减速(例如,因为压缩更糟,需要从磁盘读取更多字节)。

  3. 制作较小的测试文件:
    嗯,这当然可以工作,并且可能是最好的解决方案。但是,这会创建大量临时文件。

pipe timeout

20
推荐指数
1
解决办法
1389
查看次数

GNU 超时的 POSIX 等价物?

GNU 核心工具 timeout命令对于某些脚本情况非常方便,如果运行速度很快,则允许使用命令的输出,如果运行时间过长,则可以跳过它。

如何近似timeout仅使用 POSIX 指定实用程序的基本行为?


(我认为它可能涉及,和的组合wait,谁知道还有什么,但也许我错过了一种更简单的方法。)sleepkill

shell-script posix timeout

19
推荐指数
1
解决办法
2172
查看次数

如何在新的 tmux 会话中执行代码 - 从当前会话中?

我使用 Ubuntu 16.04,我需要以下tmux解决方案,因为我想运行超时过程,sleep因为在我的特定情况下,我不满意at并遇到了错误nohup(组合时nohup-sleep)。现在,它tmux似乎是最好的选择,因为它有自己的无挂断机制,并且在手动使用中实际上工作正常(我只问关于自动化我已经可以手动使用它的过程的问题)。

我需要的:

我需要一种方法来执行以下 3 个操作,全部在一个操作中:

  1. 附加一个新tmux会话。
  2. 向该会话注入一组现成的命令,例如(sleep 30m ; rm -rf dir_name ; exit). 我特别喜欢多行设置,而不是一排长排。
  3. 执行上面的命令设置完成的那一刻在新tmux会话中写入为标准输入。

换句话说,我想在另一个tmux专门为该原因创建的会话中执行代码集,但要在一个操作中完成所有操作。


笔记:

  • 我的目标是在我最初的工作会议(我大部分时间工作的那个会议)中完成所有工作。通常,我无意访问新创建的会话,我只想使用其自动执行的代码创建它,仅此而已。

  • 如果可能,我更喜欢 heredoc 解决方案。我认为这是最有效的。

tmux timeout here-document

19
推荐指数
1
解决办法
4万
查看次数

标签 统计

timeout ×10

curl ×2

shell ×2

shell-script ×2

here-document ×1

linux ×1

ping ×1

pipe ×1

posix ×1

signals ×1

socket ×1

time ×1

tmux ×1