bash - cURL 从文件中读取 URL - 进程休眠
问题描述
也许有人知道如何用一些 bash 脚本来解决我的问题。
背景:我有一个包含 30 个 URL(每行一个 URL)的文件(urls.txt),用于在 while 循环中创建 30 个使用 cURL 的并行线程,以同时下载/访问这些 URL(访问 URL 需要 cookie) . 该脚本总共运行了大约 10 秒,并由 cronjob 启动和终止。总共打开了相当多的并行 cURL 进程。这导致了很多睡眠进程的问题。ulimit -u 设置为 47828,ulimit -n 设置为 1024。脚本在 debian 系统上运行。当脚本使用 top -d1 运行并且剩余足够的 RAM 时,我监视了进程/内存。当大约 1000 个进程正在运行时,它几乎有相同数量的休眠进程。
目标:在 30 个 URL 之一中,在特定时间范围内嵌入了 javascript。javascript 读取 cookie,服务器处理数据。我需要非常快地成为第一批找到嵌入脚本的正确 URL 的人之一(仅计算前 20 个用户)。因此在一个循环中并行下载 30 个 URL。
问题: 1) 将 ulimit -n 增加到无限制以避免休眠进程并让它们全部执行是否有帮助?该脚本需要尽可能快地执行,并且休眠进程在这里没有帮助。
2) 目前我正在下载 URL 输出(使用 curl -O -J)。如果我不下载文件,它会阻止睡眠过程吗?curl 进程仍会运行,但不会在服务器上写入文件以避免打开文件限制?我什至不需要下载的文件,因为我只需要使用 cookie 数据访问 30 个 URL。
当前的while循环看起来像这样。
while true: do
nohup cat urls.txt | xargs -P30 -n1 curl -b cookie.txt -O -J > /dev/null 2>&1 &
done
解决方案
推荐阅读
- python - 为什么 Crontab 不运行 python 脚本插入的命令?
- html - 如何直观地对单选按钮进行分组?
- python - 遍历嵌套数组并查找索引号
- reactjs - 使用条件然后映射反应问题
- ios - 复制文件时文件管理器“文件存在”
- excel - 如何自动过滤然后仅复制和粘贴可见单元格
- angularjs - 加载服务数据并在 fullCalendar 中显示使用 AngularJS 和 FullCalendar
- java - 为什么这个测试 junit 测试返回 400?
- python - Python 和 Tweepy:CSV 文件中的结果
- android - 在运行时将文本视图添加到 relativlayout