linux - 当运行带循环的 shell 脚本时,操作会停止

标签 linux bash shell for-loop timeout

注意:关于如何改进问题的反馈会很好,因为我仍在学习,我知道没有代码,因为我相信它不需要修复。我在网上进行了大量研究,似乎找不到我的问题的答案。当我更改参数以产生更少的输出时,我的脚本可以正常工作,所以我知道它工作得很好。我已经调试了脚本,没有发现任何错误。当我的参数被更改以产生更多输出并且脚本运行几个小时后它就会停止。我对以下问题的目标是确定 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 session 的“系统资源”已用完。而且最有可能的是,您的脚本的工作方式导致了该问题。如果没有看到您的脚本,将很难提供额外的指导,但是,您可以在“系统级别”检查可能对您有所帮助的几个项目,即

  • 查看系统日志,了解有关您的进程或“系统资源”的错误
  • 检查您的文档:man ulimit(或“man bash”并搜索“ulimit”)
  • 考虑删除“深层嵌套”(如果存在);相反,创建工作集,其中第一步构建下一步所需的“数据”,即如果可能的话,而不是:

    第 1 步(所有文件)## 猜测这就是您正在做的
    步骤 2(所有文件)
    步骤 3(所有文件

对每个文件尝试每个步骤 - 类似于:

for MY_FILE in ${FILE_LIST}   
do
  step_1  
  step_2  
  step_3  
done  

:)
戴尔

关于linux - 当运行带循环的 shell 脚本时,操作会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238349/

相关文章:

linux - 计算多个文件中的重复项

c++ - 如何在 linux 中获取本地代码页?

linux - 用awk显示/etc/passwd中重复的GID

bash - 查找子目录中的最大文件数

linux - 尽管交互式 shell 功能正常,但 Bash 功能不适用于远程 ssh 命令执行

linux - ext3 中的日记 - 文档

linux - 使用具有简单用户权限的/dev/ttyS0 之类的串行端口

python - python 脚本上的 sed 替换 - "command not found"问题

php - 来自命令行的 PDO MySQL 连接问题

java - 如何运行jar文件取决于jar文件