เมื่อไม่นานมานี้ฉันได้ตั้งค่าบริการ systemd ให้ทำงานหลังจากเครือข่ายออนไลน์ ตามเอกสาร.
นี่คือไฟล์หน่วย:
[หน่วย]
Description=รีเฟรช Pacman mirrorlist ด้วย Reflector
เอกสาร=https://wiki.archlinux.org/index.php/Reflector
ต้องการ=network-online.target
After=network-online.target nss-lookup.target
[บริการ]
Type=วันช็อต
ExecStart=/usr/bin/reflector @/etc/xdg/reflector/reflector.conf
CacheDirectory=ตัวสะท้อนแสง
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
สภาพแวดล้อม=XDG_CACHE_HOME=/var/แคช/ตัวสะท้อนแสง
LockPersonality=จริง
MemoryDenyWriteExecute=จริง
NoNewPrivileges=จริง
อุปกรณ์ส่วนตัว = จริง
PrivateTmp=จริง
PrivateUsers=จริง
ProtectClock=จริง
ProtectControlGroups=จริง
ProtectHome=จริง
ProtectHostname=จริง
ProtectKernelTunables=จริง
ProtectKernelLogs=จริง
ProtectKernelModules=จริง
ProtectSystem=เข้มงวด
ReadOnlyPaths=/etc/xdg/reflector/reflector.conf
ReadWritePaths=/etc/pacman.d/mirrorlist
ลบIPC=จริง
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
จำกัดเนมสเปซ=จริง
จำกัดเรียลไทม์=จริง
จำกัดSUIDSGID=จริง
SystemCallArchitectures=เนทีฟ
SystemCallFilter=@บริการระบบ
SystemCallFilter=~@resources @privileged
UMask=177
[ติดตั้ง]
WantedBy=multi-user.target
ต่อ เอกสารควรตั้งค่าบริการอย่างถูกต้องแล้วเพื่อรอการเชื่อมต่อเครือข่าย (เช่น ฉันเข้าสู่ระบบ NetworkManager เชื่อมต่อกับ WiFi และระบบได้รับการกำหนด IP)
network-online.target
เป็นเป้าหมายที่รอจนกว่าเครือข่ายจะ "ขึ้น" ซึ่งคำจำกัดความของ "ขึ้น" ถูกกำหนดโดยซอฟต์แวร์การจัดการเครือข่าย โดยปกติจะระบุที่อยู่ IP ที่กำหนดเส้นทางได้บางชนิด จุดประสงค์หลักคือการชะลอการเปิดใช้งานบริการจนกว่าเครือข่ายจะได้รับการตั้งค่า
ฉันยังแน่ใจว่า NetworkManager-รอออนไลน์บริการ
เปิดใช้งาน.
$ systemctl เปิดใช้งาน NetworkManager-wait-online.service systemd-networkd-wait-online.service
เปิดใช้งาน
พิการ
แทนที่จะรอบริการให้เริ่มทำงานจนกระทั่งมีการเชื่อมต่ออินเทอร์เน็ต ฉันเห็นข้อผิดพลาดบนคอนโซลระบบเกือบจะทันทีที่ฉันเห็นข้อความแจ้งการเข้าสู่ระบบ
05 ก.ค. 07:40:02 ระบบแกดเจ็ต systemd [1]: กำลังเริ่มต้นรีเฟรช Pacman mirrorlist ด้วย Reflector....
05 ก.ค. 07:40:03 ตัวสะท้อนแสงแกดเจ็ต [564]: ข้อผิดพลาด: ล้มเหลวในการดึงข้อมูลสถานะมิเรอร์: URLError: <ข้อผิดพลาด urlopen [Errno -3] ความล้มเหลวชั่วคราวในการแก้ไขชื่อ>
05 ก.ค. 07:40:03 โปรแกรมเบ็ดเตล็ด systemd [1]: ตัวสะท้อนแสง บริการ: ออกจากกระบวนการหลัก รหัส = ออก สถานะ = 1 / ล้มเหลว
5 ก.ค. 07:40:03 น. gadget systemd [1]: reflector.service: ล้มเหลวด้วยผลลัพธ์ 'exit-code'
5 ก.ค. 07:40:03 น. gadget systemd [1]: ไม่สามารถเริ่มรีเฟรช Pacman mirrorlist ด้วย Reflector..
เนื่องจากควรรอให้เครือข่ายออนไลน์และ DNS พร้อมใช้งาน ฉันจึงตรวจสอบสถานะของด้วย NetworkManager-รอออนไลน์บริการ
, network-online.target
และ nss-lookup.target
:
$ systemctl สถานะ NetworkManager-wait-online.service
â NetworkManager-wait-online.service - ตัวจัดการเครือข่ายรอออนไลน์
โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/NetworkManager-wait-online.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: ปิดใช้งาน)
ใช้งานอยู่: ใช้งานอยู่ (ออก) ตั้งแต่วันจันทร์ที่ 2021-07-05 07:40:02 CEST; 44 นาทีที่แล้ว
เอกสาร: man:nm-online(1)
PID หลัก: 544 (รหัส=ออก สถานะ=0/สำเร็จ)
งาน: 0 (จำกัด: 38321)
หน่วยความจำ: 0B
ซีพียู: 0
CGroup: /system.slice/NetworkManager-wait-online.service
05 ก.ค. 07:40:02 น. gadget systemd[1]: การเริ่มต้นตัวจัดการเครือข่ายรอออนไลน์...
05 ก.ค. 07:40:02 โปรแกรมเบ็ดเตล็ด systemd [1]: เสร็จสิ้น Network Manager Wait Online
$ systemctl สถานะ network-online.target
â network-online.target - เครือข่ายออนไลน์
โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/network-online.target; คงที่)
ใช้งานอยู่: ใช้งานตั้งแต่วันจันทร์ที่ 2021-07-05 07:40:02 CEST; 1 ชม. 5 นาทีที่แล้ว
เอกสาร: man:systemd.special(7)
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
05 ก.ค. 07:40:02 ระบบแกดเจ็ต systemd [1]: ถึงเป้าหมายแล้ว เครือข่ายออนไลน์
$ systemctl สถานะ nss-lookup.target
â nss-lookup.target - การค้นหาชื่อโฮสต์และเครือข่าย
โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/nss-lookup.target; คงที่)
ใช้งาน: ไม่ใช้งาน (ตาย)
เอกสาร: man:systemd.special(7)
มันทำให้ฉันแปลกที่ NetworkManager-รอออนไลน์บริการ
รายงานเสร็จสิ้นทันทีหลังจากเริ่มต้น มีอะไรอีกบ้างที่ฉันต้องกำหนดค่า? นี่เป็นข้อบกพร่องใน NetworkManager และ/หรือ nm-online หรือไม่
ฉันได้ค้นหาหัวข้อที่คล้ายกันและพบคำถามเหล่านี้ แต่พวกเขาไม่ได้ตอบคำถามของฉัน: