在執行python程式時,需要對多個版本或者多個方法的**進行執行,它們往往需要設定乙個系列的引數,然後使用python ***.py執行該py檔案。這種情況往往要做大量重複的沒有意義的工作,所以我想通過批量生成執行命令,然後批量跑實驗。
首先我們需要乙個批量生成命令的指令碼,如下:
from copy import deepcopy
defgenerate
(param_dict)
: count=
0 final=
1for k,v in param_dict.items():
count=count+
1 final=final*
len(v)
res=
[none
]*count
for i in
range
(count)
: res[i]
=final*
[none
] res_count=
0 res_final=
1for k,v in param_dict.items():
command_num=
0for i in
range
(res_final)
:for j in
range
(len
(v))
:if res_count==0:
res[0]
[j]=
else
: tmp=deepcopy(res[res_count-1]
[i])
tmp[
str(k)]=
str(v[j]
) res[res_count]
[command_num]
=tmp
command_num+=
1 res_count=res_count+
1 res_final=res_final*
len(v)
return res[-1
]def
command
(resdict,num=
1,path=
" ../../output/"):
run_sh=
open
('./run.sh'
,'w'
)for i in
range
(len
(resdict)):
filename=
'' command=
''for k,v in resdict[i]
.items():
ifnot k.startswith(
"python"):
filename+=
"_"+k.split(
"-")[-
1]+v else
: filename+=v.split(
'.')[0
].split(
' ')[1
] command+=
(str
(k)+
' '+
str(v)
+' '
) command+=
' >'
+path+filename
for i in
range
(num)
: run_sh.write(command+
"_"+
str(i)
+" 2>&1 &\n"
)if __name__ ==
'__main__'
: param=
res=generate(param)
command(res,num=
5,path=
" ../../output/20201103/equal/"
)
生成的命令樣式見下圖:
這個**的使用方式很簡單,在紅框傳入你需要的預先設定的引數,生成的命令會是這些引數的全組合。需要注意的是,第一對鍵值對必須是"python"="-u ***.py",這是執行python檔案必須的命令。在黃框設定輸出日誌檔案要儲存的位置,最前面的空格不可少
。
然後將s**件傳入到伺服器,注意相對路徑
。
然後執行該s**件,即可nohup批量執行程式:
Linux同時在多個伺服器上批量建立多個使用者
需求 批量建立5個使用者,設定密碼123456,同時在多個伺服器上執行該操作。思路 在管理伺服器m01上操作,在m01寫好建立5個使用者並設定密碼的指令碼,使用ansible的script模組或者先用copy拷貝到目的主機上再使用shell模組執行,注意先用ssh keygen生成秘鑰對並用ssh ...
LVS伺服器實驗
一 lvs簡介 lvs linux virtual server 是乙個伺服器集群系統專案。隨著網際網路的飛速發展,人們對於伺服器的要求越來越高。很多網路服務因為訪問次數 式地增 長而不堪重負,不能及時處理使用者的請求,導致使用者進行長時間的等待,大大降低了服務質量。如何建立可伸縮的網路服務來滿足不...
實驗 NFS伺服器
nfs作業 架設一台nfs伺服器,並按照以下要求配置 1 開放 nfs shared目錄,供所有使用者查詢資料 2 開放 nfs upload目錄,該目錄為172.24.8.0 24網段的主機的資料上傳目錄,並將所有該網段主機上傳檔案的所屬者和所屬組對映為nfs upload,其uid和gid為20...