Điểm:0

Chạy dịch vụ Systemd sau Trình quản lý hiển thị

lá cờ cn

Tôi có một tập lệnh thay đổi một số cài đặt Gnome mà tôi muốn chạy khi khởi động.Bản thân tập lệnh hoạt động tốt khi tôi chạy thủ công, nhưng tôi gặp lỗi sau khi chạy dưới dạng dịch vụ systemd:

â startup-user.service - Dịch vụ khởi động
     Đã tải: đã tải (/etc/systemd/system/startup-user.service; đã bật; giá trị đặt sẵn của nhà cung cấp: đã bật)
     Hoạt động: không thành công (Kết quả: mã thoát) kể từ Thứ Bảy 2022-02-05 13:03:48 UTC; 21s trước
    Quá trình: 1948 ExecStart=/data/startup-user.sh (mã=đã thoát, trạng thái=1/THẤT BẠI)
   PID chính: 1948 (mã=đã thoát, trạng thái=1/THẤT BẠI)
        CPU: 22 mili giây

Ngày 05 tháng 2 13:03:48 debian systemd[1]: Bắt đầu Dịch vụ Khởi động.
Ngày 05 tháng 2 13:03:48 debian gsettings[1950]: không thể thực hiện các thay đổi đối với dconf: Không thể tự động khởi chạy D-Bus mà không có X11 $DISPLAY
Ngày 05 tháng 2 13:03:48 debian gsettings[1953]: không thể thực hiện các thay đổi đối với dconf: Không thể tự động khởi chạy D-Bus mà không có X11 $DISPLAY
Ngày 05 tháng 2 13:03:48 debian gsettings[1956]: không thể thực hiện các thay đổi đối với dconf: Không thể tự động khởi chạy D-Bus mà không có X11 $DISPLAY
Ngày 05 tháng 2 13:03:48 debian startup-user.sh[1959]: Lỗi kết nối: Không thể tự khởi chạy D-Bus mà không có X11 $DISPLAY
Ngày 05 tháng 2 13:03:48 debian systemd[1]: startup-user.service: Quá trình chính đã thoát, mã=đã thoát, trạng thái=1/THẤT BẠI
Ngày 05 tháng 2 13:03:48 debian systemd[1]: startup-user.service: Không thành công với kết quả 'mã thoát'.

Đây là tập tin kịch bản:

#!/bin/bash

gsettings đặt org.gnome.desktop.peripherals.touchpad cuộn tự nhiên sai
gsettings đặt org.gnome.desktop.peripherals.touchpad chạm để nhấp đúng
gsettings đặt org.gnome.settings-daemon.plugins.power kích hoạt môi trường xung quanh sai
cuộc gọi 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>'

Và đây là tệp đơn vị dịch vụ:

[Đơn vị]
Mô tả=Dịch vụ khởi động
Sau=graphical.target

[Dịch vụ]
Loại = đơn giản
ExecStart=/data/startup-user.sh
Người dùng=người dùng

[Cài đặt]
WantedBy=graphical.target

Đây là lần đầu tiên tôi làm việc với các dịch vụ systemd và tôi không biết nhiều về trình quản lý hiển thị hoặc bất kỳ thứ gì khác có liên quan ở đây, nhưng tôi cho rằng nếu dịch vụ của tôi bắt đầu sau đồ họa.mục tiêu, thì trình quản lý hiển thị sẽ được khởi động và tất cả các biến cần thiết sẽ được đặt. tôi cũng đã thử Sau=gdm.service, và tôi không chắc liệu tôi có nên có đồ họa.mục tiêu cho cả hai Sau =MuốnBy=, nhưng nếu tôi xóa nó khỏi MuốnBy= sau đó dịch vụ hoàn toàn không chạy.

Trong trường hợp bạn đang thắc mắc và/hoặc nó tạo ra sự khác biệt, thì đây là hệ thống trực tiếp mà tôi đang xây dựng Debian trực tiếp. Thay vì sử dụng phân vùng lưu trữ lâu dài, tôi muốn chạy tập lệnh này mỗi khi khởi động để nó có thể thực hiện một số cấu hình cơ bản. Tệp script nằm trên một phân vùng ext4 riêng biệt được gắn tại /dữ liệu, vì vậy tôi có thể sửa đổi tệp tập lệnh bất cứ khi nào tôi muốn thay đổi cài đặt.

Tôi đang làm gì sai? Cảm ơn!

Điểm:1
lá cờ fr

Vấn đề ở đây không chỉ là "trước/sau", mà còn là không phải tất cả các trạng thái là toàn cầu. Chỉ vì X11 đã được khởi động không có nghĩa là tất cả các quy trình sẽ tự động biết được $DISPLAY để sử dụng và điều tương tự cũng áp dụng cho địa chỉ ổ cắm D-Bus phiên. (Đặc biệt không phải khi bạn nhớ rằng có thể có nhiều phiên, mỗi phiên có một giá trị $DISPLAY khác nhau.) Thay vào đó, điều này được giới hạn trong cây quy trình bắt đầu với chính trình quản lý hiển thị và các phần tử con của nó.

(Dịch vụ hệ thống nói chung không có nghĩa là chọc ngoáy trong các phiên của người dùng.)

Các thành phần phiên phải do chính phiên chạy â thông qua XDG Autostart (sử dụng các tệp .desktop trong ~/.config/tự khởi động/ và vị trí /etc/xdg tương ứng) hoặc thông qua systemd người dùng dịch vụ (~/.config/systemd/người dùng) hoặc thông qua tập lệnh Xsession nếu X11 được sử dụng (~/.xprofile, ~/.xsession).Bằng cách đó, chúng luôn chạy vào đúng thời điểm và luôn kế thừa môi trường chính xác.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.