到目前为止,我真的找不到任何东西,但是真的curl没有真正超时吗?
user@host:~# curl http://localhost/testdir/image.jpg
Run Code Online (Sandbox Code Playgroud)
我之所以这么问是因为我testdir将对图像的任何请求重定向到一个单独的 Apache 模块,该模块会动态生成这些图片。图片可能需要长达 15 分钟才能真正准备好并交付给提出请求的客户。
会curl一直等待(或者它取决于配置)还是有任何超时?
我有一个shell脚本,多数民众赞成从标准输入读取。在极少数情况下,没有人准备好提供输入,脚本必须超时。在超时的情况下,脚本必须执行一些清理代码。这样做的最佳方法是什么?
这个脚本必须非常便携,包括到 20 世纪没有 C 编译器的 unix 系统和运行 busybox 的嵌入式设备,所以不能依赖 Perl、bash、任何编译语言,甚至完整的 POSIX.2。特别是$PPID,read -t完全符合POSIX标准的和陷阱不可用。写入临时文件也不包括在内;即使所有文件系统都以只读方式安装,脚本也可能运行。
只是为了让事情变得更困难,我还希望脚本在没有超时时能够相当快。特别是我也在Windows(主要是Cygwin)中使用了脚本,其中fork和exec特别低,所以我想尽量减少它们的使用。
简而言之,我有
trap cleanup 1 2 3 15
foo=`cat`
Run Code Online (Sandbox Code Playgroud)
我想添加一个超时。我不能cat用read内置替换。在超时的情况下,我想执行该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 脚本,它可以永远运行,而我不想发生这种情况。所以我需要为整个脚本引入一个超时时间。
如何在 SuSE 下为整个 shell 脚本引入超时?
我使用一个工具来监控网页是否已启动并正在运行。
该工具在curl内部使用命令来获取输出。
然而,当一个网页需要更长的时间来响应时,它会返回一个TIMEOUT错误。我无法增加工具的超时时间。
有没有办法设置/修改网页响应的超时时间?
有没有可以修改的变量?
什么是-w(截止日期)标志ping?我在ping手册页中找不到它的描述;only for -W,它以秒为参数。它们之间有什么区别,如何将 ping 超时(如果主机没有响应)设置为 200 毫秒?
对于我们服务器环境的网络灾难模拟,我们正在寻找一种有意使 TCP 套接字超时的方法。现有的套接字有什么简单的方法吗?此外,小的 C 测试用例程序将是一个加分项。
我们已经尝试在 TCP 缓冲区读取期间关闭网络接口,并从断开连接的挂载资源 (samba) 中读取。
出测试服务器是 Ubuntu 12.04.4。
我有一个想法来快速对一些解压程序进行基准测试。例如,对于 gz,我会运行以下命令:
timeout 10 zcat foo.gz | wc -c
Run Code Online (Sandbox Code Playgroud)
这将测量解压缩器在 10 秒内可以提取的数据量。
唯一的问题是,它不起作用:因为 zcat 被杀死,wc 也被杀死,所以我没有得到字节数,只是一条Terminated消息。
所以,问题是:有没有办法从 wc 获取计数,或者通过以某种方式阻塞信号,或者使用替代方法而不是 wc 来打印结果,即使它得到一个 term 信号。
当然,还有其他选择:
写入临时文件:
timeout 10 zcat foo.gz > /dev/shm/x ; du -sb /dev/shm/x ; rm -r /dev/shm/x
这样做的问题是使用了大量内存,并且可能会有一些性能损失。
使用 ulimit 代替:
ulimit -t 10; zcat foo.gz | wc -c
这也有效,但仅测量 CPU 时间,因此不会测量由于 I/O 导致的减速(例如,因为压缩更糟,需要从磁盘读取更多字节)。
制作较小的测试文件:
嗯,这当然可以工作,并且可能是最好的解决方案。但是,这会创建大量临时文件。
GNU 核心工具 timeout命令对于某些脚本情况非常方便,如果运行速度很快,则允许使用命令的输出,如果运行时间过长,则可以跳过它。
如何近似timeout仅使用 POSIX 指定实用程序的基本行为?
(我认为它可能涉及,和的组合wait,谁知道还有什么,但也许我错过了一种更简单的方法。)sleepkill
我使用 Ubuntu 16.04,我需要以下tmux解决方案,因为我想运行超时过程,sleep因为在我的特定情况下,我不满意at并遇到了错误nohup(组合时nohup-sleep)。现在,它tmux似乎是最好的选择,因为它有自己的无挂断机制,并且在手动使用中实际上工作正常(我只问关于自动化我已经可以手动使用它的过程的问题)。
我需要一种方法来执行以下 3 个操作,全部在一个操作中:
tmux会话。(sleep 30m ; rm -rf dir_name ; exit). 我特别喜欢多行设置,而不是一排长排。tmux会话中写入为标准输入。换句话说,我想在另一个tmux专门为该原因创建的会话中执行代码集,但要在一个操作中完成所有操作。
我的目标是在我最初的工作会议(我大部分时间工作的那个会议)中完成所有工作。通常,我无意访问新创建的会话,我只想使用其自动执行的代码创建它,仅此而已。
如果可能,我更喜欢 heredoc 解决方案。我认为这是最有效的。