Tôi đã tìm thấy và sửa đổi một chút đoạn script sau, để theo dõi gửi thông báo
thông báo và kết xuất chúng trong một tệp.
#!/bin/bash
logfile=$1
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e Emergency -e notify -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
ts |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
Nếu tôi chạy thủ công:
thông báo thông báo thông báolog.txt
quá trình tiếp tục hoạt động trong một thời gian nhưng cuối cùng dừng lại. Nếu tôi thêm nó vào crontab như:
@reboot /path/to/file/notifylog /home/user/notifylog.txt
nó thực hiện một lần rồi dừng lại (hoặc nó chạy rất ít).
Tôi thậm chí đã thử thêm nó vào các ứng dụng khởi động như:
/path/to/file/notifylog /home/user/notifylog.txt
và cùng một kết quả. Các hoạt động sau đây khi được thực thi thủ công nhưng không phải từ crontab hoặc ứng dụng khởi động:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
chạm vào $logfile
trong khi đúng; làm /path/to/file/notifylog $logfile && break;xong
Tôi đã thêm vào systemd theo các bước sau:
sudo nano /lib/systemd/system/notifylog.service
sau đó tôi nói thêm:
[Đơn vị]
Mô tả=thông báo-gửi nhật ký
[Dịch vụ]
ExecStart=/path/to/file/notifylog
[Cài đặt]
WantedBy=multi-user.target
sau đó:
Sudo systemctl daemon-tải lại
Sudo systemctl bật thông báolog.service
Sudo systemctl bắt đầu thông báolog.service
Sudo systemctl status infolog.service
cái cuối cùng mang lại cho tôi:
â notifylog.service - nhật ký thông báo-gửi
Đã tải: đã tải (/lib/systemd/system/notifylog.service; đã bật; giá trị đặt sẵn của nhà cung cấp: đã bật)
Đang hoạt động: không hoạt động (đã chết) kể từ Thứ tư 2021-10-20 19:01:49 -03; 3 phút 52 giây trước
Quá trình: 364180 ExecStart=/path/to/file/notifylog (code=exited, status=0/SUCC>
PID chính: 364180 (mã=đã thoát, trạng thái=0/THÀNH CÔNG)
ngày 20 tháng 10 19:01:49 mymachine systemd[1]: Đã bắt đầu nhật ký thông báo-gửi.
ngày 20 tháng 10 19:01:49 mymachine notifylog[364186]: Không thể mở kết nối với bus phiên: Không thể tự động khởi chạy dbus-daemon mà không có $DISPLAY cho X11
ngày 20 tháng 10 19:01:49 mymachine systemd[1]: notifylog.service: Đã thành công.
Nó dường như không chạy.
Đối với điều này, tôi đã sửa đổi kịch bản một chút:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
chạm vào $logfile
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e Emergency -e notify -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
ts |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
CHỈNH SỬA: bây giờ tôi đã thêm nó vào systemd với tư cách là người dùng theo các bước sau
Đầu tiên, thêm tệp .service vào /home/user/.config/systemd/user
.
Sau đó thực hiện:
Sudo systemctl daemon-tải lại
systemctl --user kích hoạt notifylog.service
systemctl --user bắt đầu thông báolog.service
systemctl --user status notifylog.service
Điều này khởi động dịch vụ một cách chính xác, nhưng nếu tôi khởi động lại máy của mình,
systemctl --user status notifylog.service
đưa cho tôi:
â notifylog.service - nhật ký thông báo-gửi
Đã tải: đã tải (/home/user/.config/systemd/user/notifylog.service; đã bật; giá trị đặt sẵn của nhà cung cấp: đã bật)
Đang hoạt động: không hoạt động (đã chết)
Những gì tôi đang thiếu bây giờ?