คำตอบสำหรับสิ่งนี้ขึ้นอยู่กับว่าคุณใช้เชลล์ตัวไหน เปลือกหอยจำนวนมากมีecho
เป็นbuiltinความหมายคำสั่งว่ามันไม่ได้วางไข่กระบวนการแยกและด้วยเหตุนี้จะไม่ปรากฏในรายชื่อกระบวนการ อย่างไรก็ตามถ้าคุณพิมพ์/bin/echo
หรือ./echo
หรือปิดการใช้งาน builtins ด้วยenable -n echo
คำสั่งเชลล์จะไม่ใช้คำสั่ง builtin และจะใช้รุ่นไบนารีแทน สิ่งนี้จะปรากฏในรายการกระบวนการ
หากคุณใช้ไบนารีแทนที่จะเป็นเชลล์บิวด์อินคำสั่ง echo จะปรากฏขึ้นตราบใดที่มันใช้ในการย้ายข้อมูลไปยังบัฟเฟอร์ STDIN ของกระบวนการอื่น บัฟเฟอร์นี้มีขนาด จำกัด ดังนั้นหากมีข้อมูลมากกว่าที่จะใส่ลงในบัฟเฟอร์คำสั่ง echo จะต้องหยุดไปชั่วขณะหนึ่งจนกว่ากระบวนการอื่นจะสามารถอ่านข้อมูลบางส่วนจากบัฟเฟอร์ได้ สำหรับกรณีส่วนใหญ่ (เช่นสองตัวอย่างที่คุณให้ไว้ด้านบน) ช่วงเวลานี้จะเป็นไมโครวินาที หากคุณกำลังวางการถ่ายโอนข้อมูล SQL ขนาด 20MB ลงใน MySQL โดยใช้ echo สิ่งนี้อาจนานกว่านั้น ไม่ว่าเวลาจะสั้นแค่ไหนถ้าคุณใช้ไบนารี่แทนเชลล์บิวด์อินและใครบางคนเกิดขึ้นเพื่อให้ได้จังหวะที่ถูกต้องพวกเขาจะสามารถเห็นกระบวนการในรายการกระบวนการ
คุณสามารถหลีกเลี่ยงสิ่งนี้ได้โดยใส่ข้อมูลลับลงในไฟล์ (ด้วยสิทธิ์ที่เหมาะสม) และใช้ไฟล์เป็น STDIN ดังนี้:
mysql -u root -p < file_with_secret.sql