Linux Bash:使用xargs从文件中读取参数时出现意外的并行行为 以前的

Linux Bash:使用xargs从文件中读取参数时出现意外的并行行为 以前的,linux,bash,shell,sed,Linux,Bash,Shell,Sed,这是问题的后续行动 规格 我的系统是一个运行Ubuntu桌面的专用服务器,版本12.04(精确)64位,3.14.32-xxxx-std-ipv6-64。版本和内核都不能升级,但我可以安装任何软件包 问题 上面问题中描述的问题似乎已经解决了,但这对我来说不起作用。我已经安装了最新的lftp和并行软件包,它们似乎可以自行工作 运行lftp工作正常 运行/job.shftp.microsoft.com工作正常,但我需要chmod-x脚本 运行sed的/|.*$/'end_unique.txt |

这是问题的后续行动

规格 我的系统是一个运行Ubuntu桌面的专用服务器,版本12.04(精确)64位,3.14.32-xxxx-std-ipv6-64。版本和内核都不能升级,但我可以安装任何软件包

问题 上面问题中描述的问题似乎已经解决了,但这对我来说不起作用。我已经安装了最新的lftp和并行软件包,它们似乎可以自行工作

  • 运行
    lftp
    工作正常
  • 运行
    /job.shftp.microsoft.com
    工作正常,但我需要
    chmod-x
    脚本
  • 运行
    sed的/|.*$/'end_unique.txt | xargs parallel-j20./job.sh::
    不起作用,并产生形式为
    /bin/bash::command not found.
为了简化,我清理了输入文件
end_unique.txt
,现在每行的格式如下:

<server>
编辑2:

我把文件拿到fromdos上运行。现在它应该是标准的unix格式,每行一台服务器。请记住,文件中的服务器的格式可能有所不同:

ftp.server.com
www.server.com
server.com
123.456.789.190

所有这些服务器都是ftp服务器,可通过
ftp://
::
访问,
parallel
希望完成要运行的命令所需的参数列表显示在命令行上,如中所示

parallel -j20 ./job.sh ::: server1 server2 server3
如果不使用
,它将从stdin中读取参数,这在本例中为我们提供了更好的服务。你可以简单地说

parallel -j20 ./job.sh < end_unique.txt

这对OP不起作用,因为该文件包含的服务器数量超过了shell愿意放入命令行的服务器数量,但它可能适用于存在类似问题的其他服务器。

请通过包含
作业的定义使此问题自成一体。sh
。此外,如果从输入文件中删除了
|
,则sed命令将不会执行任何操作;特别是,它不会删除CR字符,这可能会在以后导致问题;如果使用FTP,请在导入之前设置文件模式ASCII。否则,在使用导入的文件之前,通过许多可用选项(
tr
dos2unix
,…)中的任何一个,从CRLF结尾删除回车是明智的。注释不用于扩展讨论;这段对话已经结束。
parallel -j20 ./job.sh < end_unique.txt
parallel -j20 job.sh -- $(cat end_unique.txt)