首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在N秒后停止bash命令的执行?

如何在N秒后停止bash命令的执行?
EN

Stack Overflow用户
提问于 2022-07-12 11:23:11
回答 2查看 51关注 0票数 0

我正在编写一个简单的bash脚本,它分析一个目录的内容,并为每个文件调用一个特定的命令,但是,在某些情况下,执行所需的时间比预期的要长,并且我希望在某些秒(或几分钟)之后停止它,然后继续解析下一个条目。

目前,该脚本的工作方式如下:

代码语言:javascript
复制
#!/bin/bash
for f in /home/Users/Desktop/fdroid_tests/destination_dir/*; do
  if [ -d "$f" ]; then
     qark --java $f
  fi
done

我该怎么解决呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-12 12:38:52

除了返回任务之外,您还可能对timeout命令感兴趣。例如,如果qark应用程序尚未退出,timeout 5s qark --java $f将运行它,并在5秒后发出退出信号。

如果可以同时运行所有qark实例,也可以将这两个答案(timeout 5s qark --java $f &)组合在一起。如果需要,还可能希望在循环后添加一个wait,以便脚本在所有qark实例完成或超时之前不会退出。

票数 2
EN

Stack Overflow用户

发布于 2022-07-12 11:35:26

在bash中,可以使用符号和开关在后台启动进程:

代码语言:javascript
复制
qark --java $f &

你等五秒钟:

代码语言:javascript
复制
sleep 5

停止所有运行qark进程,使用pkill

代码语言:javascript
复制
pkill qark

(我没有试过,但你可以试一试。)

编辑:

根据对这一答复的补充意见,这样做可能更好:

代码语言:javascript
复制
qark --java $f & pid=$!
sleep 5
kill $pid
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72951513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档