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.)
$$
và$PPID
mở rộng thành các bộ vi xử lý của chính vỏ và cha của nó.