Câu trả lời cho điều này phụ thuộc vào loại vỏ bạn đang sử dụng. Nhiều vỏ có echo
như một BUILTIN lệnh có nghĩa là nó không đẻ trứng một quá trình riêng biệt và do đó sẽ không xuất hiện trong một quá trình niêm yết. Tuy nhiên, nếu bạn nhập /bin/echo
hoặc ./echo
hoặc nếu bạn vô hiệu hóa nội dung bằng enable -n echo
lệnh thì shell sẽ không sử dụng lệnh dựng sẵn của nó và sẽ sử dụng phiên bản nhị phân thay thế. Điều này sẽ hiển thị trong một danh sách quá trình.
Nếu bạn đang sử dụng nhị phân thay vì dựng sẵn shell, lệnh echo sẽ hiển thị miễn là nó cần để di chuyển dữ liệu vào bộ đệm STDIN của quy trình khác. Bộ đệm này có kích thước hữu hạn vì vậy nếu có nhiều dữ liệu hơn sẽ phù hợp với bộ đệm, lệnh echo sẽ phải chờ một lúc cho đến khi quá trình khác có thể đọc một số dữ liệu ra khỏi bộ đệm. Đối với hầu hết các trường hợp (chẳng hạn như hai ví dụ bạn đã đưa ra ở trên) khoảng thời gian này sẽ là micro giây. Nếu bạn tình cờ dán kết xuất SQL 20 MB vào MySQL bằng echo, thì điều này có thể lâu hơn. Cho dù thời gian có ngắn đến đâu, nếu bạn đang sử dụng nhị phân thay vì dựng sẵn shell và ai đó tình cờ nhận được thời gian vừa phải, họ sẽ có thể thấy quy trình trong danh sách quy trình.
Bạn có thể tránh điều này bằng cách đưa dữ liệu bí mật vào một tệp (có quyền phù hợp) và sử dụng tệp dưới dạng STDIN như thế này:
mysql -u root -p < file_with_secret.sql