Làm cách nào để đảm bảo đóng cửa sổ Chromium bên phải từ dòng lệnh linux?


4

Tôi đang viết một tập lệnh bash nhỏ để mở một vài ứng dụng (một số cửa sổ chrome trong số các ứng dụng khác), chờ nhập liệu và với đầu vào chính xác sẽ đóng lại tất cả các ứng dụng đã mở.

Để chấm dứt các ứng dụng, tôi đã tìm ra hai cách khác nhau: bằng kill $PID hoặc vớiwmctrl -c <WIN>

Trong trường hợp của tôi, có một số cửa sổ crom mở (không chỉ các cửa sổ được khởi chạy bởi tập lệnh). Tiêu đề cửa sổ của chrome thay đổi với URL được truy cập, vì vậy trong mắt tôi sử dụng wmctrl -ckhông hữu ích lắm. Ngoài ra, nếu một cửa sổ khác (ví dụ như một phiên bản của Firefox) có độ nghiêng cửa sổ tương tự, thì nó cũng sẽ bị đóng.

Điều đó dẫn tôi đến killlệnh. Nhưng tôi không thể tìm ra cách xác định PID của Cửa sổ Chrome mà tôi muốn chấm dứt.

Tôi đã thử điều này:

pid=$(ps | grep chromium | cut -d " " -f1 | head -n1)
if [ -n "$pid" ]
    then
        echo "...Closing Chromium"
        kill -15 $pid
    else
        echo "...Chromium not found"
fi

nhưng nó sẽ đóng tất cả các cửa sổ Chromium.

Bất kỳ ý tưởng làm thế nào để xác định cửa sổ chrome mà tôi muốn giết?


4
Xem xét sử dụng pgrep -fmà bạn có thể sử dụng để xác định đúng quy trình / cửa sổ.
kenorb

2
chromium.org/developers/design-document/ Process-models , Bạn không thể đóng một tab bằng cách giết tiến trình. Quá trình này đại diện cho một renderer mà trình duyệt chính sử dụng thực hiện và rút ra một trang, mà nó thì bản vào màn hình
Blueberry - Vignesh4303

Câu trả lời:


1

Hãy thử dự án này: http://chromix.smblott.org/

bạn sẽ có thể chạy một cái gì đó như thế này sau đó:

chromix with https://www.facebook.com/ close

Hmm ... điều này có vẻ khá thông minh. Tuy nhiên, bạn nên mô tả phần mềm bạn muốn giới thiệu; câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi hoặc ngoại tuyến.
bwDraco

0

hướng dẫn bash nói:

       $!      Expands to the process ID of the most recently executed background (asynchronous) command.

vì vậy hãy lưu trữ tất cả các PID mong muốn của bạn trực tiếp sau khi bắt đầu quá trình crom. Có lẽ như thế này:

chromium & job1=$!
echo job1=$job1
#...
kill $job1

bash cũng có các mảng trong danh sách các PID ...


Đây là những gì tôi đã cố gắng, nhưng không may là không hoạt động. Tôi nghĩ lý do cho điều này là những gì Blue BlackBerry đã đề cập. Bạn không thể đóng một tab bằng cách giết quá trình. Cho đến bây giờ, tôi chỉ thành công trong việc tiêu diệt tất cả các cửa sổ Chrome từng được tạo hoặc không. Tôi nghĩ rằng tôi sẽ thử đổi tên cửa sổ với wmctrl -Tvà xem liệu tôi có thể đóng các cửa sổ đơn với hay khôngwmctrl -c
user430
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.