TASK - SSH到650服務器並從中獲取一些細節,然後將完成的服務器名稱寫入不同的文件。如何以更快的速度做到這一點?如果我做正常的ssh,則需要7分鐘。所以,我讀了awk並寫了以下2個代碼。awk是否平行運行?
您能否介紹一下以下代碼的區別?
代碼1 -
awk 'BEGIN{done_file="/home/sarafa/AWK_FASTER/done_status.txt"}
{
print "blah"|"ssh -o StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=1 -o ConnectionAttempts=1 "$0" uname >/dev/null 2>&1";
print "$0" >> done_file
}' /tmp/linux
代碼2 -
awk 'BEGIN{done_file="/home/sarafa/AWK_FASTER/done_status.txt"}
{
"ssh -o StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=1 -o ConnectionAttempts=1 "$0" uname 2>/dev/null"|getline output;
print output >> done_file
}' /tmp/linux
當運行這些代碼爲650個服務器,代碼1採用 - 30秒,代碼2需要7分鐘? 爲什麼會有這麼多的時差?
文件 -的/ tmp/linux是650級的服務器
我正在使用HPUX服務器來SSH不同的操作系統上運行不同的服務器(如RedHat,Aix,Solaris,HPUX本身)。 此HPUX服務器沒有此並行命令,也不允許我安裝它。 這些代碼是否有任何不良影響?你不推薦這些嗎?如果不是,那爲什麼? – user3114179
'GNU Parallel'是一個Perl腳本 - 你不允許編寫/使用Perl嗎?對不起,我無法評論哪些代碼是好的還是壞的,什麼是可以使用也不能使用 - 我只是說我相信GNU Parallel非常適合快速,準確和輕鬆地完成您的任務。可能有其他方法,可能會更好或更糟,您可能會或可能不會被允許使用 - 如果有的話,那很好。 –
你會想用--nonall代替:parallel -j 0 --tag --slf/tmp/linux --nonall'hostname; ls' –