Score:0

ฉันไม่สามารถรักษาสคริปต์ทุบตีให้คงอยู่ได้

ธง us

ฉันพบและแก้ไขสคริปต์ต่อไปนี้เล็กน้อย ซึ่งตรวจสอบ แจ้ง-ส่ง การแจ้งเตือนและทิ้งลงในไฟล์

#!/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; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
     ใช้งาน: ไม่ใช้งาน (ตาย)

สิ่งที่ฉันหายไปตอนนี้?

bac0n avatar
cn flag
คุณได้รับปัญหาเดียวกันกับ systemd?
kurokirasama avatar
us flag
ฉันกำลังมองหาวิธีการทำกับ systemd ... ลองครั้งแรก
kurokirasama avatar
us flag
@เบคอน มันใช้งานไม่ได้ :(
kurokirasama avatar
us flag
@ bac0n ฉันอัปเดตคำถามด้วยผลลัพธ์ของฉัน
Score:1
ธง us

สิ่งที่ได้ผลจนถึงขณะนี้คือการเปลี่ยนแปลง ต้องการโดย ส่วน:

[หน่วย]
คำอธิบาย=แจ้ง-ส่งบันทึก

[บริการ]
ExecStart=/path/to/file/notifylog
เริ่มใหม่ = เสมอ

[ติดตั้ง]
ต้องการโดย=default.target
Score:0
ธง cn

คุณไม่ควรแยกวิเคราะห์ dbus จอภาพ ในโหมดข้อความ ใช้งานได้ดีกว่า เจสัน:

#!/bin/bash

โคโพรก พี {
    exec busctl --user --json=short \
    --match="interface=org.freedesktop.Notifications,member=Notify" ตรวจสอบ
}

รูปแบบ='%s
แอป: %s\nไอคอน: %s\nสรุป: %s\nเนื้อหา: %s\n'

ในขณะที่อ่าน -ru ${P[0]}; ทำ
    mapfile -t < <( \
        jq '.payload.data[0,2,3,4]' <<< "$ตอบกลับ" \
    )
    printf "$format" "-- การแจ้งเตือน --" "${MAPFILE[@]}" | ท
เสร็จแล้ว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา