Score:0

เรียกใช้บริการ Systemd หลังจากตัวจัดการการแสดงผล

ธง cn

ฉันมีสคริปต์ที่เปลี่ยนการตั้งค่า Gnome บางอย่างที่ฉันต้องการเรียกใช้เมื่อเริ่มต้นสคริปต์ทำงานได้ดีเมื่อฉันเรียกใช้ด้วยตนเอง แต่ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้เป็นบริการ systemd:

â start-user.service - บริการเริ่มต้น
     โหลดแล้ว: โหลดแล้ว (/etc/systemd/system/startup-user.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
     ใช้งานอยู่: ล้มเหลว (ผลลัพธ์: exit-code) ตั้งแต่วันเสาร์ 2022-02-05 13:03:48 UTC; 21s ที่ผ่านมา
    กระบวนการ: 1948 ExecStart=/data/startup-user.sh (รหัส=ออก, สถานะ=1/ล้มเหลว)
   PID หลัก: 1948 (รหัส=ออก สถานะ=1/ล้มเหลว)
        ซีพียู: 22ms

5 ก.พ. 13:03:48 debian systemd[1]: เริ่มบริการเริ่มต้น
5 ก.พ. 13:03:48 debian gsettings[1950]: ไม่สามารถยอมรับการเปลี่ยนแปลง dconf: ไม่สามารถเปิดใช้งาน D-Bus อัตโนมัติโดยไม่มี X11 $DISPLAY
5 ก.พ. 13:03:48 debian gsettings[1953]: ไม่สามารถยอมรับการเปลี่ยนแปลง dconf: ไม่สามารถเปิดอัตโนมัติ D-Bus โดยไม่มี X11 $DISPLAY
5 ก.พ. 13:03:48 debian gsettings[1956]: ไม่สามารถยอมรับการเปลี่ยนแปลง dconf: ไม่สามารถเปิดอัตโนมัติ D-Bus โดยไม่มี X11 $DISPLAY
5 ก.พ. 13:03:48 น. debian start-user.sh[1959]: เกิดข้อผิดพลาดในการเชื่อมต่อ: ไม่สามารถเปิดใช้งานอัตโนมัติ D-Bus โดยไม่มี X11 $DISPLAY
5 ก.พ. 13:03:48 น. debian systemd[1]: startup-user.service: ออกจากกระบวนการหลักแล้ว, รหัส = ออก, สถานะ = 1 / ล้มเหลว
5 ก.พ. 13:03:48 debian systemd[1]: startup-user.service: ล้มเหลวด้วยผลลัพธ์ 'exit-code'

นี่คือไฟล์สคริปต์:

#!/bin/bash

gsettings ตั้งค่า org.gnome.desktop.peripherals.touchpad natural-scroll false
gsettings ตั้ง org.gnome.desktop.peripherals.touchpad แตะเพื่อคลิกจริง
gsettings ตั้งค่า org.gnome.settings-daemon.plugins.power เปิดใช้งานสภาพแวดล้อมเป็นเท็จ
การโทร gdbus --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.freedesktop.DBus.Properties.Set org.gnome.SettingsDaemon.Power.Screen Brightness '<int32 100>'

และนี่คือไฟล์หน่วยบริการ:

[หน่วย]
คำอธิบาย=บริการเริ่มต้น
After=graphical.target

[บริการ]
ประเภท = ง่าย
ExecStart=/data/startup-user.sh
ผู้ใช้=ผู้ใช้

[ติดตั้ง]
WantedBy=graphical.target

นี่เป็นครั้งแรกที่ฉันได้ทำงานกับบริการ systemd และฉันไม่รู้มากนักเกี่ยวกับตัวจัดการการแสดงผลหรือสิ่งอื่นใดที่เกี่ยวข้องที่นี่ แต่ฉันคิดว่าถ้าบริการของฉันเริ่มทำงานหลังจาก graphical.targetจากนั้นตัวจัดการการแสดงผลควรเริ่มต้นและควรตั้งค่าตัวแปรที่จำเป็นทั้งหมด ฉันยังพยายาม After=gdm.serviceและฉันไม่แน่ใจว่าฉันควรจะมี graphical.target สำหรับทั้ง หลังจาก= และ ต้องการโดย=แต่ถ้าฉันลบมันออกจาก ต้องการโดย= แล้วบริการไม่ทำงานเลย

ในกรณีที่คุณสงสัยและ/หรือมันสร้างความแตกต่าง นี่คือระบบที่ใช้งานจริงที่ฉันกำลังสร้างอยู่ เดเบียนสด. แทนที่จะใช้พาร์ติชันถาวร ฉันต้องการเรียกใช้สคริปต์นี้ทุกครั้งที่บูตเครื่องเพื่อให้สามารถกำหนดค่าพื้นฐานได้ ไฟล์สคริปต์อยู่ในพาร์ติชัน ext4 แยกต่างหากที่ติดตั้งที่ /ข้อมูลดังนั้นฉันจึงสามารถแก้ไขไฟล์สคริปต์ได้ทุกเมื่อที่ต้องการเปลี่ยนการตั้งค่า

ผมทำอะไรผิดหรือเปล่า? ขอบคุณ!

Score:1
ธง fr

ปัญหาที่นี่ไม่ใช่แค่ "ก่อน / หลัง" เท่านั้น แต่ยังเป็นปัญหาอีกด้วย ไม่ใช่ทุกรัฐที่เป็นสากล เพียงเพราะ X11 เริ่มต้นไปแล้วไม่ได้หมายความว่ากระบวนการทั้งหมดจะได้รับความรู้โดยอัตโนมัติว่า $DISPLAY จะใช้อะไร และเช่นเดียวกันกับที่อยู่ซ็อกเก็ต D-Bus ของเซสชัน (โดยเฉพาะอย่างยิ่งเมื่อคุณจำไม่ได้ว่าอาจมี หลายรายการ แต่ละเซสชันมีค่า $DISPLAY ต่างกัน) แต่จะจำกัดเฉพาะโครงสร้างกระบวนการที่เริ่มต้นด้วยตัวจัดการการแสดงผลเองและลูกของมัน

(บริการระบบ โดยทั่วไป ไม่ได้หมายถึงการแหย่ในเซสชันของผู้ใช้)

ส่วนประกอบเซสชันควรถูกเรียกใช้โดยตัวเซสชันเอง â ผ่าน XDG Autostart (โดยใช้ไฟล์ .desktop ใน ~/.config/autostart/ และตำแหน่ง /etc/xdg ที่สอดคล้องกัน) หรือผ่าน systemd ผู้ใช้ บริการ (~/.config/systemd/user) หรือผ่านสคริปต์ Xsession หากใช้ X11 (~/.xprofile, ~/.xsession).ด้วยวิธีนี้พวกเขาจะทำงานในเวลาที่ถูกต้องและสืบทอดสภาพแวดล้อมที่ถูกต้องเสมอ

โพสต์คำตอบ

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