小编AL-*_*teb的帖子

Bash脚本并行处理有限数量的命令

我有一个看起来像这样的bash脚本:

#!/bin/bash
wget LINK1 >/dev/null 2>&1
wget LINK2 >/dev/null 2>&1
wget LINK3 >/dev/null 2>&1
wget LINK4 >/dev/null 2>&1
# ..
# ..
wget LINK4000 >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

但是处理每一行直到命令完成然后移动到下一行是非常耗时的,我想一次处理20行,然后当它们完成另外20行处理时.

我想把wget LINK1 >/dev/null 2>&1 &命令发送到后台然后继续,但这里有4000行,这意味着我会遇到性能问题,更不用说我应该同时启动多少个进程,所以这不是一个好的理念.

我现在想到的一个解决方案是检查其中一个命令是否仍在运行,例如在20行后我可以添加此循环:

while [  $(ps -ef | grep KEYWORD | grep -v grep | wc -l) -gt 0 ]; do
sleep 1
done
Run Code Online (Sandbox Code Playgroud)

当然,在这种情况下,我需要追加到行尾!但我觉得这不是正确的做法.

那么我如何实际将每20行组合在一起并等待它们完成,然后再转到接下来的20行,这个脚本是动态生成的,所以我可以在生成它的时候做我想要的任何数学运算,但它没有必要使用wget,这只是一个例子,所以任何特定于wget的解决方案都不会给我任何好处.

linux bash shell

186
推荐指数
4
解决办法
20万
查看次数

查看linux中已经运行的进程的输出

我有一个在后台运行的进程(sh脚本),我想知道是否可以查看此进程的输出而不必中断它.

该过程由某些应用程序运行,否则我会将其附加到屏幕上供以后查看.可能需要一个小时才能完成,我想确保它正常运行且没有错误.

linux process ps

10
推荐指数
1
解决办法
5810
查看次数

梦魇JS不工作

我知道问题的标题看起来很模糊!但就是这样.

我在生产服务器上安装了nodejs,其中phantomjs工作正常,然后我安装了恶梦npm install nightmare,我可以在node_modules中看到它,我尝试了github上开发人员列出的示例:

var Nightmare = require('nightmare');
var nightmare = Nightmare({ show: true })

nightmare
  .goto('http://yahoo.com')
  .type('input[title="Search"]', 'github nightmare')
  .click('#uh-search-button')
  .wait('#main')
  .evaluate(function () {
    return document.querySelector('#main .searchCenterMiddle li a').href
  })
  .end()
  .then(function (result) {
    console.log(result)
  })
Run Code Online (Sandbox Code Playgroud)

没有发生任何事情,脚本没有输出任何内容,我将脚本简化为简单的单一转到,对于我服务器上的页面,当我通过脚本运行脚本时从未调用过该页面 node file.js

我有CentOS 6.7,phantomjs 1.1我也在最新版本的phantomjs上进行了全新的CentOS 7安装测试,同样的事情.

我错过了某种先决条件还是什么?如何调试问题,因为node script.js没有提供任何输出

更新:显然问题是,电子,噩梦'而不是幻影'使用的电子需要图形环境,这就是它无法在我的环境中运行的原因.

javascript browser-automation node.js phantomjs nightmare

5
推荐指数
1
解决办法
6887
查看次数

如何在PHP的后台运行cURL请求?

我正在尝试使用PHP和cURL扩展名构建某种基于Web的下载管理器,但是我遇到了一个问题,如何在不让用户等待的情况下使用cURL下载和保存文件,这意味着他将该请求,它将在后台处理。

现在我不能使用系统调用(exec,system等),因为我使用的大多数主机都禁用了这些功能,另一个问题是PHP脚本的最大执行时间,但是我想可以更改此脚本在.htaccess或使用ini_set还是可以吗?

我在某处读到将connect_timeout设置为1会起作用,但是那不终止连接吗?

一种解决方案是使用cronjobs,在用户提交要下载的文件后,cronjob将检查数据库,并且队列中是否有文件将开始下载,但我想我想避免使用cron job可能。

回到主要问题,是否有一种方法可以告诉php脚本在后台运行某些功能,并将响应传递给用户,而不管该功能的结果如何

谢谢

php curl background

3
推荐指数
2
解决办法
2万
查看次数

生成所有可能的 3 个总和为 N 的正整数

我数学不好,我无法理解这个问题,我想生成所有可能的 3 个正数,总和为 N 个示例 100,例如:

0 - 0 - 100

0 - 1 - 99

1 - 1 - 98

您不需要用 PHP 代码回答我,只需了解如何生成这些数字的一般想法就足够了。

谢谢。

php algorithm math probability

2
推荐指数
1
解决办法
512
查看次数

某些 androids 应用程序无法通过 fiddler 连接

我遵循了有关如何在 android 模拟器上添加 fiddler 证书的说明,使用 nox 和 memu 模拟器,以及运行棉花糖的 android 手机,当我打开网站时,我将 WiFi 代理设置为通过本地网络指向我的 PC使用 Web 浏览器,一切正常,我收到警告,我选择继续,并且使用 fiddler 成功隧道和解密连接。

但是,当我尝试使用其他应用程序时,连接失败!我看到隧道连接,然后连接失败。我敢打赌,这是由于 HTTPS 证书无效,所以我的问题是,有没有办法让我将 fiddler 安装到受信任的机构,以便在没有警告的情况下连接到它?所以我终于可以调试进出这些应用程序的 HTTPS 流量了。

我在 SO 上发现了类似的问题,但没有一个与我的完全相同,也没有正确的答案,所以我不确定这个问题实际上是否符合重复的条件。

谢谢

debugging https android fiddler ssl-certificate

1
推荐指数
1
解决办法
1448
查看次数