สำหรับลูปสำหรับพอร์ตในเซิร์ฟเวอร์ระยะไกลหลายเครื่องใน Linux


1

โปรแกรมของฉันต้องทำงานในเซิร์ฟเวอร์ระยะไกลหลายตัวที่มีพอร์ตต่างกันในสคริปต์นี่คือตัวอย่าง:

ในเซิร์ฟเวอร์ 1 ต้องเรียกใช้:

java -jar test.jar 9001 **.**.**.** 9001
java -jar test.jar 9001 **.**.**.** 9002
java -jar test.jar 9001 **.**.**.** 9003
              .
              .
              .
java -jar test.jar 9001 **.**.**.** 9020

ในเซิร์ฟเวอร์ 2 ต้องเรียกใช้:

java -jar test.jar 9001 **.**.**.** 9021
java -jar test.jar 9001 **.**.**.** 9022
java -jar test.jar 9001 **.**.**.** 9023
              .
              .
              .
java -jar test.jar 9001 **.**.**.** 9035

...

ดังนั้นสำหรับการสร้างสคริปต์ให้สะดวกมากขึ้นวิธีใช้ a สำหรับลูปในแต่ละสคริปต์เซิร์ฟเวอร์เพื่อรันหลายคำสั่ง?

คำตอบ:


2

เซิร์ฟเวอร์ 1:

for i in $(seq -f "%03g" 1 20)
do
  java -jar test.jar 9001 **.**.**.** 9${i}
done

เซิร์ฟเวอร์ 2:

for i in $(seq -f "%03g" 21 35)
do
  java -jar test.jar 9001 **.**.**.** 9${i}
done

ในขณะที่

seq -f <format> <first> <last>

ใช้printfสตริงรูปแบบสไตล์ รูปแบบต้องเหมาะสมสำหรับการพิมพ์อาร์กิวเมนต์ชนิดdoubleหนึ่ง มันสามารถมีข้อกำหนดการแปลงประกอบด้วย:

  • %: แนะนำข้อกำหนดการแปลง
  • 0: ค่าที่แปลงแล้วจะถูกเพิ่มทางด้านซ้ายเป็นศูนย์แทนที่จะเป็นช่องว่าง (ไม่บังคับ)
  • 3: สตริงตัวเลขทศนิยม (ที่มีตัวเลขที่ไม่ใช่ศูนย์) ระบุความกว้างของเขตข้อมูลขั้นต่ำ (ไม่บังคับ)
  • g: พิมพ์อาร์กิวเมนต์ชนิดdoubleในทศนิยมหรือสัญลักษณ์เลขชี้กำลัง ศูนย์ต่อท้ายจะถูกลบออกจากส่วนที่เป็นเศษส่วนของผลลัพธ์ จุดทศนิยมจะปรากฏขึ้นเฉพาะในกรณีที่ตามด้วยตัวเลขอย่างน้อยหนึ่งหลัก (สิ่งนี้ช่วยให้เราสามารถพิมพ์สิ่งdoubleที่ดูเหมือนinteger)

สำหรับรายละเอียดเพิ่มเติมดู:

man seq
man 3 printf

ขอบคุณฉันลืมพูดถึงที่นี่ต้องเรียกใช้คำสั่งเหล่านั้นในเวลาเดียวกันดังนั้นวิธีการแก้ไขสำหรับวง?
Andi

ฉันคิดออกแค่เพิ่ม & หลังคำสั่ง java ขอขอบคุณสำหรับความช่วยเหลือของคุณ. แต่ค่า% 03g หมายถึงอะไร?
Andi

เพิ่ม&คำสั่ง after เพื่อส่งไปยังพื้นหลัง
rda

ขอบคุณ. แต่ค่า% 03g หมายถึงอะไร? มันหมายถึง "00x" ในพอร์ตหรือไม่
Andi

@ แน่นอนใช่มันบอกseqให้ใช้รูปแบบที่ถูกต้อง (เพื่อเพิ่มศูนย์ทางซ้าย) ดูคำตอบที่อัปเดตของฉันด้วย
rda
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.