ฉันพยายามเรียกใช้สคริปต์ด้วย GNU ขนานกันหลายครั้ง แต่สคริปต์ไม่มีข้อโต้แย้ง
หากฉันเพียงแค่รัน 'parallel foo.sh' ฉันจะได้รับสิ่งนี้:
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
ฉันพยายามเรียกใช้สคริปต์ด้วย GNU ขนานกันหลายครั้ง แต่สคริปต์ไม่มีข้อโต้แย้ง
หากฉันเพียงแค่รัน 'parallel foo.sh' ฉันจะได้รับสิ่งนี้:
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
คำตอบ:
สมมติว่าคุณต้องการเรียกใช้สิบครั้งไวยากรณ์นี้จะทำงาน:
parallel -n0 foo.sh ::: {1..10}
parallel
ต้องการลำดับการป้อนข้อมูลของความยาวบางส่วน ( ::: {1..10}
) และคุณจำเป็นต้องละเว้นเนื้อหาของลำดับการป้อนข้อมูล ( -n0
) คุณสนใจเฉพาะความยาวของมัน
คำสั่งดั้งเดิมของคุณ: parallel foo.sh
, ไม่มีลำดับการป้อนข้อมูลเพื่อระบุว่าคุณต้องการความขนาน คำเตือนที่คลุมเครือกำลังบอกคุณว่าparallel
กำลังจะเริ่มฟังเทอร์มินัลสำหรับลำดับการป้อนข้อมูลและนี่อาจไม่ใช่สิ่งที่คุณต้องการ
นี่คือตัวอย่างการสอน:
seq 10 | parallel -n0 my_command my_args
มันทำงานอย่างไร:
parallel
ใช้ลำดับการป้อนข้อมูลจากที่อื่นเสมอ มันสามารถเป็นลำดับที่คั่นด้วยช่องว่างแบบอินไลน์นำหน้าด้วย:::
หรือลำดับที่คั่นด้วย newline จากไฟล์หรือแหล่งที่มาของไฟล์เช่นไปป์ ในตัวอย่างนี้ลำดับอินพุตมาจากไพพ์seq 10
สร้างลำดับของตัวเลขที่คั่นด้วย newline จากหนึ่งถึงสิบ-n0
ตัวเลือกบอกขนานที่จะไม่สนใจค่าในลำดับการป้อนข้อมูล สิ่งที่เราใส่ใจคือความยาวของลำดับไม่ใช่เนื้อหา แม้ว่าตัวเลขที่ไม่ได้ใช้คำสั่งจะยังคงดำเนินการสิบครั้งตัวอย่างอื่น:
parallel -n0 echo -n 'x' ::: {1..5}
มันทำงานอย่างไร:
{1..5}
สร้างลำดับของตัวเลขคั่นด้วยช่องว่างจากหนึ่งถึงห้า-n0
ละเว้นค่าลำดับ (และเราสะท้อนสตริง'x'
แต่ละครั้งแทน)xxxxx
เปรียบเทียบกับ:
parallel echo -n ::: {1..5}
มันทำงานอย่างไร:
{1..5}
สร้างลำดับของตัวเลขคั่นด้วยช่องว่างจากหนึ่งถึงห้าecho
ค่าจากลำดับการป้อนข้อมูลแต่ละครั้งจะถูกนำมาใช้เป็นข้อโต้แย้งไปยัง ไม่รับประกันการสั่งซื้อ43215
. อาจเป็นคำสั่งใด ๆคุณอ่านตัวอย่างในคู่มือแล้วหรือยัง? https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Run-the-same-command-10-timesเฉพาะ