Như @varta đã chỉ ra, chủ sở hữu mosh rất chống lại việc kết nối lại từ các khách hàng khác nhau vì lý do bảo mật. Vì vậy, nếu khách hàng của bạn đã biến mất (ví dụ: bạn đã khởi động lại máy tính xách tay), tùy chọn duy nhất của bạn là giết các phiên.
Để chỉ xóa các phiên riêng lẻ, bạn có thể sử dụng dòng sau (mà tôi có làm bí danh trong số .bashrc
) của mình.
who | grep -v 'via mosh' | grep -oP '(?<=mosh \[)(\d+)(?=\])' | xargs kill
Đó chỉ huy phụ thuộc vào thực tế là who
danh sách kết nối với người sử dụng bao gồm cả phiên Mosh, phiên Mosh chỉ kèm theo có "qua Mosh", và rằng phiên Mosh có pid của họ trong dấu ngoặc vuông. Vì vậy, nó tìm thấy các pids cho chỉ các phiên mosh tách ra và vượt qua chúng để giết bằng cách sử dụng xargs.
Dưới đây là một ví dụ who
kết quả để tham khảo:
$ who
theuser pts/32 2018-01-03 08:39 (17X.XX.248.9 via mosh [193891])
theuser pts/17 2018-01-03 08:31 (17X.XX.248.9 via mosh [187483])
theuser pts/21 2018-01-02 18:52 (mosh [205286])
theuser pts/44 2017-12-21 13:58 (:1001.0)
Một cách khác là sử dụng biến môi trường MOSH_SERVER_SIGNAL_TMOUT
. Bạn có thể đặt nó thành một cái gì đó như 300 trong .bashrc
của bạn. Sau đó, nếu bạn thực hiện pkill -SIGUSER1 mosh-server
, nó sẽ chỉ giết các máy chủ mosh chưa được kết nối trong 300 giây qua (những người khác sẽ bỏ qua SIGUSER1). Thông tin thêm trong số mosh-server man page. Tôi đang sử dụng lệnh trên bởi vì, một khi đã được đặt tên, nó có vẻ đơn giản hơn với tôi.
Lưu ý, như đã đề cập bởi @Annihilannic, nếu bạn đang sử dụng tmux/màn hình bên trong các phiên mosh của bạn thì các phiên tmux/màn hình đó vẫn còn xung quanh sau khi bạn giết các phiên mosh. Vì vậy, bạn vẫn có thể đính kèm với họ (vì vậy bạn thực sự không mất nhiều bằng cách giết chết các phiên mosh mình).
tự hỏi tại sao Mosh không chỉ tự mình giết nó thay vì đưa ra cảnh báo ... – artfulrobot
@artfulrobot Vì có cơ hội là phiên tách ra thuộc về một khách hàng thân thiết vẫn còn sống ở đâu đó. Các phiên Mosh đi lang thang và có thể tồn tại thông qua việc tạm ngưng/tiếp tục (ví dụ: chu kỳ "Ngủ đông"). Vấn đề mosh không (và không thể dễ dàng) giải quyết là phát hiện ra rằng máy khách đã khởi động lại mà không cần đóng phiên mosh một cách duyên dáng. – binki
Có lý do nào để không 'killall mosh-server' thay thế? Đặc biệt là kể từ khi pidof và killall thực sự là cùng một điều. – Jordan