2011-08-18 26 views
19

Khi tôi chạy PS một trong các đầu ra cột là TTY. Điều đó có nghĩa là gì? Đặc biệt, giá trị của "??" so sánh với "ttys000"?TTY có nghĩa là gì trong lệnh unix ps?

Tôi hỏi vì tôi có một chương trình Java thực hiện sort qua ProcessBuilder và khi chương trình này được chạy qua IDE (IntelliJ), quá trình này mất 5x ít hơn khi chạy dưới dạng một tệp thực thi bên ngoài IDE.

Trong mỗi trường hợp tôi chạy ps khi sắp xếp đang chạy và sự khác biệt duy nhất là IDE tạo ra một quá trình với TTY ?? trong khi bình tạo ra một quá trình với TTY của ttys000.

Trả lời

24

A TTY là một đầu cuối máy tính. Trong ngữ cảnh của ps, nó là thiết bị đầu cuối thực hiện một lệnh cụ thể.

Viết tắt là viết tắt của "TeleTYpewriter", là thiết bị cho phép người dùng kết nối với máy tính đầu.

Liên quan đến tình huống của bạn, bình tạo một thiết bị đầu cuối ảo có tên 'ttys000' nhưng IDE không gắn với thiết bị đầu cuối ảo để thực thi lệnh.

+0

Thú vị, vậy làm thế nào tôi có thể có bình thực hiện không được kết nối với thiết bị đầu cuối vì vậy tôi không nhận được hiệu suất trúng? – Zugwalt

+0

Bạn tách một quy trình khỏi thiết bị đầu cuối bằng cách thêm '&' vào dòng lệnh. Tôi sẽ ngạc nhiên nếu hit hiệu suất là kết quả của lệnh được gắn vào thiết bị đầu cuối, tuy nhiên. Tôi nghĩ rằng nhiều khả năng IDE đang thực hiện một số loại tối ưu hóa. Tôi rất mong được nghe về kết quả của bạn. –

+0

Ngay cả với & nó vẫn mất nhiều thời gian hơn và hiển thị trong ps với TTY của ttys000. Tuy nhiên khi tôi thực hiện các jar thông qua một chương trình java đơn giản trong IDE nó chạy tách ra và ngắn hơn. Tôi tự hỏi loại tối ưu hóa nó có thể là gì, và/hoặc nếu bản thân thiết bị đầu cuối OSX đang làm chậm mọi thứ xuống. – Zugwalt

2

Quy trình có thể (và thường là) được liên kết với "thiết bị đầu cuối điều khiển". Thiết bị đầu cuối này có thể là phần cứng ở cuối dòng nối tiếp hoặc nhiều khả năng ngày nay, là một phần mềm ảo tương đương. TTY được kế thừa từ quá trình cha mẹ. Nhiều khả năng IDE của bạn sẽ tự tách rời khỏi TTY của nó và khi bắt đầu bên ngoài chương trình java của bạn thừa hưởng TTY của vỏ của bạn.