คำถามติดแท็ก systemd

systemd เป็นอีกทางเลือกหนึ่งสำหรับ SystemV และ Upstart init daemons สำหรับ Linux มันมีวัตถุประสงค์เพื่อให้กรอบที่ดีกว่าสำหรับการแสดงการพึ่งพาบริการที่อนุญาตให้ทำงานได้มากขึ้นในแบบคู่ขนานที่เริ่มต้นระบบและเพื่อลดเปลือกค่าใช้จ่าย

2
วิธีดูล็อกแบบเต็มจากบริการสถานะ systemctl
systemctl status service-nameผมตรวจสอบสถานะการให้บริการกับ ตามค่าเริ่มต้นฉันเห็นเพียงไม่กี่แถวเท่านั้นดังนั้นฉันจึง-n50ต้องการดูเพิ่มเติม บางครั้งฉันต้องการที่จะเห็นบันทึกเต็มรูปแบบตั้งแต่เริ่มต้น มันอาจมี 1,000 แถว ตอนนี้ฉันตรวจสอบด้วย-n10000แต่มันก็ดูไม่เป็นระเบียบเรียบร้อย มีตัวเลือกในการตรวจสอบบันทึกการบริการ systemd แบบเต็มคล้ายกับlessคำสั่งหรือไม่
346 logs  systemd 

1
วิธีเขียนสคริปต์เริ่มต้นสำหรับ systemd
ฉันมีการ์ดกราฟิก 2 อันบนแล็ปท็อปของฉัน หนึ่งคือ IGP และอีกอย่างไม่ต่อเนื่อง ฉันได้เขียนเชลล์สคริปต์เพื่อปิดการ์ดกราฟิกแบบแยก ฉันจะแปลงเป็นสคริปต์ systemd เพื่อรันตอนเริ่มต้นได้อย่างไร

10
วิธีล้าง journalctl
ฉันไม่พบวิธีที่ปลอดภัยในการล้างบันทึก systemd ใน google ไม่มีใครรู้วิธีที่ปลอดภัยและเชื่อถือได้ที่จะทำเช่นนั้น? สมมติว่าฉันกำลังทดลองกับบางสิ่งและบันทึกของฉันเต็มไปด้วยข้อความแสดงข้อผิดพลาดต่างๆ ยิ่งกว่านั้นฉันกำลังแสดงบันทึกประจำวันของฉันบนเดสก์ท็อปโดยใช้ Conky ฉันไม่ต้องการเห็นข้อผิดพลาดเหล่านั้นเพราะพวกเขาเตือนฉันวันอันยิ่งใหญ่ที่ฉันแก้ไขสิ่งนี้ฉันอยากรู้สึกเหมือนเป็นคนใหม่หลังจากสยองขวัญนี้ ฉันคิดว่าทุกคนจะยอมรับว่านี่เป็นเหตุผลที่ถูกต้องในการล้างบันทึก: P

6
ข้อดี / ข้อเสียของการพุ่งพรวดและ systemd คืออะไร?
มันจะปรากฏsystemdเป็นร้อนใหม่initระบบในบล็อกเดียวกับพุ่งพรวดเป็นไม่กี่ปีที่ผ่านมา ข้อดี / ข้อเสียของแต่ละข้อคืออะไร? นอกจากนี้แต่ละระบบยังเปรียบเทียบกับระบบเริ่มต้นอื่น ๆ ได้อย่างไร
183 init  upstart  systemd 

2
ดู stdout / stderr ของบริการ systemd
ฉันสร้างไฟล์เซอร์วิส systemd อย่างง่ายสำหรับแอปพลิเคชันที่กำหนดเอง แอปพลิเคชั่นทำงานได้ดีเมื่อฉันเรียกใช้ด้วยตนเอง แต่ CPU ของฉันเต็มเมื่อใช้งานกับ systemd ฉันพยายามติดตามว่าปัญหาของฉันอยู่ที่ไหน แต่ฉันไม่รู้ว่าจะหาผลลัพธ์ได้จากที่ไหน นี่คือไฟล์บริการของฉัน: [Unit] Description=Syncs files with a server when they change Wants=network.target After=network.target [Service] ExecStart=/usr/local/bin/filesync-client --port 2500 WorkingDirectory=/usr/local/lib/node_modules/filesync-client Restart=always [Install] WantedBy=multi-user.target ตลอดทั้งแอปพลิเคชันฉันส่งออกไปยัง stdout และ stderr ฉันจะอ่านผลลัพธ์ของภูตของฉันได้อย่างไร แก้ไข: ฉันพบman systemd.execซึ่งกล่าวถึงStandardOutput=ตัวเลือก แต่ฉันไม่แน่ใจว่าจะใช้งานอย่างไร จากหน้าคน : StandardOutput= ควบคุมว่า file descriptor 1 (STDOUT) ของกระบวนการที่ดำเนินการเชื่อมต่ออยู่ ใช้เวลาหนึ่งของมรดก , …

1
การดำเนินการ chdir ก่อนที่จะเริ่มบริการ systemd
คำถาม: ฉันสามารถเริ่มกระบวนการด้วย systemd และกำหนดไดเรกทอรีการทำงานที่ฉันเลือกได้หรือไม่? systemdฉันมีบริการที่ฉันต้องการที่จะเริ่มต้นด้วย เมื่อเริ่มบริการนั้นฉันต้องการให้สามารถกำหนดไดเรกทอรีการทำงานปัจจุบันได้ ฉันรู้วิธีการทำเช่นนี้หากผมใช้แต่ฉันมีปัญหากับinitsystemd นี่คือสิ่งที่ฉันพยายามจะทำงาน บริการของฉัน ฉันสร้างยูทิลิตี้ง่าย ๆ ("listdir") เขียนเป็น Python และวางใน/opt/bin/listdir: #! /usr/bin/python import os print 'Current working directory: %s' % (os.getcwd()) ไฟล์กำหนดค่าของฉัน จากนั้นฉันสร้างlistdir.serviceไฟล์systemdและวางไว้ที่นี่/lib/systemd/system/listdir.service:: [Unit] Description=Test of listing CWD. [Service] ExecStartPre=chdir /usr/local ExecStart=/opt/bin/listdir StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target ปัญหา เมื่อฉันเรียกใช้systemctl start listdirบันทึกระบบของฉันจะบันทึกไดเรกทอรีราก ("/") เป็นไดเรกทอรีการทำงานปัจจุบัน แน่นอนฉันคาดว่าจะ/usr/localเป็นไดเรกทอรีปัจจุบันเนื่องจากฉันคิดว่าExecStartPreจะเปลี่ยนไดเรกทอรีก่อนเริ่มกระบวนการ เห็นได้ชัดว่าฉันจินตนาการว่าsystemdมันจะทำงานคล้ายกับเชลล์สคริปต์ (แม้ว่าฉันรู้ว่ามันไม่ใช่สคริปต์เชลล์) …
148 systemd 

2
systemd ใช้สคริปต์ /etc/init.d อย่างไร
ฉันเพียงแค่เปลี่ยนไปเดเบียน jessie wdmและสิ่งที่มากที่สุดทำงานโอเครวมทั้งผู้จัดการการแสดงผลกราฟิกของฉัน สิ่งนี้คือฉันไม่เข้าใจว่ามันทำงานอย่างไร เห็นได้ชัดว่า/etc/init.d/wdmสคริปต์ของฉันถูกเรียกเพราะเมื่อฉันใส่ไว้exitในนั้น wdm จะไม่เริ่ม แต่เมื่อฉันเปลี่ยนชื่อไดเรกทอรี /etc/rc3.d อีกทางหนึ่ง (runlevel เริ่มต้นของฉันเคยเป็น 3) แล้ว wdm ก็ยังคงเริ่มทำงาน ฉันไม่สามารถหาวิธีที่ systemd ค้นหาสคริปต์นี้และฉันไม่เข้าใจว่ามันทำอะไรกับสคริปต์ init.d อื่น ๆ ทั้งหมด systemd รัน init.d scrips เมื่อใดและอย่างไร ในระยะยาวฉันควรกำจัดสคริปต์ init.d ทั้งหมดหรือไม่

3
การเขียนไฟล์เซอร์วิสพื้นฐาน systemd
ฉันกำลังพัฒนาแอปพลิเคชั่น Nodejs ที่ผู้ใช้โต้ตอบผ่าน HTTP บนโลคอลโฮสต์ ในทางปฏิบัติไม่มีพารามิเตอร์ใด ๆ และ daemon แทบไม่มีการพึ่งพาและมันก็แค่ต้องการที่จะขึ้นตามเวลาเข้าสู่ระบบ ฉันต้องการติดตามสำนวนในแต่ละแพลตฟอร์มสำหรับสคริปต์เริ่มต้นและนั่นหมายถึงการพุ่งพรวดบน Ubuntu และ systemd บน Fedora มีแบบฝึกหัดที่ดีสำหรับการเขียนไฟล์ระบบ systemd หรือไม่? มี 'แนวปฏิบัติที่ดีที่สุด' ที่ต้องระวังหรือไม่? ฉันได้พบทรัพยากรเหล่านี้: หน้า Fedora wiki เกี่ยวกับ systemd บล็อกเกี่ยวกับการเขียนไฟล์ระบบ systemd Systemd บนวิกิพีเดีย ฉันส่วนใหญ่กำลังมองหา API ที่แปลกประหลาดเป็นข้อมูลอ้างอิงรวมถึงรูปแบบพื้นฐานที่ต้องติดตาม
103 services  systemd 

7
ทำให้สคริปต์ทำงานหลังจากเริ่มระบบเครือข่ายหรือไม่
ฉันค่อนข้างใหม่กับ systemd และฉันกำลังเรียนรู้สถาปัตยกรรมของมัน ตอนนี้ฉันกำลังพยายามหาวิธีที่จะทำให้เชลล์สคริปต์ที่กำหนดเองทำงาน สคริปต์นี้ต้องเรียกใช้หลังจากเลเยอร์เครือข่ายเริ่มต้นขึ้น ฉันใช้งาน Arch โดยใช้ systemd เช่นเดียวกับ netctl ip addr list > /tmp/ip.txtในการทดสอบผมเขียนสคริปต์ง่ายที่เพียงรัน ฉันสร้างไฟล์บริการต่อไปนี้สำหรับสคริปต์นี้ (/etc/systemd/system/test.service) [Unit] Description=test service [Service] ExecStart=/root/test.script [Install] WantedBy=multi-user.target ฉันเปิดใช้งานสคริปต์ด้วย systemctl enable test เมื่อรีสตาร์ทสคริปต์จะทำงานจริง ๆ แต่จะทำงานก่อนที่เครือข่ายจะเริ่มต้น กล่าวอีกนัยหนึ่งเอาต์พุตในip.txtไม่แสดงที่อยู่ IPv4 ที่กำหนดให้กับอินเทอร์เฟซหลัก ตามเวลาที่ฉันเข้าสู่ระบบที่อยู่ IPv4 ได้รับการกำหนดแน่นอนและการเชื่อมต่อเครือข่ายขึ้น ฉันคาดเดาว่าฉันสามารถแก้ไขจุดที่สคริปต์ทำงานโดยไปยุ่งกับWantedByพารามิเตอร์ แต่ฉันไม่แน่ใจว่าจะทำอย่างไร ใครช่วยชี้ฉันในทิศทางที่ถูกต้องได้ไหม

7
วิธี "เหมาะสม" เพื่อทดสอบว่าบริการกำลังทำงานอยู่ในสคริปต์หรือไม่
ปัญหาของฉัน: ฉันกำลังเขียนสคริปต์ทุบตีและในนั้นฉันต้องการตรวจสอบว่าบริการที่กำหนดทำงานอยู่หรือไม่ $ service [service_name] statusฉันรู้วิธีการทำด้วยตัวเองด้วย แต่ (โดยเฉพาะอย่างยิ่งตั้งแต่การย้ายไปยัง systemd) ที่พิมพ์ข้อความจำนวนมากที่ไม่ยุ่งยากในการแยกวิเคราะห์ ฉันสันนิษฐานว่ามีคำสั่งสำหรับสคริปต์ที่มีเอาต์พุตแบบง่ายหรือค่าส่งคืนที่ฉันสามารถตรวจสอบได้ แต่ Googling รอบ ๆ ให้ผลลัพธ์แบบ "โอ้เพียงแค่ps aux | grep -v grep | grep [service_name]" เท่านั้น นั่นเป็นวิธีปฏิบัติที่ดีที่สุดไม่ได้เหรอ? จะเกิดอะไรขึ้นถ้าอินสแตนซ์อื่นของคำสั่งนั้นกำลังทำงานอยู่ แต่ไม่ใช่สคริปต์ที่เริ่มต้นโดย SysV init หรือฉันควรปิดและทำให้มือสกปรกด้วย pgrep เล็กน้อย?

4
ฉันจะหาอินเตอร์เฟสเครือข่ายที่มีอยู่ได้อย่างไร
นี่เป็นเรื่องเกี่ยวกับ linux แต่ถ้าใครรู้วิธีการทั่วไป * น่าจะดี ฉันบูทระบบเมื่อวานนี้โดยเสียบสายอีเธอร์เน็ต "NetworkManager" ไม่ได้ติดตั้งดังนั้นเมื่อมันเริ่มฉันจึงไปหาชื่อของอินเตอร์เฟสอีเธอร์เน็ตด้วยifconfigเพื่อเริ่มไคลเอนต์ DHCP ด้วยตนเอง แต่มันไม่ได้แสดงอะไรอื่นนอกจากlo. NIC ถูกแสดงรายการผ่านlspciและโหลดเคอร์เนลไดรเวอร์ที่เหมาะสม ระบบปกติใช้ WiFi, wlan0และฉันจะจำชื่ออินเตอร์เฟซที่เป็น เมื่อฉันพยายามifconfig wlan0 up, wlan0ปรากฏ แต่เฉพาะชื่ออินเตอร์เฟซอีเธอร์เน็ตที่ฉันจะจำได้eth[N]และem[N]- ทั้งที่ทำงาน เอกสารนี้อ้างถึง "ชื่ออินเทอร์เฟซที่สามารถคาดเดาได้" แต่ไม่สามารถอธิบายสิ่งที่พวกเขาอาจกล่าวได้ง่าย มันอ้างถึงชิ้นส่วนของซอร์สโค้ดซึ่งบอกเป็นนัยถึงชื่อในกรณีนี้อาจถูกอนุมานได้จากบัส PCI และหมายเลขสล็อตซึ่งดูเหมือนว่ายุ่งยากซับซ้อนโดยไม่จำเป็น การค้นหารอบ ๆ ทำให้ฉันเชื่อว่าสิ่งนี้อาจถูกกำหนดโดยการsystemdใช้ร่วมกันudevแต่มีไฟล์เกือบ 100 ไฟล์/usr/lib/udev/rules.dและใช้เวลาหนึ่งชั่วโมงในการพิจารณาว่า (และถ้ามี) ไฟล์ปรับแต่ง systemd สำหรับเรื่องนี้ยังดูไร้สาระ นอกจากนี้ยังเป็นการดีที่จะทราบว่าพวกเขาพร้อมใช้งานไม่ใช่แค่ว่าพวกเขาจะตั้งชื่ออย่างไรดังนั้นฉันจึงสามารถแยกแยะปัญหาฮาร์ดแวร์ ฯลฯไม่ได้มีวิธีง่ายๆในการค้นหาชื่อของอินเตอร์เฟสเครือข่ายที่มีอยู่ บน linux?

2
ฉันจะแสดงข้อความบันทึกจากบูทก่อนหน้าภายใต้ CentOS 7 ได้อย่างไร
การดำเนินการjournalctlภายใต้ระบบ CentOS 7 เพียงพิมพ์ข้อความที่สร้างขึ้นหลังจากการบูตครั้งสุดท้าย คำสั่ง # journalctl --boot=-1 พิมพ์ Failed to look up boot -1: Cannot assign requested address และออกด้วยสถานะ 1 เปรียบเทียบกับระบบ Fedora ปัจจุบันฉันสังเกตว่า CentOS 7 ไม่มี/var/log/journal(และjournalctlไม่มีให้--list-boots) ดังนั้นคำถามของฉันวิธีการแสดงข้อความบันทึกที่เขียนก่อนวันบูตครั้งสุดท้าย หรืออาจจะต้องเปิดใช้งานฟังก์ชั่นนี้ใน CentOS 7 ( journalctlหน้ารายชื่อรายการ 'systemd 208' เป็นหมายเลขเวอร์ชั่น)

2
ประมวลผลด้วยชื่อแบบสุ่มที่ใช้ทรัพยากรเครือข่ายและ CPU อย่างมาก มีคนแฮ็คฉันหรือไม่
ใน VM บนผู้ให้บริการคลาวด์ฉันเห็นกระบวนการที่มีชื่อสุ่มแปลก ๆ ใช้ทรัพยากรเครือข่ายและ CPU ที่สำคัญ นี่คือลักษณะของกระบวนการจากpstreeมุมมอง: systemd(1)───eyshcjdmzg(37775)─┬─{eyshcjdmzg}(37782) ├─{eyshcjdmzg}(37783) └─{eyshcjdmzg}(37784) strace -p PIDผมติดอยู่กับขั้นตอนโดยใช้ นี่คือการส่งออกที่ผมเคยได้รับ: https://gist.github.com/gmile/eb34d262012afeea82af1c21713b1be9 การฆ่ากระบวนการไม่ทำงาน มีการคืนชีพอีกครั้ง (ผ่าน systemd?) นี่คือลักษณะจากมุมมองของ systemd ( จดบันทึกที่อยู่ IP แปลก ๆไว้ที่ด้านล่าง): $ systemctl status 37775 ● session-60.scope - Session 60 of user root Loaded: loaded Transient: yes Drop-In: /run/systemd/system/session-60.scope.d └─50-After-systemd-logind\x2eservice.conf, 50-After-systemd-user-sessions\x2eservice.conf, 50-Description.conf, 50-SendSIGHUP.conf, 50-Slice.conf, …

1
ตัวเลือก systemctl มีอะไรบ้างเพื่อ“ แสดงรายการหน่วยที่ล้มเหลวทั้งหมด”
systemctl ส่งคืนรายการของยูนิตไม่ว่าจะถูกโหลดใช้งานอยู่ย่อยและคำอธิบาย systemctl is-failed ส่งคืนรายการสถานะเท่านั้น ไวยากรณ์เพื่อส่งกลับรายละเอียดของหน่วยที่ล้มเหลวคืออะไร
65 systemd 

1
เกิดข้อผิดพลาดระหว่างการเริ่มต้นบนคอมพิวเตอร์องค์กรล่าสุด
หลังจากอัปเดตล่าสุดบางอย่างคอมพิวเตอร์ของฉันจะไม่บูทอีกต่อไป! นี่คือสิ่งที่ฉันสามารถตรวจสอบได้: นี่เป็นคอมพิวเตอร์ล่าสุดที่ให้ฉันโดย บริษัท ไอที มันมี Intel CPU ล่าสุด (รุ่น Skylake) คอมพิวเตอร์ใช้งาน Ubuntu 16.04 คอมพิวเตอร์บูตอย่างถูกต้องครั้งล่าสุดในเดือนมีนาคม ปัญหาน่าจะเกิดจากการอัพเดทซอฟต์แวร์หรือบั๊กฮาร์ดแวร์ ฉันมีคอมพิวเตอร์เครื่องอื่นที่ใช้ 16.04 ซึ่งมีซอฟต์แวร์เดียวกันกับที่ติดตั้ง (ฉันใช้apt-clone) และมันใช้งานได้ดี มันมีฮาร์ดแวร์ที่แตกต่างกัน (เช่น amd64 แต่ CPU ที่แตกต่าง, GPU ที่แตกต่างกัน ฯลฯ ) เคอร์เนลเริ่มทำงาน initrd ทำงานได้อย่างถูกต้อง เมื่อฉันบู๊ตด้วยหน้าจอเริ่มต้นในโหมดกราฟิกฉันจะได้รับพร้อมท์ให้ใส่รหัสผ่านสำหรับโวลต์ dm-crypt ของฉันและสิ่งสุดท้ายที่ฉันเห็นคือมันติดตั้งเรียบร้อยแล้ว แฮงค์เกิดขึ้นก่อนที่ฉันจะได้รับพรอมต์การเข้าสู่ระบบ เมื่อคอมพิวเตอร์แฮงค์มันเป็นการแฮงค์อย่างหนัก แม้Alt+ SysRqไม่ตอบสนอง เห็นได้ชัดว่า CPU ถูกตรึงที่ 100% เนื่องจากแฟน ๆ เปิดการระเบิดเต็มรูปแบบ ฉันยังมีเคอร์เนลที่ฉันใช้อยู่ก่อนที่จะรีบูตเครื่อง เมื่อฉันเลือกเคอร์เนลนี้ในเมนูด้วงฉันจะได้รับการล็อคเดียวกัน …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.