Hai id quá trình cho một thiết bị đầu cuối trong bash linux mint


0

Tôi đang chạy một bash terminal trong linux mint. Tôi muốn xem id quá trình của thiết bị đầu cuối đang chạy.

Vì vậy, tôi đã thử hai điều:

ps -C 'bash'

ls -l /proc/*/exe | grep bash

Cả hai điều này cho hai id quá trình. Có ai có thể giải thích lý do cho hai id quá trình này chỉ cho một thiết bị đầu cuối không? Làm thế nào để xác định id quá trình thực của thiết bị đầu cuối giữa hai?

Cảm ơn


2
Lưu ý rằng bash là shell - trình thông dịch lệnh - không phải là thiết bị đầu cuối. Nó là cha mẹ , chương trình rút ra đầu ra của bash trên màn hình, sẽ là thiết bị đầu cuối. Trong bash, các biến đặc biệt $$$PPID mở rộng thành các bộ vi xử lý của chính vỏ và cha của nó.
grawity

Câu trả lời:


2

Thiết bị đầu cuối không có ID quá trình.

Đó là các quy trình có ID quá trình, tất nhiên. Thiết bị đầu cuối có ID của riêng họ và bạn sẽ thấy chúng trong đầu ra của các công cụ như w, who, và trong TTY cột) ps. Nhưng đây không phải là ID quá trình.

Mối quan hệ giữa các quá trình và thiết bị đầu cuối không phải là 1: 1. Hơn nữa, như grawity chỉ ra, một vỏ Không phải là thiết bị đầu cuối . Một thiết bị đầu cuối là một thiết bị. Một vỏ là một chương trình. Các bash chương trình là một trình bao, có đầu vào và đầu ra (ít nhất là trong chế độ tương tác) được đọc và ghi vào một thiết bị đầu cuối thiết bị .

Thiết bị đầu cuối trên máy tính cá nhân Linux và Unices thường không thực , vật lý, thiết bị, cắm vào một cổng nối tiếp nào đó. Thay vào đó, họ là ảo thiết bị đầu cuối hoặc giả thiết bị đầu cuối. Cả hai đều là sản phẩm của trình giả lập thiết bị đầu cuối các chương trình.

  • Trong trường hợp thiết bị đầu cuối ảo, chương trình đó được nhúng vào nhân hệ điều hành (mặc dù đã có các động thái để thay đổi điều này) và nó không có ID tiến trình vì nó không phải là một quy trình riêng biệt.
  • Trong trường hợp thiết bị đầu cuối giả, có một quy trình quản lý phía "chính" của thiết bị và hiển thị nội dung của thiết bị đầu cuối theo cách thức nào đó. Thông thường nó là một chương trình GUI, chẳng hạn như xterm, lxterminal, konsole, gnome-terminal, hoặc là rxvt. (Ngoài ra, nó có thể là daemon SSH hoặc TELNET.) Những người này có ID tiến trình. Nhưng nó là thiết bị đầu cuối giả lập đó là quá trình, không phải thiết bị đầu cuối giả.

Tại sao bạn thấy hai bash quy trình: Bạn có hai bash các quá trình đang chạy. Nó đơn giản mà. Chúng không nhất thiết phải được liên kết với cùng một thiết bị đầu cuối, hoặc thậm chí với bất kỳ thiết bị đầu cuối nào. Một lần nữa, TTY cột trong đầu ra của ps sẽ cho bạn biết những gì thiết bị đầu cuối điều khiển mỗi quá trình có. (Thiết bị đầu cuối không có ID quy trình, nhưng theo cách nào đó, quy trình có ID thiết bị đầu cuối.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.