我正在编写一个简单的bash脚本,它分析一个目录的内容,并为每个文件调用一个特定的命令,但是,在某些情况下,执行所需的时间比预期的要长,并且我希望在某些秒(或几分钟)之后停止它,然后继续解析下一个条目。
目前,该脚本的工作方式如下:
#!/bin/bash
for f in /home/Users/Desktop/fdroid_tests/destination_dir/*; do
if [ -d "$f" ]; then
qark --java $f
fi
done我该怎么解决呢?
发布于 2022-07-12 12:38:52
除了返回任务之外,您还可能对timeout命令感兴趣。例如,如果qark应用程序尚未退出,timeout 5s qark --java $f将运行它,并在5秒后发出退出信号。
如果可以同时运行所有qark实例,也可以将这两个答案(timeout 5s qark --java $f &)组合在一起。如果需要,还可能希望在循环后添加一个wait,以便脚本在所有qark实例完成或超时之前不会退出。
发布于 2022-07-12 11:35:26
在bash中,可以使用符号和开关在后台启动进程:
qark --java $f &你等五秒钟:
sleep 5停止所有运行qark进程,使用pkill
pkill qark(我没有试过,但你可以试一试。)
编辑:
根据对这一答复的补充意见,这样做可能更好:
qark --java $f & pid=$!
sleep 5
kill $pidhttps://stackoverflow.com/questions/72951513
复制相似问题