Google มุ่งมั่นที่จะพัฒนาความเท่าเทียมทางเชื้อชาติสำหรับชุมชนคนผิวดำ มาดูกันว่า
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

การใช้งานที่มีความสุข

ใช้แฟ happy-* -h พร้อมกับคำสั่ง happy-* เพื่อดูวิธีใช้และรายการตัวเลือกสำหรับคำสั่งนั้น

ไฟล์สถานะ

Happy เก็บและรักษาสถานะทอพอโลยีอย่างระมัดระวังในไฟล์ JSON ด้วยเร็กคอร์ดเดียว การใช้ไฟล์สถานะนี้ Happy สามารถรันคำสั่งที่เหมาะสมเพื่อสร้างหรือลบทอพอโลยี

ไฟล์สถานะเริ่มต้นจะอยู่ที่ ~/.happy_state.json ชื่อสถานะเริ่มต้นมี happy ดังที่เห็นในผลลัพธ์ happy-state :

 happy-state

State Name:  happy 

สถานะขนาน

Happy สนับสนุนสถานะคู่ขนานที่มีอยู่หลายตัว สถานะปัจจุบันถูกกำหนดโดยตัวแปรสภาวะแวดล้อม HAPPY_STATE_ID หาก HAPPY_STATE_ID ไม่มีอยู่ในสภาพแวดล้อมจะใช้ค่าสถานะเริ่มต้นของ happy

HAPPY_STATE_ID ไม่ได้ถูกสร้างระหว่างการติดตั้ง Happy สร้างรายการที่มีค่าอื่นที่ไม่ใช่ state เพื่อเปลี่ยนเป็นสถานะ Happy อื่นทันที

 export HAPPY_STATE_ID="sunny"

ตอนนี้การตรวจสอบผลลัพธ์ happy-state ในสถานะอื่น:

 happy-state

State Name:  sunny 

แต่ละรัฐจะถูกเก็บรักษาไว้ในไฟล์ ~/.${HAPPY_STATE_ID}_state.json ของตัวเอง หากต้องการสลับระหว่างสถานะต่างๆให้เรียกใช้คำสั่ง export HAPPY_STATE_ID=" <state-name> " อีกครั้ง

ถอนการติดตั้งด้วยสถานะขนาน

หากคุณใช้สถานะ Happy แบบขนานและคุณต้องการถอนการติดตั้ง Happy ตรวจสอบให้แน่ใจว่าได้รัน happy-state-delete กับแต่ละสถานะที่ใช้งานอยู่ สิ่งนี้ทำให้มั่นใจว่าเนมสเปซเครือข่ายทั้งหมดที่สร้างโดย Happy ถูกลบออกจากระบบของคุณโดยไม่มีผลต่อการกำหนดค่าเครือข่ายโฮสต์ Linux

ตัวอย่างเช่นด้วยสองสถานะแห่ง happy และ sunny :

 export HAPPY_STATE_ID="sunny"
happy-state-delete
export HAPPY_STATE_ID="happy"
happy-state-delete 

ลบแต่ละไฟล์สถานะขนานด้วยตนเองตามต้องการ:

 rm -f ~/.sunny_state.json
rm -f ~/.sunny_state.json.lock
rm -f ~/.happy_state.json
rm -f ~/.happy_state.json.lock 

ท่อน

Happy ส่งบันทึกไปยัง syslog โดยค่าเริ่มต้น การสำรองข้อมูลบันทึกครั้งที่สองจะถูกส่งไปยัง /tmp/${HAPPY_STATE_ID}_debug_log.txt

หากต้องการดูบันทึก Happy ให้รัน happy-state -l ในหน้าต่างเทอร์มินัลแยกต่างหาก เมื่อคุณป้อนคำสั่ง Happy บันทึกจะแสดงคำสั่งเชลล์ปัญหา Happy ในพื้นหลัง นี่เป็นวิธีที่ดีในการทำความเข้าใจว่า Happy ทำงานอย่างไรหากคุณสนใจเนมสเปซเครือข่าย Linux

ตัวอย่างเช่น happy-node-add node00 สร้างโหนดความสุข เอาต์พุตบันทึกสำหรับคำสั่งนี้คือ:

DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist
DEBUG [Driver:writeState():365] Happy: writing Happy state to file
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

Driver:CallCmd() ทั้งหมด Driver:CallCmd() เป็นคำสั่งเชลล์ที่แฮปปี้โทร พิจารณาแต่ละบรรทัดในบันทึก:

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 does not exist

# Write the link between node00 and happy000 in ~/.happy_state.json
DEBUG [Driver:writeState():365] Happy: writing Happy state to file

# Create the network namespace for the node
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns add happy000

# Check to see if the target namespace (happy000) exists
DEBUG [HappyHost:_namespaceExists():56] Happy: namespace happy000 exists

# Bring up the loopback interface within the happy000 namespace
DEBUG [Driver:CallCmd():416] Happy [happy]: > sudo ip netns exec happy000 ifconfig lo up

ทอพอโลยีตัวอย่าง

ทอพอโลยีตัวอย่างรวมอยู่ในที่เก็บ Happy และ OpenWeave สำหรับการทดสอบ ใช้คำสั่งเพื่อเรียนรู้คำสั่งเพื่อสร้างทอพอโลยีที่ซับซ้อน

ทอพอโลยีอยู่ในรูปแบบ JSON และ Shell Script

JSON

ไฟล์ทอพอโลยี JSON ถูกโหลดโดยใช้คำสั่ง happy-state-load หรือ weave-state-load หากทอปอโลยีรวมถึงการสานคุณต้องใช้ weave-state-load เพื่อโหลดทอพอโลยีมิฉะนั้นคำสั่งเฉพาะของการสานจะถูกข้าม

ตัวอย่างทอพอโลยีที่ไม่มีการสาน:

happy-state-load thread_wifi_ap_internet.json

ทอพอโลยีที่มีการสาน:

weave-state-load three_nodes_on_thread_weave.json

หากต้องการบันทึกทอปอโลยีปัจจุบันของคุณเป็นไฟล์ JSON แยกต่างหากเพื่อใช้ในภายหลัง (ตัวอย่างเช่น สคริปต์กรณีทดสอบ ) ให้ใช้ happy-shell -s :

happy-shell -s my_topology.json

สิ่งนี้บันทึกไฟล์สถานะทอพอโลยีในไดเร็กทอรี $HOME

เชลล์สคริปต์

ไฟล์ทอพอโลยีสคริปต์เชลล์มีชุดคำสั่ง Happy และ Weave เพื่อสร้างทอพอโลยีในไฟล์ JSON ที่เกี่ยวข้อง สคริปต์เหล่านี้โดยค่าเริ่มต้นไม่มีสิทธิ์ในการปฏิบัติการ สามารถรันได้สองวิธี:

โดยใช้คำสั่ง bash :

bash thread_wifi_ap_internet.sh

โดยใช้สิทธิ์การปฏิบัติการ:

chmod +x thread_wifi_ap_internet.sh
./thread_wifi_ap_internet.sh

องค์ประกอบ

Happy มีสามไฟล์กำหนดค่า:

ไฟล์การกำหนดค่า ลักษณะ
~/.happy_conf.json ตัวแปรการกำหนดค่าสำหรับการใช้งานส่วนตัวหรือปลั๊กอิน ตั้งค่าเหล่านี้โดยใช้คำสั่ง happy-configuration
<path-to-happy> /happy/conf/main_config.json ตัวแปรการกำหนดค่าความสุขหลัก
<path-to-happy> /happy/conf/log_config.json บันทึกการกำหนดค่า

เพิ่มตัวแปรการกำหนดค่า

เราขอแนะนำให้คุณใช้คำสั่ง happy-configuration เพื่อตั้งค่าตัวแปรส่วนบุคคลหรือปลั๊กอินใด ๆ

ตัวอย่างเช่นหากต้องการให้ Happy ทราบว่าจะค้นหาไดเรคทอ test-apps สานสำหรับสคริปต์ทดสอบได้อย่างไรให้ตั้งค่าตัวแปร weave_path :

happy-configuration weave_path <path-to-openweave-core> /build/x86_64-unknown-linux-gnu/src/test-apps

Happy เก็บตัวแปรการกำหนดค่าใน ~/.happy_conf.json

กระบวนการในโหนด

Happy ให้คำสั่งเพื่อเริ่มและหยุดกระบวนการภายในโหนดจำลอง

ในการเริ่มต้นกระบวนการ:

happy-process-start <node-name> <custom-process-name> <command>

ตัวอย่างเช่นในการรัน ping อย่างต่อเนื่องในโหนดชื่อ ThreadNode:

happy-process-start ThreadNode ContinuousPing ping 8.8.8.8

ในตัวอย่างด้านบน ContinuousPing เป็นชื่อที่ผู้ใช้กำหนดสำหรับกระบวนการที่ Happy ใช้เพื่อจัดการกระบวนการ ใช้ happy-process-wait เพื่อหยุดการประมวลผลกระบวนการและ happy-process-stop เพื่อ happy-process-stop กระบวนการ

เอาต์พุตกระบวนการอยู่ใน /tmp ตัวอย่างเช่นหลังจากเริ่มต้นกระบวนการ ContinuousPing ให้ตรวจสอบไดเร็กทอรี /tmp :

ls /tmp/happy*
/tmp/happy_018691_1524087014.192197_ContinuousPing.out

ไฟล์ .out นี้มีเอาต์พุตสำหรับกระบวนการ ContinuousPing

การใช้งานของ sudo

Happy เปลี่ยนการกำหนดค่าเครือข่ายที่ควบคุมโดยเคอร์เนล Linux เนื่องจาก root เท่านั้นที่สามารถเปลี่ยนการตั้งค่าเคอร์เนลได้ Happy ขอให้คุณป้อนรหัสผ่าน sudo ระหว่างการใช้งาน

Happy ใช้ตัวแปรสภาพแวดล้อมระบบ $SUDO เพื่อเรียกใช้ sudo หากไม่ได้กำหนด $SUDO แฮปปี้จะโทรหา sudo ปกติ

การเขียนสคริปต์หลาม

หลังการติดตั้งแพ็คเกจ Happy Python สามารถนำเข้าสู่สภาพแวดล้อม Python โดยใช้คำสั่ง import ต่อไปนี้:

import happy

โมดูลคำสั่งส่วนบุคคลที่พบใน /happy นำเข้าดังนี้:

import happy.HappyNodeAdd

ในการดึงตัวเลือกโมดูลให้เรียกใช้ฟังก์ชัน option() ตัวอย่างเช่นเพื่อดึงตัวเลือกโมดูล HappyNodeAdd :

module options
import happy.HappyNodeAdd
options = happy.HappyNodeAdd.option()