Thoát Google Chrome khỏi thiết bị đầu cuối


28

Có cách nào để google-chromebỏ thuốc, từ thiết bị đầu cuối, bên cạnh việc sử dụng killall google-chromekhông?
Tôi muốn có thể đóng nó từ một kịch bản mà không giết nó.


2
Có gì sai với giết?
Zoredache

1
@Zoredache Điều đó dẫn đến hành vi khác nhau khi thoát và Chrome sử dụng nhiều quy trình, một trong số đó (hộp cát) là root setuid.
Gilles 'SO- ngừng trở thành ác quỷ'

Câu trả lời:


12

Có lẽ wmctrlcó thể là một số trợ giúp. Bạn có thể sử dụng -ctùy chọn đóng cửa sổ một cách duyên dáng:

wmctrl -c chrome

Chuỗi chromeđược khớp với các tiêu đề cửa sổ. Lưu ý rằng cửa sổ có thể không đóng nếu một số thông báo bật lên (ví dụ: khi bạn mở nhiều tab).


1
Tùy chọn này hoạt động hoàn hảo, nhưng nó yêu cầu cài đặt wmctrl.
slybloty

wmctrl không thể đóng khay hệ thống "Ứng dụng Chrome". pkill -o chromemặc dù
Ken Sharp

26

Lệnh này thoát khỏi cây quy trình chrome một cách duyên dáng, trong tất cả các trình quản lý cửa sổ:

pkill --oldest chrome

hoặc nếu bạn thích:

/usr/bin/pkill --oldest --signal TERM -f chrome    

Chi tiết:

  • duyên dáng có nghĩa là: tránh nhìn thấy Google Chrome không tắt chính xác. Để repoen ... Chrome lần sau chrome bắt đầu
  • bẫy trình duyệt chrome (ví dụ: phiên bản 39.0.2171.95) và xử lý duyên dáng SIGTERM
  • báo hiệu một quá trình duy nhất, gốc của cây quy trình của chrome, do đó --oldest
  • SIGTERM15do đó giống như tín hiệu , do đó --signal TERM, hoặc bỏ qua nó SIGTERMlà tín hiệu mặc định
  • wmctrl hoạt động với Unity và một số người khác nhưng nó không hoạt động với tất cả các trình quản lý cửa sổ
  • wmctrl -c đóng một cửa sổ tại một thời điểm để đóng tất cả các cửa sổ chrome, bạn sẽ cần một cái gì đó như while wmctrl -c 'Google Chrome'; do sleep 0.2; done

1
Tôi giả sử tôi đang sử dụng một phiên bản cũ của pkill vì --oldestđây không phải là một tùy chọn: sử dụng -ocác tác phẩm.
Ken Sharp

các -flập luận để pkill không làm việc cho tôi. Tôi có một số quy trình khác đang chạy với quyền root có chữ chrome trong dòng lệnh của họ, vì vậy tôi chỉ bị từ chối cấp phép. Không có -f, nó hoạt động hoàn hảo mặc dù.
Brian Minton

Điều này vẫn khiến tôi thấy 'không tắt máy đúng cách'
xtrinch

Trong Ubuntu 18.04, làm cách nào tôi có thể thực hiện việc này ngay lập tức sau khi kích hoạt khởi động lại hoặc tắt máy?.
Jaime Hablutzel

1

Điều này làm việc cho tôi:

killall --quiet --signal 15 -- chrome

Lưu ý rằng tôi đang sử dụng một lệnh khá dài dòng để giữ cho nó có thể đọc được trong mã, tất nhiên bạn cũng có thể phát hành:

killall -q -15 chrome

1

Bật Mac OS X, sử dụng cái này thay thế

pkill -a -i "Google Chrome"

Những gì nó làm là tìm kiếm một quy trình Google Chrome và cũng giết tất cả các quy trình mẹ của nó.

Từ hướng dẫn sử dụng pkill

    -a          Include process ancestors in the match list.  By default, the
                current pgrep or pkill process and all of its ancestors are
                excluded (unless -v is used).
    -i          Ignore case distinctions in both the process table and the
                supplied pattern.

Theo câu trả lời của @ keith-cascio , bạn có thể cố gắng giết quá trình cũ nhất thay thế. Lưu ý rằng điều này đã không làm việc cho tôi.

pkill -o -i "Google Chrome"

0

thử:

kill -3 <pid_of_chrome>

Điều này sẽ gửi tín hiệu "QUIT" tới chrome, tùy thuộc vào trình quản lý cửa sổ của bạn, sẽ là những gì nó thường được gửi khi được yêu cầu đóng.


2
Điều này hoạt động giống như killhoặc killallnơi Chrome coi đó là sự cố và yêu cầu khôi phục.
slybloty

1
thử 15 thay vì 3, sau đó
Blackle Mori

6
Trên thực tế, SIGQUITthường không được gửi đến các ứng dụng khi được yêu cầu đóng (Tôi không biết bất kỳ WM nào làm điều này). WM_DELETE_WINDOWlà tiêu chuẩn.
Chris Down

2
@ blacklemon67 kill -15 <pid_of_chrome>đã làm những gì tôi đang tìm kiếm. Nhưng, google-chromecó nhiều pids và phải mất một vài lần cố gắng để có được cái đúng.
slybloty
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.