Tại sao thêm dấu ngoặc đơn xung quanh một tên quy trình?


19

Trên máy của tôi ( kiểm tra Debian ), khi tôi làm

ps aux | grep pam

tôi có được

orto        609  0.0  0.0  58532  2148 ?        S    08:06   0:00 (sd-pam)  
orto       5533  0.0  0.0  12724  1948 pts/1    S+   16:51   0:00 grep pam

(sd-pam)dường như một cái tên lạ cho một quá trình. Đọc diễn đàn này , tôi thấy rằng tên này được đặt theo mục đích của systemd. Trong mã nguồn chúng ta thấy

/* The child's job is to reset the PAM session on
 * termination */

/* This string must fit in 10 chars (i.e. the length
 * of "/sbin/init"), to look pretty in /bin/ps */
rename_process("(sd-pam)");

Điều đó có nghĩa là trông đẹp /bin/psvà tại sao phải chọn (sd-pam)và không chỉ sd-pamlà một cái tên? Đặt dấu ngoặc đơn xung quanh tên dường như chỉ ra rằng quá trình này có một cái gì đó đặc biệt như đối với một chuỗi nhân, vd [kintegrityd].


Bạn có ý nghĩa gì với "mục đích của việc này" là gì? Đó là một cái tên, nó có thể giống với những gì nó làm (SessionDestroy-PAM?).
kos

Tôi đã sửa đổi câu hỏi của tôi đưa nhận xét của bạn vào tài khoản.
Ortomala Lokni

Xin lỗi, tôi không hiểu bạn đang nói về dấu ngoặc đơn. Thành thật mà nói tôi không biết: theo điều này ps kèm theo tên kế toán của quy trình thành dấu ngoặc đơn và in ra rằng nếu quy trình được hiển thị đã được đổi tên nếu pskhông thể tìm thấy quy trình theo tên ban đầu của nó, tuy nhiên điều này tất nhiên không giải thích lý do tại sao điều này được thực hiện trong pammã nguồn, không liên quan gì ps.
kos

1
Có thể tôi đã đọc bình luận của @kos một cách có ý thức, nhưng tôi chỉ định nói rằng có lẽ để tránh mọi người tìm kiếm một cách vô ích cho một nhị phân gọi là sd-pam. Sau khi đọc ps đã sử dụng cú pháp chính xác tương tự, điều đó có thể có chủ ý. Chắc chắn sẽ có các công cụ liệt kê quy trình khác không thêm dấu ngoặc. ( systemd-cgls?)
sourcejedi

2
@kos: "sd" rất có thể là viết tắt của systemd, không phải là "hủy phiên".
intelfx

Câu trả lời:


15

Đặt dấu ngoặc đơn quanh tên dường như cho thấy quá trình này có gì đặc biệt

Có hai trường hợp:

  • (...)

Khi PID 1 khởi động nhị phân dịch vụ, đầu tiên nó sẽ tắt một tiến trình, sau đó điều chỉnh các tham số của tiến trình theo cấu hình dịch vụ và cuối cùng gọi execve () để thực thi quy trình dịch vụ thực tế. Trong khoảng thời gian giữa ngã ba và người thực thi, chúng tôi sử dụng PR_SET_NAME để thay đổi tên của quy trình thành tên sẽ bắt đầu, để dễ dàng ánh xạ điều này đến dịch vụ cuối cùng bắt đầu. Tuy nhiên, xin lưu ý rằng có giới hạn kích thước nghiêm ngặt đối với tên "comm" của anh ấy (tức là tên quy trình mà tôi được đặt với PR_SET_NAME, tức là một chương trình "hàng đầu"), có nghĩa là chúng tôi phải cắt bớt. Chúng tôi cắt bỏ phần đầu của chuỗi, vì thông thường hậu tố thú vị hơn (nếu không, tất cả các dịch vụ khác nhau của systemd sẽ xuất hiện dưới dạng "(systemd-)" - không đặc biệt hữu ích).

Xem https://lists.freedesktop.org/archives/systemd-devel/2016-April/036322.html

  • (sd-pam) là trường hợp đặc biệt

Nếu chúng tôi sinh ra một đơn vị có 'PAMName =' không trống, chúng tôi sẽ loại bỏ một quy trình con bên trong đơn vị, được gọi là '(sd-pam)', theo dõi phiên. Nó chờ quá trình chính thoát ra và sau đó kết thúc nó thông qua pam_close_session (3).


5

Điều đó có nghĩa là trông đẹp trong / bin / ps và tại sao phải chọn (sd-pam) và không chỉ là sd-pam như một tên? Đặt dấu ngoặc đơn quanh tên dường như cho thấy quá trình này có gì đặc biệt

Vâng, nó có một cái gì đó đặc biệt. Đây là một tên được tạo ra và không phải là tên của bất kỳ nhị phân hiện có. Nói cách khác, không có tệp "sd-pam" ở bất cứ đâu; quá trình này là một nhánh của PID 1.

Dấu ngoặc đơn có lẽ là để chỉ ra điều này.


Bạn có biết nếu có các quy trình khác sử dụng cùng một quy ước và nếu đây là một quy ước chuẩn?
Ortomala Lokni 04/07/2015

@OrtomalaLokni: Tôi không biết về bất kỳ quy ước nào để đặt tên cho các quy trình đó. Tuy nhiên, điều này không có nghĩa là không có quy ước.
intelfx 04/07/2015
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.