tường không phát đến các thiết bị đầu cuối GUI vào ngày 16.04


11

Tiêu đề tổng hợp nó lên. Chạy wall <<< "TEST"hiển thị thông báo trong bất kỳ TTY nào nhưng không hiển thị trong bất kỳ thiết bị đầu cuối GUI nào (được thử nghiệm với gnome-terminalsakura).

Tôi có một số tập lệnh theo dõi nhiệt độ và pin dựa vào walling tin nhắn và sau khi nâng cấp gần đây lên 16.04 tôi đã nhận thấy họ ngừng hoạt động trong GUI.

Tôi không thể xác định liệu đây có phải là lỗi hay thứ gì đó đang ngăn các tin nhắn được hiển thị trong GUI hay không.

Tôi nên tiến hành như thế nào ?

Thông tin bổ sung:

Chạy byobutrong một thiết bị đầu cuối gui không cho phép xem tin nhắn trên tường


2
Có thể liên quan đến askubuntu.com/questions/12654/... (nhìn vào xmessage, gxmessagehoặc notify-send)
Nick Weinberg

6
Tôi đã đọc nó sớm hơn ngày hôm nay. Vâng, hơi liên quan, nhưng phản đối lớn là 1) câu hỏi đó là từ 10.10, và tường đã hoạt động trong 14.04 2) các giải pháp được cung cấp không phù hợp với tôi. notify-send chỉ hoạt động cho các tin nhắn ngắn và chỉ trong GUI. wallrất thuận tiện khi sử dụng một lệnh cho tất cả các thiết bị đầu cuối, thay vì viết một cái gì đó cho tty VÀ cho gui VÀ cho tất cả các phiên khác có thể trên các phiên khác DISPLAY, vì vậy đây không phải là một thay thế rất tốt, ít nhất là
imho

Tôi đã có cùng một vấn đề gần đây trong 15,010. Im trên Ubuntu 16.04, và nó dường như hoạt động ở đây. có lẽ có một vấn đề trong một thư viện cơ bản. Có lẽ nhìn vào lệnh mesg nào? tắt máy -k 5 có hoạt động trên tất cả các thiết bị đầu cuối ảo không? Viết đúng chức năng? Tôi sẽ xem mã nguồn nếu tôi tìm thấy một máy khác không hoạt động. Tôi đoán nó là một vấn đề thư viện không gian người dùng.
j0h

1
@ j0h thực sự, vấn đề là do gnome-terminal. Nó được sử dụng để cập nhật hồ sơ đăng nhập, vì vậy, ví dụ nếu bạn chạy whotrong thiết bị đầu cuối gnome trước đó, tôi sẽ hiển thị tất cả các tab đang mở nhưng không còn nữa. Wall chỉ gửi tin nhắn đến những phiên cuối cùng cập nhật hồ sơ đăng nhập. Mate sử dụng thiết bị đầu cuối khác nhau theo mặc định. Tôi đã tìm ra điều này từ lâu nhưng thực sự chưa bao giờ đăng một câu trả lời. Sẽ làm như vậy tại một số điểm trong tuần này.
Sergiy Kolodyazhnyy

Tôi có một ý tưởng làm thế nào bạn có thể hack cái này: <br>
Stancu Mihai

Câu trả lời:


5

Do cách thức hoạt động của gnome-terminal, wallkhông đăng ký nó như một thiết bị đầu cuối. Một lời giải thích kỹ lưỡng hơn có thể được tìm thấy ở đây . Tôi cho rằng điều tương tự cũng đúng với sakura.

Dựa trên câu trả lời của Stancu Mihai , tôi đã tạo ra một kịch bản bắt chước cách thức wallthường hoạt động, bao gồm biểu ngữ có tên người dùng và dấu thời gian (sử dụng -n hoặc --nobanner để xóa biểu ngữ). Tập lệnh hiện không hỗ trợ đọc tin nhắn từ một tập tin.

Bạn có thể thay thế walllệnh bình thường bằng lệnh này bằng cách thêm bí danh vào ~/.bashrc:

echo 'alias wall="~/your/path/to/wall.sh"' >> ~/.bashrc

Ví dụ sử dụng:

$ wall "some message"

Broadcast message from username@hostname (pts/19) (Wed Mar 29 11:07:35 2017):

some message

$ wall -h

Usage:
 wall [options] [message]

Write a message to all users.

Options:
 -n, --nobanner          do not print banner
 -h, --help              display this help and exit

Tuyệt vời @danmou!
Stancu Mihai

1

Đúng là gnome-terminal nó không cập nhật hồ sơ đăng nhập, vì điều đó tôi cố gắng tìm ra một giải pháp khác:

  1. Hãy cùng tìm hiểu tất cả các thiết bị đầu cuối giả đang hoạt động
ps -ef | grep " pts/" | awk '{print $6}' | sort -u | tee terminals4message.txt

Điều này giúp bạn liệt kê tất cả các phiên thiết bị đầu cuối máy tính để bàn.

Một cách khác để gửi tin nhắn đến các phiên cuối của máy tính để bàn đang hoạt động

echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_number
  1. Đừng quên tty mè
ps -ef | grep " tty" | awk '{print $6}' | sort -u | grep -v "pts" | tee terminals4message.txt

Điều này giúp bạn liệt kê tất cả các phiên pty

  1. Gửi tin nhắn cho tất cả
cat terminals4message.txt | while read TTY_TO; do echo -e "SYSTEM MESAGE: $(date) - \n MESAJ" | sudo tee /dev/$TTY_TO 1>/dev/null
  1. Bây giờ, hãy kết hợp tất cả lại với nhau Bạn có thể tạo một tập lệnh đẹp để thay thế ứng dụng treo tường hiện tại của mình và tích hợp tất cả những thứ trên.
    Sau đó, bạn có thể thêm vào ~ / .bashrc alias wall="your_wall_replacement.sh" Bằng cách này, bạn không cần xóa tường hiện tại

Xin lỗi nếu có gì đó không đúng, vì ai đó đã không cho phép tôi tập trung vào chủ đề này ... nếu các bạn nhận thấy điều gì đó kỳ lạ xin vui lòng để lại nhận xét.

10 lần


Đây là một lót cho nó. Tôi đã thay thế awk bằng cắt để nó chỉ có một loại trích dẫn. ps -ef | grep -e " tty" -e " pts/" | tr -s " " | cut -d " " -f 6 | sort -u | while read TTY; do echo "MESSAGE" | tee /dev/$TTY 1>/dev/null; done
CJxD

0

Như những người khác đề xuất có nhiều phương pháp, tôi đặt ở đây một phương pháp trực tiếp (dễ dàng) hơn mà tôi đã tìm thấy (thông qua echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_number: thảo luận ở đây.)

echo "Your message" > /dev/pts/$terminal-no

Ở đây terminal-nocó thể được lấy từ thiết bị đầu cuối khác thông qua lệnh "tty".

tty

/dev/pts/12

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.