您好,Linux for循環(huán)執(zhí)行命令一行-csd,可以使用for循環(huán)來實現(xiàn)。for循環(huán)是一種常見的循環(huán)結(jié)構(gòu),它可以讓您重復執(zhí)行一系列操作,直到某個條件不滿足為止。
創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為橋西企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,橋西網(wǎng)站改版等技術(shù)服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
具體來說,for循環(huán)的語法如下:
for (初始化表達式; 條件表達式; 更新表達式)
{
// 循環(huán)體
}
其中,初始化表達式用于初始化循環(huán)變量;條件表達式用于檢查循環(huán)條件是否滿足;更新表達式用于更新循環(huán)變量。
要執(zhí)行一行-csd命令,可以使用以下for循環(huán):
for (int i = 0; i 200; i++)
{
system("-csd");
}
上面的for循環(huán)將會執(zhí)行200次-csd命令,每次循環(huán)結(jié)束后,i的值都會自動增加1。
一次執(zhí)行多個命令可以將多個命令用英文分號分割,比如像這樣:
mkdir /tmp/mydir; touch /tmp/mydir/myfile
其實這樣也不能算是同時執(zhí)行,Linux的命令是順序執(zhí)行的,就算是shell腳本,里面寫了一大堆命令,同樣也順序執(zhí)行的。如果前一個命令執(zhí)行的時間比較長,后面的命令就只有等待了。如果命令執(zhí)行時間比較長,又想讓命令同時執(zhí)行,恐怕只能打開多個虛擬終端才行(右鍵虛擬終端界面,選擇“打開標簽”),打開多個登錄的虛擬終端其實是運行了多個“會話”,多個“會話”中的命令才是“同時”執(zhí)行。
指定一臺主機作為信任主機,這樣從這臺主機登錄其他機器就不需要密碼了。
設(shè)置信任主機:
假設(shè)有四臺機器:192.168.2.1~192.168.2.4,其中192.168.2.1為信任機,那么在192.168.2.1上運行如下命令:
$.sh-keygen -t rsa //此處一路回車,生成秘鑰
$scp .ssh/id_rsa.pub 192.168.2.2:~/ //把秘鑰拷貝到其他遠程機器
$ssh 192.168.2.2 ‘cat id_rsa.pub .ssh/authorized_keys’ //(遠程執(zhí)行命令)在遠程機器上生成認證文件
經(jīng)過這幾步,從192.168.2.1 ssh登陸192.168.2.2時,就不會再需要輸入密碼了。同樣的步驟再執(zhí)行3、4的極其。
文本文件hostlist可以如下
192.168.2.2
192.168.2.3
192.168.2.4
#!/bin/shdoCommand(){? ??
hosts=`sed -n'/^[^#]/p'hostlist`
for ? host ?in ? $hosts
do
echo ""
echo ?HOST$host
ssh ?$host ?"$@"?
done
return 0
}
if ?[ ?$# -lt 1 ]
then
echo "$0cmd" exit?
fi
do ?Command "$@"
echo "return from doCommand"
執(zhí)行命令(記得先對doCommand.s
h增加執(zhí)行權(quán)限 chmod u+x doCommand.sh)
./doCommand.sh “l(fā)s -al /root/”
這樣該腳本就會在每臺機器上執(zhí)行”ls -al /root/”這個命令,并返回結(jié)果在信任主機上。