cstream - ออนไลน์ในคลาวด์

นี่คือคำสั่ง cstream ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


สตรีม — สตรีมข้อมูลโดยตรงด้วยการจำกัดแบนด์วิดท์, FIFO, เสียง, การทำสำเนาและ
การสนับสนุนการรายงานแบบขยายเวลา

เรื่องย่อ


สตรีม [-b NUM] [-B NUM] [-i ชื่อไฟล์] [-I เชือก] [-l] [-n NUM] [-o ชื่อไฟล์] [-O เชือก]
[-p ชื่อไฟล์] [-t NUM] [-T NUM] [-v NUM] [-V] [ชื่อไฟล์]

DESCRIPTION


ซีสตรีม กรองสตรีมข้อมูล เช่นเดียวกับเครื่องมือ UNIX dd(1). มีความดั้งเดิมมากกว่า
ไวยากรณ์บรรทัดคำสั่ง รองรับการจำกัดแบนด์วิดท์ที่แม่นยำ และการรายงานและการสนับสนุนสำหรับ
FIFO ขีดจำกัดข้อมูลและการคำนวณอัตราปริมาณงานจะใช้ได้สำหรับไฟล์ > 4 GB

ซีสตรีม อ่านจากอินพุตมาตรฐานและเขียนไปยังเอาต์พุตมาตรฐาน หากไม่มีชื่อไฟล์
ที่ให้ไว้. นอกจากนี้ยังจะ 'สร้าง' หรือ 'จม' ข้อมูลหากต้องการ

ตัวเลือก:

-b NUM กำหนดขนาดบล็อกที่ใช้สำหรับอ่าน/เขียนถึง NUM. ค่าเริ่มต้นคือ 8192 ไบต์

-B NUM อินพุตบัฟเฟอร์สูงถึง NUM ไบต์ก่อนเขียน ค่าเริ่มต้นคือขนาดบล็อก มันคือ
เกิดข้อผิดพลาดในการตั้งค่านี้เป็นอะไรที่ต่ำกว่าขนาดบล็อก มีประโยชน์เมื่อเขียนเทป
และคล้ายคลึงกันซึ่งชอบงานเขียนขนาดใหญ่บางฉบับหรืองานพิมพ์ขนาดเล็กจำนวนมาก

-c NUM การทำงานพร้อมกัน ใช้กระบวนการแยกต่างหากสำหรับการส่งออก มีประโยชน์อย่างยิ่ง
ร่วมกับตัวเลือก -B
0 = ใช้กระบวนการเดียวเท่านั้น (ค่าเริ่มต้น)
1 = กระบวนการอ่านจะบัฟเฟอร์
2 = กระบวนการเขียนจะบัฟเฟอร์
3 = ทั้งสองกระบวนการจะบัฟเฟอร์
เมื่อรวมกับขนาดบัฟเฟอร์ขนาดใหญ่ สิ่งนี้มักจะโหลดหน่วยความจำของคุณ
อย่างหนักทุกครั้งที่ผู้อ่านโอนบัฟเฟอร์ที่รวบรวมไปยัง
นักเขียน หากคุณใช้ -c 3 และมีขนาดบัฟเฟอร์ 128 เมกะไบต์ 256 MB ของ
ความทรงจำจะถูกสัมผัสทันที

-i NUM

-o NUM ตั้งชื่อไฟล์ที่จะใช้สำหรับอินพุตหรือเอาต์พุตตามลำดับ ถ้าไฟล์ที่ส่งออก
ชื่อคือ "-" ข้อมูลจะถูกละทิ้ง หากชื่อไฟล์อินพุตคือ "-" ข้อมูลจะ
จะถูกสร้างขึ้น 'ออกจากความว่างเปล่า' หากไม่ระบุตัวเลือกเหล่านี้ stdin/stout จะเป็น
ใช้แล้ว. หากคุณต้องการที่จะให้ -o or -i ตัวเลือกและต้องการ stdin/stdout ระบุ
สตริงว่างดังนี้:

cstream -ฉัน''

หากคอมไพล์การสนับสนุน TCP ใน (ค่าเริ่มต้น) hostname:portnumber จะพยายาม
เชื่อมต่อกับโฮสต์ที่ระบุที่พอร์ตที่ระบุและ :portnumber จะเปิด a
ซ็อกเก็ต TCP บนเครื่องท้องถิ่นและรอการเชื่อมต่อที่จะมาถึง ความปลอดภัย
หมายเหตุ: cstream ไม่มีกลไกในการจำกัดโฮสต์ที่อาจเชื่อมต่อกับสิ่งนี้
ท่า. เว้นแต่เครื่องของคุณจะมีตัวกรองเครือข่ายอื่น ๆ ทุกคนจะสามารถ
การเชื่อมต่อ

-I เชือก

-O เชือก
ระบุประเภทของไฟล์อินพุตและเอาต์พุตตามลำดับ
ถ้าสตริง
รวมถึง 'f' จะมีการสร้าง fifo
ถ้าสตริง
รวม 'a' ไฟล์จะถือว่าเป็นเสียงที่เข้ากันได้กับ opensound
อุปกรณ์และจะถูกเปลี่ยนเป็นการตั้งค่าเหมือนซีดี
ถ้าสตริง
รวม 't' สำเนาของสตรีมจะถูกส่งไปยัง file descriptor 3
ถ้าสตริง
รวม 'N' แล้ว TCP จะไม่ถูกใช้สำหรับไฟล์นั้นแม้ว่าชื่อจะมี ":"

-l รวมจำนวนบรรทัดในสถิติ

-n NUM จำกัดจำนวนข้อมูลทั้งหมดไว้ที่ NUM. หากมีข้อมูลเพิ่มเติมก็จะ
ถูกทิ้ง, สตรีม จะออกเมื่อถึงขีดจำกัด ถ้ามีน้อย
อินพุตจะไม่ถึงขีด จำกัด และจะไม่มีสัญญาณผิดพลาด

NUM อาจมี 'k', 'm' หรือ 'g' ต่อท้าย ซึ่งหมายถึงกิโลไบต์ เมกะไบต์ หรือ
กิกะไบต์ (โดยที่ กิโล = 1024) สิ่งนี้ใช้กับตัวเลือกตัวเลขทั้งหมด

-p ชื่อไฟล์
เขียนรหัสกระบวนการของ cstream ไปที่ ชื่อไฟล์. หาก cstream ใช้ตัวเขียนแยกต่างหาก
กระบวนการ (ตัวเลือก -c) นี่คือ pid ของกระบวนการหลัก (ผู้อ่าน)

-t NUM จำกัดปริมาณงานของสตรีมข้อมูลไว้ที่ NUM ไบต์/วินาที ทำการจำกัดได้ที่
ด้านอินพุตคุณสามารถพึ่งพา cstream ไม่ยอมรับมากกว่าอัตรานี้ ถ้า
จำนวนที่คุณให้เป็นบวก cstream สะสมข้อผิดพลาดและพยายามรักษา
อัตราโดยรวมตามค่าที่ระบุสำหรับทั้งเซสชัน ถ้าคุณให้แง่ลบ
จำนวนนี้เป็นขีดจำกัดบนสำหรับคู่การโทรของระบบอ่าน/เขียนแต่ละคู่ กล่าวอีกนัยหนึ่ง:
ค่าลบจะไม่เกินขีดจำกัดนั้น ค่าบวกจะเกิน
มันจะทำให้ดีสำหรับการ underutilization ก่อนหน้านี้

-T NUM รายงานปริมาณงานทุก ๆ วินาที

-v NUM ตั้งระดับรายละเอียดเป็น NUM. โดยค่าเริ่มต้น จะมีการตั้งค่าเป็น 0 ซึ่งหมายความว่าไม่มีข้อความใดๆ
แสดงตราบใดที่ไม่มีข้อผิดพลาดเกิดขึ้น ค่า 1 หมายความว่าจำนวนข้อมูลทั้งหมด
และปริมาณงานจะแสดงเมื่อสิ้นสุดการรันโปรแกรม ค่า 2 หมายถึง
อัตราการถ่ายโอนตั้งแต่สิ้นสุดคู่การอ่าน/เขียนคู่แรกจะถูกรายงานด้วย
(มีประโยชน์เมื่อมีความล่าช้าเริ่มต้น) ค่า 3 หมายความว่าจะมี
แยกการวัดสำหรับอ่านและเขียน ตัวเลือกนี้สิ้นเปลืองทรัพยากรและ
ยังไม่ได้ดำเนินการในขณะนี้ ค่า 4 หมายถึงการสังเกตเกี่ยวกับแต่ละซิงเกิ้ล
อ่าน/เขียนจะปรากฏขึ้น ค่าสูงรวมถึงข้อความที่ต่ำกว่าทุกประเภท
ค่า

-V พิมพ์หมายเลขเวอร์ชันไปที่ stdout และออกด้วย 0

ชื่อไฟล์ ชื่อไฟล์เดียวเป็นอาร์กิวเมนต์สุดท้ายที่ไม่มีสวิตช์ตัวเลือกจะถูกใช้เป็น
ไฟล์อินพุตหากไม่ได้ใช้ -i

ซิกุสร์1

ซิกอินโฟ กำลังส่ง SIGUSR1 (หรือ SIGINFO ซึ่งมักจะจับคู่กับ Control-T บนแป้นพิมพ์ของคุณ)
เพื่อ cstream ทำให้แสดงอัตราปริมาณงานไปที่ stderr กระแสน้ำจะ
ดำเนินต่อไปราวกับว่าไม่มีอะไรเกิดขึ้น

ซิกุสร์2 ออกและรายงานอัตราปริมาณงาน หากมีการร้องขอ

ซิกอัพ ฉันพบว่าตัวเองส่ง SIGHUP โดยไม่ได้ตั้งใจบ่อยเกินไป แต่ละเลยหรือใช้งานในทางที่ผิด
SIGHUP ไม่ใช่ตัวเลือกสำหรับฉัน ดังนั้น เมื่อ สตรีม ได้รับ SIGHUP จะรอ 5
วินาทีสำหรับ SIGHUP อื่น เพื่อให้ผู้ใช้มีโอกาสแก้ไขข้อผิดพลาดที่อาจเกิดขึ้น
หากไม่ได้รับ SIGHUP เพิ่มเติม สตรีม ฆ่าตัวตายด้วย SIGHUP

ตัวอย่าง


สตรีม -o ไฟล์ tmp -v 1 -n 384m -i -
เขียนข้อมูลที่ไม่ระบุจำนวน 384 เมกะไบต์ลงในไฟล์ ไฟล์ tmp และแสดง verbose
อัตราปริมาณงาน สร้างเกณฑ์มาตรฐานที่ดี ความเร็วของ / dev / null แตกต่างกันมากเกินไปจาก
ระบบกับระบบ

สตรีม -i ไฟล์ tmp -v 1 -n 384m -o -
อ่านไฟล์เดิมกลับเข้าไปแล้วทิ้งข้อมูล

สตรีม -b 2000 -t 10000 / var / log / ข้อความ
จะแสดงไฟล์ด้วยความเร็วที่สามารถรับชมได้ไม่มากก็น้อย

กอง 0sf 400000 - / | สตรีม -v 1 -b 32768 -o /dev/rst0 -p ไฟล์ pid

ฆ่า -USR1 `แมว พิดไฟล์`
เขียนผลลัพธ์จาก กอง(1) เทป ทุกครั้งที่ส่งสัญญาณ อัตราการส่งข้อมูล
และอัตราข้อมูลจะแสดงขึ้น

สตรีม -t 176400 -i /dev/dsp0 -I f -o -
สร้างชนิดของโปรแกรมจำลองการ์ดเสียงที่อาจใช้ในการทดสอบแอปพลิเคชันเสียงที่
ต้องการสิ่งที่จะเขียนเพื่อจำกัดอัตราข้อมูลเหมือนการ์ดเสียงจริง นี้
เห็นได้ชัดว่าไม่ทำงานเมื่อแอปพลิเคชันพยายามเขียนข้อมูลโดยใช้ มม(2) และ
แอปพลิเคชันต้องละเว้นข้อผิดพลาดเมื่อพยายามตั้งค่าพารามิเตอร์การ์ดเสียงโดยใช้
ไอโอทีแอล(2)

สตรีม -t 176400 -i /dev/dsp0 -I f -o /dev/dsp1 -O f
โปรแกรมจำลองการ์ดเสียงที่คล้ายกัน ยกเว้นว่าจะช่วยให้คุณสามารถดึงข้อมูลของคุณ
แอปพลิเคชันส่งถึงมันจาก Fifo อื่น ๆ ในขณะที่ยังคงมีเวลาที่แม่นยำ

สตรีม -โอ้ -o /dev/dsp0 myhost.mydomain.com:17324
เชื่อมต่อพอร์ต 3333 บนโฮสต์ myhost.mydomain.com และข้อมูลใดก็ตามที่พบจะ
ถูกส่งไปยังการ์ดเสียงด้วยการตั้งค่าที่เหมาะสมสำหรับการเล่นสเตอริโอคุณภาพซีดี

สตรีม -i myaudiofile.raw -o : 17324
สิ่งนี้จะเปิดเซิร์ฟเวอร์ TCP บนพอร์ต 17324 และรอจนกว่าจะมีคนเชื่อมต่อ (for
ตัวอย่างบรรทัดคำสั่งจากตัวอย่างก่อนหน้านี้) จากนั้นมันก็จะส่งเนื้อหา
ของ myaudiofile.raw ลงในสตรีม TCP (สำหรับตัวอย่างเสียงก่อนหน้า โดยทั่วไปคือ a
ซีดีเพลงประกอบเหมือนกับที่คุณได้รับจากยูทิลิตี้ tosha หรือ cdparanoia)

สตรีม -โอดี -o ไฟล์ของฉัน

เขียนไฟล์ myfile ด้วย O_DIRECT นั่นมักจะหมายความว่าระบบไฟล์บัฟเฟอร์
แคชจะไม่พยายามแคชไฟล์นี้ คุณสามารถใช้เพื่อป้องกันการคัดลอก
การดำเนินการจากการกินหน่วยความจำกายภาพ โปรดทราบว่าเมื่อ cstream พบ a
ข้อผิดพลาดในการเขียน มันจะเปลี่ยนไฟล์เอาต์พุตจาก O_DIRECT เป็นไฟล์ปกติและเขียน
บล็อกเพิ่มเติมทั้งหมดโดยไม่มี O_DIRECT หากเขียนโดยไม่มี O_DIRECT สำเร็จ ในทางปฏิบัติ
ที่มักจะหมายความว่าบล็อกสุดท้ายของคุณถ้าไม่ใช่หลายบล็อกระบบไฟล์
ขนาดจะยังคงถูกเขียนลงในไฟล์ (จำนวนข้อมูลที่เขียนสูงสุด
หากไม่มี O_DIRECT จะเป็นขนาดบล็อกของคุณลบหนึ่ง) ด้วยวิธีนี้ cstream ช่วยให้มั่นใจได้ว่า
ไฟล์เอาท์พุตมีความยาวของอินพุต ไม่ว่าความยาวจะคี่หรือไม่ก็ตาม
ข้อ จำกัด ที่ระบบปฏิบัติการของคุณวางไว้บนเอาต์พุต O_DIRECT อีกครั้ง cstream จะ *ไม่* pad
เอาต์พุตไปยังขนาดบล็อก คุณจะได้ไฟล์และขนาดไฟล์เท่ากันราวกับว่าไม่ได้ใช้
O_DIRECT โดยต้องเสียค่าใช้จ่ายในการเปลี่ยนเป็น non-O_DIRECT ทุกครั้งที่มีการบล็อกไม่ถูกต้อง
ขนาด.

สตรีม -i : 3333 | dd อ็อบ=8192 | ./cstream -omyfile -v7 -โอดี
นี่คือสิ่งที่คุณต้องทำเพื่อบัฟเฟอร์อินพุต TCP เพื่อที่ cstream สุดท้ายจะไม่
เปลี่ยนจาก O_DIRECT ก่อนเวลาอันควรเนื่องจากการอ่านสั้นๆ หากข้อมูลของคุณทำได้
การอ่านแบบสั้น (เช่น จาก TCP) และคุณต้องการให้แน่ใจว่า O_DIRECT ยังคงมีผลบังคับ
คุณต้องมีบัฟเฟอร์ระหว่างสตรีม TCP และสตรีม O_DIRECT ตั้งแต่ cstream
ยังไม่สนับสนุนขนาดบล็อกอินพุตและเอาต์พุตที่แตกต่างกัน dd เหมาะสำหรับที่นี่
โปรดทราบว่านี่จำเป็นต่อเมื่อระบบปฏิบัติการต้องการระบบไฟล์ทวีคูณ
ขนาดบล็อกสำหรับ O_DIRECT ในขณะที่เขียนนี้ โครงสร้างนี้จำเป็นใน
Linux สำหรับใช้สตรีม TCP กับ O_DIRECT แต่ไม่จำเป็นต้องใช้ใน FreeBSD

สตรีม -กระดูก -o ไฟล์ของฉัน
เขียนไฟล์ myfile ด้วย O_SYNC ซึ่งหมายความว่าตามเวลาที่ระบบเรียกกลับมา
เป็นที่ทราบกันว่าข้อมูลอยู่บนดิสก์ นี่ไม่ใช่สิ่งเดียวกับ O_DIRECT O_DIRECT
สามารถบัฟเฟอร์ได้เอง โดย O_SYNC จะไม่มีการบัฟเฟอร์เลย ในช่วงเวลาของ
การเขียนนี้ O_SYNC บนทั้ง Linux และ FreeBSD ช้ามาก (1/5 ถึง 1/10 ของ
การเขียนปกติ) และ O_DIRECT นั้นเร็วพอสมควร (1 ใน 4 ถึง 1/2 ของการเขียนปกติ) คุณ
สามารถรวม O_SYNC และ O_DIRECT เข้าด้วยกัน

ข้อผิดพลาด


รหัสออก 0 หมายถึงความสำเร็จ

รหัสออก 1 หมายถึงข้อผิดพลาดในการใช้ไวยากรณ์ของบรรทัดคำสั่ง

รหัสออก 2 หมายถึงข้อผิดพลาดอื่นๆ โดยเฉพาะข้อผิดพลาดของระบบ

Bugs


ควรมีตัวเลือกให้เริ่มเขียนโดยตรงหลังจากการอ่านครั้งแรกสิ้นสุดลงแล้วจึงเติม
บัฟเฟอร์ที่มีการอ่านในพื้นหลัง ตอนนี้การเขียนจะไม่เริ่มก่อนผู้อ่าน
ได้เติมบัฟเฟอร์จนเต็มเป็นครั้งแรก

ไม่ใช่ข้อบกพร่อง: รหัสสำหรับทำ O_DIRECT นั้นซับซ้อนพอสมควร ก็จะกลับมาเป็นปกติ
I/O เกี่ยวกับข้อผิดพลาด แต่ก่อนที่จะทำนั้นมันรู้เรื่องทั้งข้อกำหนดของระบบไฟล์การบล็อก
(ค่าเริ่มต้น I/O จะบล็อกขนาดที่ระบบไฟล์ของไฟล์ที่ส่งออกอยู่) และ page
ข้อกำหนดการจัดตำแหน่ง (I/O จะเกิดขึ้นจากบัฟเฟอร์ที่จัดหน้า) อย่างไรก็ตาม
การรวมกันของการอ่าน/เขียนพร้อมกัน (ตัวเลือก -c) และ O_DIRECT ยังไม่ได้รับการทดสอบเกินกว่า
การตรวจสอบขั้นพื้นฐานว่าได้รับการทดสอบที่ถูกต้อง

ใช้ cstream ออนไลน์โดยใช้บริการ onworks.net



โปรแกรมออนไลน์ Linux และ Windows ล่าสุด