注意:关于如何改进问题的反馈将是伟大的,因为我仍在学习,我理解没有代码,因为我有信心它不需要修复。我在网上研究了很多,似乎找不到我问题的答案。当我更改参数以产生更少的输出时,我的脚本工作正常,所以我知道它工作得很好。我已经调试了脚本,没有错误。当我的参数被改变以产生更多的输出时,脚本运行了几个小时,然后它停止了。我下面这个问题的目的是确定linux是否会超时运行一个进程(或相关的东西),如果超时,如何解决。
我正在运行一个shell脚本,它有几个for循环,执行以下操作:
- Goes through existing files and copies data into a newly saved/named file
- Makes changes to the data in each file
- Submits these files (which number in the thousands) to another system
脚本是非常基本的(初学者在这里),但只要我不给它太多的生成,它应该工作。然而,如果我想让它循环遍历所有可能的情况,这意味着我将生成成千上万个文件,然后在一定的时间后,shell脚本就会停止运行。
我有足够的硬盘存储来支持所有正在创建的文件。然而,需要注意的一点是,在提交文件的过程中,如果提交文件的机器在那个时刻已满,那么我正在运行的shell脚本将不得不暂停并等待另一台机器清理。这个过程可以工作一段时间,但最终shell脚本会停止运行,不再继续。
是否有办法使它继续或阻止它停止?我输入control + Z暂停脚本,然后fg恢复,但它仍然什么也不做。我通过输入ls -la来检查状态,看看文件大小是否在增加,尽管top/ps显示脚本仍在运行,但没有。
假设您的脚本使用的是'Bash' -很可能是shell会话耗尽了'系统资源'。同样最有可能的是,脚本的工作方式导致了这个问题。如果没有看到您的脚本,将很难提供额外的指导,然而,您可以在"系统级别"检查可能帮助您的几个项目,即
- 检查系统日志中有关您的进程或'系统资源'的错误
- 检查你的文档:man ulimit(或'man bash'并搜索'ulimit')
-
考虑删除'深嵌套'(如果存在);相反,在第一步构建下一步所需的"数据"的地方创建工作集,例如,如果可能,而不是:
第一步(所有文件)##猜测这就是你要做的
步骤2(所有文件)
步骤3(所有文件 )
为每个文件尝试每个步骤-例如:
for MY_FILE in ${FILE_LIST}
do
step_1
step_2
step_3
done
:
)戴尔