เป็นไปได้หรือไม่ที่จะเริ่มคำสั่งบนหลาย ๆ โหนดในเวลาเดียวกัน?


1

เป็นไปได้หรือไม่ที่จะเริ่มคำสั่งบน 10 โหนดในเวลาเดียวกัน?

นี่คือส่วนหนึ่งของสคริปต์ของฉัน:

#! /bin/sh

nb_lignes=`wc -l $1 | cut -d " " -f1`
echo "$nb_lignes machines"

for i in $(seq $nb_lignes)
do
    machine=`head $1 -n $i | tail -1`
    ssh root@$machine -x "instruction"  

done

ใช้งานได้หรือไม่ ถ้าเป็นเช่นนั้นคำตอบคือใช่ ถ้าไม่คุณประสบปัญหาอะไรบ้าง
choroba

มันกำลังทำงานตามลำดับฉันต้องการเริ่มต้นคำสั่งในเวลาเดียวกันบนโหนดทั้งหมดฉันต้องเพิ่ม "&" เช่น: ssh root @ $ machine -x "คำสั่ง" &?
user1568840

เป็นไปได้ไหม? ใช่. แต่คุณต้องการให้พวกเขาเริ่มต้นที่เสี้ยววินาทีที่แน่นอนดังนั้นจึงจำเป็นต้องมีการกำหนดตารางเวลาให้ตรงกันหรือไม่ หรือมันจะดีถ้าพวกเขาทำงานในเวลาเดียวกันเป็นไปได้ด้วยความล่าช้าเล็ก ๆ แบบไม่ใช่เรียลไทม์ในหนึ่งในโหนด? สคริปต์ของคุณทำอะไรและไม่ทำ
Tamara Wijsman

ใช่คุณต้องเพิ่มการ&เรียกใช้พวกเขาในแบบคู่ขนาน หากไม่มีมันจะรอให้คำสั่งหนึ่งคำสั่งเสร็จสิ้น
Tamara Wijsman

1
คุณอาจต้องการที่จะดูเป็นสิ่งที่ต้องการGNU ขนาน
Tamara Wijsman

คำตอบ:


0

ใช่แล้ว. dshคำสั่งให้สิ่งที่คุณพูดถึง มันจะรันคำสั่งเดียวกันในรายการของโหนดที่ระบุโดยพารามิเตอร์และคุณอาจแยกวิเคราะห์ stdout และ stderr สำหรับคำตอบของโหนดเหล่านี้

เพื่อที่จะใช้มันฉันขอแนะนำให้ใช้การรับรองความถูกต้องของคีย์ SSH เพื่อหลีกเลี่ยงdshคำสั่งเพื่อขอรหัสผ่าน

clustersshมีทางเลือกที่เรียกว่าเป็น นี่เป็นเวอร์ชันโต้ตอบของdshคำสั่งดังนั้นมินิวินโดว์ที่มีเชลล์จะถูกเปิดต่อเครื่องดังนั้นคุณสามารถป้อนคำสั่งในเชลล์เฉพาะหรือคำสั่งโกลบอลสำหรับหน้าต่างทั้งหมด


0

ใช้ GNU Parallel ดูเหมือนว่านี้:

parallel --slf $1 --nonall instruction

มันจะวางไข่หนึ่งงานต่อซีพียู

GNU Parallel เป็นตัวปรับเทียบทั่วไปและทำให้การเรียกใช้งานแบบขนานบนเครื่องเดียวกันหรือบนเครื่องหลายเครื่องที่คุณเข้าถึงได้ง่าย มันมักจะสามารถแทนที่forวง

หากคุณมี 32 งานที่แตกต่างกันที่คุณต้องการเรียกใช้บน 4 CPU ทางตรงไปข้างหน้าเพื่อขนานคือการรัน 8 งานในแต่ละ CPU:

การตั้งเวลาอย่างง่าย

GNU Parallel แทนการวางกระบวนการใหม่เมื่อเสร็จสิ้น - ทำให้ซีพียูทำงานและประหยัดเวลา:

GNU Parallel Scheduling

การติดตั้ง

หาก GNU Parallel ไม่ได้จัดทำแพ็กเกจสำหรับการแจกจ่ายของคุณคุณสามารถทำการติดตั้งส่วนบุคคลซึ่งไม่ต้องการการเข้าถึงรูท สามารถทำได้ภายใน 10 วินาทีโดยทำสิ่งนี้:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

สำหรับตัวเลือกการติดตั้งอื่น ๆ ดูที่http://git.savannah.gnu.org/cgit/parallel.git/tree/README

เรียนรู้เพิ่มเติม

ดูตัวอย่างเพิ่มเติม: http://www.gnu.org/software/parallel/man.html

ดูวิดีโอแนะนำ: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

ดำเนินการตามบทช่วยสอน: http://www.gnu.org/software/parallel/parallel_tutorial.html

ลงทะเบียนเพื่อรับรายชื่ออีเมลเพื่อรับการสนับสนุน: https://lists.gnu.org/mailman/listinfo/parallel

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