Cách đây một thời gian, tôi đã thiết lập một dịch vụ systemd để chạy sau khi mạng trực tuyến theo tài liệu.
Đây là tập tin đơn vị:
[Đơn vị]
Mô tả=Làm mới danh sách nhân bản Pacman với Reflector.
Tài liệu=https://wiki.archlinux.org/index.php/Reflector
Muốn=mạng-online.mục tiêu
Sau=mạng-online.đích nss-lookup.đích
[Dịch vụ]
Loại=oneshot
ExecStart=/usr/bin/reflector @/etc/xdg/reflector/reflector.conf
CacheDirectory=phản xạ
CapabilityBoundingSet=~CAP_SETUID CAP_SETGID CAP_SETPCAP CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_CHOWN CAP_FSETID CAP_SETFCAP CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_IPC_OWNER CAP_NET_ADMIN CAP_SYS_TIME CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_AUDIT_WRITE CAP_KILL CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYS_RESOURCE CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_BOOT CAP_LINUX_IMMUTABLE CAP_IPC_LOCK CAP_SYS_CHROOT CAP_BLOCK_SUSPEND CAP_LEASE CAP_SYS_PACCT CAP_SYS_TTY_CONFIG CAP_WAKE_ALARM
Môi trường=XDG_CACHE_HOME=/var/cache/reflector
LockPersonality=true
MemoryDenyWriteExecute=true
NoNewPrivileges=true
Thiết bị riêng tư=true
RiêngTmp=true
Người dùng riêng tư=true
ProtectClock=true
ProtectControlGroups=true
ProtectHome=true
ProtectHostname=true
ProtectKernelTunables=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectSystem=nghiêm ngặt
ReadOnlyPaths=/etc/xdg/reflector/reflector.conf
ReadWritePaths=/etc/pacman.d/mirrorlist
XóaIPC=true
RestrictAddressFamilies=~AF_AX25 AF_IPX AF_APPLETALK AF_X25 AF_DECnet AF_KEY AF_NETLINK AF_PACKET AF_RDS AF_PPPOX AF_LLC AF_IB AF_MPLS AF_CAN AF_TIPC AF_BLUETOOTH AF_ALG AF_VSOCK AF_KCM AF_UNIX AF_XDP
Hạn chếNamespaces=true
Hạn chếThời gian thực=true
Hạn chếSUIDSGID=true
SystemCallArchitectures=gốc
SystemCallFilter=@system-service
SystemCallFilter=~@resources @privileged
UMask=177
[Cài đặt]
WantedBy=multi-user.target
Mỗi tài liệu, dịch vụ phải được thiết lập chính xác để đợi kết nối mạng được thiết lập (tức là: Tôi đã đăng nhập, Trình quản lý mạng đã kết nối với WiFi và hệ thống đã được chỉ định một IP).
mạng-online.target
là mục tiêu tích cực đợi cho đến khi mạng "lên", trong đó định nghĩa "lên" được xác định bởi phần mềm quản lý mạng. Thông thường, nó chỉ ra một số loại địa chỉ IP có thể định tuyến, được định cấu hình. Mục đích chính của nó là chủ động trì hoãn việc kích hoạt các dịch vụ cho đến khi mạng được thiết lập.
Tôi cũng đã chắc chắn rằng NetworkManager-wait-online.service
được kích hoạt.
$ systemctl được kích hoạt NetworkManager-wait-online.service systemd-networkd-wait-online.service
kích hoạt
Vô hiệu hóa
Thay vì dịch vụ đợi bắt đầu cho đến khi kết nối internet được thiết lập, tôi thấy lỗi trên bảng điều khiển hệ thống gần như ngay khi tôi thấy lời nhắc đăng nhập của mình.
Ngày 05 tháng 7 07:40:02 tiện ích systemd[1]: Đang bắt đầu Làm mới danh sách nhân bản Pacman với Reflector....
Ngày 05 tháng 7 07:40:03 Bộ phản xạ tiện ích[564]: lỗi: không thể truy xuất dữ liệu mirrorstatus: URLError: <lỗi urlopen [Errno -3] Lỗi tạm thời trong phân giải tên>
Ngày 05 tháng 7 07:40:03 tiện ích systemd[1]:Reflector.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 7 07:40:03 tiện ích systemd[1]:Reflector.service: Không thành công với kết quả 'mã thoát'.
Ngày 05 tháng 7 07:40:03 tiện ích systemd[1]: Không thể bắt đầu Làm mới danh sách nhân bản Pacman với Reflector..
Vì nó phải đợi mạng trực tuyến và DNS khả dụng, tôi cũng đã kiểm tra trạng thái của NetworkManager-wait-online.service
, mạng-online.target
và nss-tra cứu.đích
:
$ systemctl status NetworkManager-wait-online.service
â NetworkManager-wait-online.service - Trình quản lý mạng Chờ trực tuyến
Đã tải: đã tải (/usr/lib/systemd/system/NetworkManager-wait-online.service; đã bật; giá trị đặt sẵn của nhà cung cấp: đã tắt)
Hoạt động: hoạt động (đã thoát) kể từ Thứ Hai 2021-07-05 07:40:02 CEST; 44 phút trước
Tài liệu: man:nm-online(1)
PID chính: 544 (mã=đã thoát, trạng thái=0/THÀNH CÔNG)
Nhiệm vụ: 0 (giới hạn: 38321)
Bộ nhớ: 0B
CPU: 0
Nhóm C: /system.slice/NetworkManager-wait-online.service
Ngày 05 tháng 7 07:40:02 tiện ích systemd[1]: Đang khởi động Trình quản lý mạng Chờ trực tuyến...
Ngày 05 tháng 7 07:40:02 tiện ích systemd[1]: Đã hoàn thành Trình quản lý mạng Chờ trực tuyến.
$ systemctl status mạng-online.target
â network-online.target - Mạng đang trực tuyến
Đã tải: đã tải (/usr/lib/systemd/system/network-online.target; tĩnh)
Đang hoạt động: hoạt động kể từ Thứ Hai 2021-07-05 07:40:02 CEST; 1 giờ 5 phút trước
Tài liệu: man:systemd.special(7)
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
Ngày 05 tháng 7 07:40:02 tiện ích systemd[1]: Mạng mục tiêu đã tiếp cận đang Trực tuyến.
$ trạng thái systemctl nss-lookup.target
â nss-lookup.target - Tra cứu tên máy chủ và mạng
Đã tải: đã tải (/usr/lib/systemd/system/nss-lookup.target; tĩnh)
Đang hoạt động: không hoạt động (đã chết)
Tài liệu: man:systemd.special(7)
Tôi thấy lạ là NetworkManager-wait-online.service
báo cáo kết thúc ngay sau khi bắt đầu. Có cái gì khác tôi cần phải cấu hình? Đây có phải là lỗi trong NetworkManager và/hoặc nm-online không?
Tôi đã tìm các chủ đề tương tự và tìm thấy những câu hỏi sau, nhưng chúng không trả lời được vấn đề của tôi: