ฉันพบและแก้ไขสคริปต์ต่อไปนี้เล็กน้อย ซึ่งตรวจสอบ แจ้ง-ส่ง
การแจ้งเตือนและทิ้งลงในไฟล์
#!/bin/bash
ไฟล์บันทึก = $1
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e urgency -e แจ้ง -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
ทส |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
ถ้าฉันเรียกใช้ด้วยตนเอง:
แจ้งล็อก แจ้งล็อก.txt
กระบวนการทำงานต่อไปชั่วขณะ แต่ในที่สุดก็หยุดลง ถ้าฉันเพิ่มลงใน crontab เช่น:
@reboot /path/to/file/notifylog /home/user/notifylog.txt
มันทำงานครั้งเดียวแล้วหยุด (หรือทำงานครั้งสุดท้ายน้อยมาก)
ฉันได้ลองเพิ่มลงในแอปพลิเคชันเริ่มต้นเช่น:
/path/to/file/notifylog /home/user/notifylog.txt
และผลลัพธ์เดียวกัน การทำงานต่อไปนี้เมื่อดำเนินการด้วยตนเอง แต่ไม่ใช่จาก crontab หรือแอปพลิเคชันเริ่มต้น:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
แตะ $logfile
ในขณะที่จริง; ทำ /path/to/file/notifylog $logfile && break;done
ฉันเพิ่มไปยัง systemd ด้วยขั้นตอนต่อไปนี้:
sudo nano /lib/systemd/system/notifylog.service
จากนั้นฉันก็เพิ่ม:
[หน่วย]
คำอธิบาย=แจ้ง-ส่งบันทึก
[บริการ]
ExecStart=/path/to/file/notifylog
[ติดตั้ง]
WantedBy=multi-user.target
แล้ว:
sudo systemctl daemon โหลดซ้ำ
sudo systemctl เปิดใช้งาน alertlog.service
sudo systemctl เริ่ม alertlog.service
sudo systemctl สถานะ alertlog.service
อันสุดท้ายให้ฉัน:
â alertlog.service - แจ้งเตือนส่งบันทึก
โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/notifylog.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
ใช้งานอยู่: ไม่ใช้งาน (ตาย) ตั้งแต่วันพุธที่ 2021-10-20 19:01:49 -03; 3 นาที 52 วินาทีที่แล้ว
กระบวนการ: 364180 ExecStart=/path/to/file/notifylog (รหัส=ออกแล้ว สถานะ=0/SUCC>
PID หลัก: 364180 (รหัส=ออก สถานะ=0/สำเร็จ)
20 ต.ค. 19:01:49 mymachine systemd[1]: เริ่มบันทึกการแจ้ง-ส่ง
20 ต.ค. 19:01:49 น. บันทึกการแจ้งเตือน mymachine[364186]: ไม่สามารถเปิดการเชื่อมต่อกับเซสชันบัส: ไม่สามารถเปิดใช้งาน dbus-daemon โดยอัตโนมัติโดยไม่มี $DISPLAY สำหรับ X11
20 ต.ค. 19:01:49 mymachine systemd[1]: alertlog.service: สำเร็จ
ดูเหมือนจะไม่วิ่ง
สำหรับสิ่งนี้ ฉันแก้ไขสคริปต์เล็กน้อย:
#!/bin/bash
logfile='/home/user/notifylog.txt'
rm -f $logfile
แตะ $logfile
dbus-monitor "interface='org.freedesktop.Notifications'" |\
grep --line-buffered "string" |\
grep --line-buffered -e method -e ":" -e '""' -e urgency -e แจ้ง -v |\
grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
grep --line-buffered -v '^\s*$' |\
ทส |\
xargs -I '{}' -d '\n' echo -e {} >> $logfile
แก้ไข: ตอนนี้ฉันเพิ่มไปยัง systemd เป็นผู้ใช้ด้วยขั้นตอนต่อไปนี้
ขั้นแรก ให้เพิ่มไฟล์ .service เข้าไป /home/user/.config/systemd/user
.
จากนั้นดำเนินการ:
sudo systemctl daemon โหลดซ้ำ
systemctl --user เปิดใช้งาน alertlog.service
systemctl --user start alertlog.service
systemctl -- สถานะผู้ใช้ alertlog.service
สิ่งนี้เริ่มบริการอย่างถูกต้อง แต่ถ้าฉันรีบูตเครื่อง
systemctl -- สถานะผู้ใช้ alertlog.service
ให้ฉัน:
â alertlog.service - แจ้งเตือนส่งบันทึก
โหลดแล้ว: โหลดแล้ว (/home/user/.config/systemd/user/notifylog.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
ใช้งาน: ไม่ใช้งาน (ตาย)
สิ่งที่ฉันหายไปตอนนี้?