Cách đóng ứng dụng từ thiết bị đầu cuối giống như cách thoát ứng dụng đúng cách


9

Thông thường khi chạy ứng dụng trong môi trường đồ họa, khi tôi muốn đóng nó, tôi bấm Xvào góc trên cùng bên trái của cửa sổ hoặc đi đến File > Close.

Đôi khi tôi muốn đóng các chương trình này từ xa qua ssh từ thiết bị đầu cuối bằng dòng lệnh, bây giờ tôi sử dụng killlệnh nhưng tôi tự hỏi nó có giống như thoát khỏi ứng dụng đúng cách từ chính nó không.

Từ man killtín hiệu mặc định có vẻ là 15) SIGTERM, tín hiệu này sẽ báo cho ứng dụng tôi đang cố đóng để dọn dẹp, đóng tệp đang mở, lưu nội dung?

Có cách nào tốt hơn nếu tôi muốn làm điều đó từ thiết bị đầu cuối?


2
Cam ơn vi đa hỏi! Tôi đã học được điều gì đó chắc chắn sẽ có ích vào một lúc nào đó.
Oliphistic - phục hồi Monica

Câu trả lời:


9

Cách điển hình để đóng ứng dụng một cách duyên dáng là sử dụng kill -TERM 1234, ở đâu 1234là PID của cửa sổ. Tuy nhiên, vấn đề là các ứng dụng đồ họa được thiết kế để lắng nghe tín hiệu cụ thể từ chính máy chủ X, chứ không phải nghe TERMtín hiệu.

Điều đó có nghĩa là bạn sẽ cần một số loại tác nhân ở giữa bạn và máy chủ X để liên lạc mà bạn muốn gửi tín hiệu phù hợp. Tất nhiên bạn có thể viết một chương trình C, tuy nhiên có wmctrlchương trình tồn tại (không đáng ngạc nhiên được viết bằng C) thực hiện chính xác điều đó.

Cách sử dụng wmctrlrất đơn giản:

wmctrl -c :SELECT: # close window that will be selected with pointer
wmctrl -c :ACTIVE: # close currently active window
wmctrl -ic <numeric id> # close window with specific id in hex

Nó không được cài đặt theo mặc định, vì vậy hãy lấy nó với sudo apt-get install wmctrl

Có nhiều cách sử dụng wmctrlvượt xa việc đóng cửa sổ, vì vậy vui lòng xem thêm câu trả lời của tôi và Jacob Vlijm để biết ví dụ về các tập lệnh được sử dụng


2
Chỉ cần thêm vào đây wmctrl -lsẽ liệt kê tất cả các cửa sổ và cung cấp id số ở dạng hex trong cột đầu tiên. =)
Terrance

Cảm ơn bạn, hoạt động tuyệt vời với hầu hết các ứng dụng, nhưng với Deluge có một tùy chọn Minimize to tray on closewmctrl -csẽ chỉ đóng một cửa sổ, chứ không phải chính ứng dụng, nó sẽ tiếp tục được thu nhỏ vào khay.
Mike

3

Tôi nghĩ rằng nó đáng để thêm wmctrl -xlsẽ tạo ra kết quả như thế này:

0x03000001 -1 google-chrome.google-chrome  dcentore-pc Rybak - Google Play Music - Google Chrome
0x04600006  0 speedcrunch.Speedcrunch  dcentore-pc SpeedCrunch

Trong đó các xyêu cầu lớp cửa sổ sẽ ở đầu ra. Đây thường là cách dễ nhất để đóng cùng một chương trình mỗi lần. Sau đó, chúng ta chỉ có thể cung cấp lớp cửa sổ khi đóng nó:

wmctrl -xc speedcrunch.Speedcrunch

Ví dụ này sẽ đóng speedcrunch.

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.