Có thể gắn thiết bị đầu cuối vào một quy trình đã chạy bằng cách sử dụng PID của nó theo cách tương tự như sử dụng fg
lệnh cho công việc không?
Có thể gắn thiết bị đầu cuối vào một quy trình đã chạy bằng cách sử dụng PID của nó theo cách tương tự như sử dụng fg
lệnh cho công việc không?
Câu trả lời:
Bạn có thể lấy mô tả tệp tiêu chuẩn của quy trình đó, vd stdout
:
tail -f /proc/<pid>/fd/1
# ls -la /proc/24510/fd/1 lrwx------ 1 root root 64 Oct 31 08:34 /proc/24510/fd/1 -> socket:[444026]
Có một vài lựa chọn ở đây. Một là chuyển hướng đầu ra của lệnh sang một tệp, sau đó sử dụng tail
để xem các dòng mới được thêm vào tệp đó trong thời gian thực.
Một tùy chọn khác là khởi chạy chương trình của bạn bên trong screen
, đó là một loại ứng dụng đầu cuối dựa trên văn bản. Các phiên màn hình có thể được đính kèm và tách rời, nhưng trên danh nghĩa chỉ được sử dụng cho cùng một người dùng, vì vậy nếu bạn muốn chia sẻ chúng giữa những người dùng.
Khác nếu bạn muốn bạn có thể theo dõi quá trình và xem những gì nó đang làm với strace
:
strace -e trace=open -p 22254 -s 80 -o output.txt
-p PID
: Đính kèm quy trình với quy trình ID ID quy trình và bắt đầu truy tìm.-s SIZE
: Chỉ định kích thước chuỗi tối đa để in (mặc định là 32).-o filename
: Viết đầu ra theo dõi vào tên tệp của tệp chứ không phải để sàng lọc (stderr).sudo
với strace để đính kèm vào một quy trình và sử dụng -o ~/output.txt
để tập tin được để lại trong thư mục nhà của bạn.
Bạn có thể sử dụng các lệnh được đưa ra dưới đây để đính kèm một quy trình đang chạy trên một thiết bị đầu cuối khác:
retty
(Trang nam: retty )reptyr
screen
Thí dụ:
screen -S PID
retty $(pgrep PID)
reptyr PID
sudo apt-get install retty
nhưng có một vài hạn chế với retty. Kiểm tra trang người đàn ông được đề cập trong câu trả lời.