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

Systemd เป็นการแทนที่สำหรับ init แบบคลาสสิคระหว่างการบู๊ต

6
เรียกใช้กระบวนการ Java จาก Systemd
ฉันพยายามรันเชลล์สคริปต์จาก systemd สคริปต์ทำงานได้ดีจากบรรทัดคำสั่ง สคริปต์ (runServer.sh) รันกระบวนการ Java และมีลักษณะดังนี้: #!/bin/bash java -jar -Dresources=/home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar "0" "Test" ข้างใน/usr/lib/systemd/system(หรือ/lib/systemd/system/บนระบบปฏิบัติการอื่น) ฉันได้สร้างไฟล์บริการ (myService.service): [Unit] Description=My Servers service [Service] ExecStart=/home/pruss/dev/ServerDeploy5-4.1/Server/runServer.sh User=root Type=oneshot [Install] WantedBy=multi-user.target ผลลัพธ์ Job for myService.service failed. See "systemctl status myService.service" and "journalctl -xn" for details. ฉันลอง: systemctl status myService.service Loaded: loaded (/usr/lib/systemd/system/myService.service; disabled) Active: …
16 linux  java  systemd 

6
systemctl เปิดใช้งานแตกต่างจาก systemctl start อย่างไร
ฉันใช้กล่อง Arch Linux (ล่าสุด, ทันสมัย) และพยายามให้ MySQL เริ่มบูต เมื่อติดตั้งแพ็คเกจ systemd ฉันมี systemctl และฉันสามารถทำสิ่งนี้ได้: systemctl start mysqld.service systemctl [stop|status|restart] mysqld.service มันใช้ได้ทั้งหมดและใช้งานได้ดีเมื่อฉันต้องการเริ่ม / หยุดด้วยตนเองอย่างไรก็ตามเมื่อมันเริ่มต้นด้วยการบูต (โดยใช้ 'เปิดใช้งาน' ที่ systemctl ฉันจะได้ผลลัพธ์ที่น่ารังเกียจ): [root@rudivarch ~]# systemctl enable mysqld.service Failed to issue method call: No such file or directory เห็นได้ชัดว่าเนื่องจากคำสั่งอื่น ๆ ใช้งานได้ดีฉันสับสนอย่างมากและใช้เวลาในขณะที่พยายามคิดออก ... สถานะ systemctl แสดงผลลัพธ์นี้: [root@rudivarch …

1
systemd สามารถตรวจจับและฆ่าโพรเซสที่หยุดทำงานได้หรือไม่?
ในขณะที่ทำงานกับโซลูชันที่ใช้การล็อกไฟล์ฉันเชื่อว่ารหัสของฉันกำลังจะหยุดชะงัก ฉันใช้ systemd เพื่อเริ่มกระบวนการในการเริ่มต้นระบบ การใช้ alarm (3) เป็นตัวเลือก แต่ฉันสงสัยว่ามีวิธีให้ systemd ตรวจจับกระบวนการที่หยุดทำงานและเริ่มต้นใหม่หรือไม่ ขณะนี้เพื่อหลีกเลี่ยงปัญหานี้ตอนนี้ฉันวางแผนที่จะดูเอาต์พุต journalctl และหากไม่เปลี่ยนแปลงตามระยะเวลาที่กำหนดฉันจะฆ่ากระบวนการผ่านเชลล์สคริปต์ เพียงแค่สงสัยว่ามีวิธีที่ดีกว่าในการตรวจสอบกระบวนการผ่าน systemd หรืออย่างอื่น

3
เหตุใด systemd จึงหยุดทำงานในระหว่างการรีบูต
1 จาก 10 ครั้ง systemd ค้างระหว่างรีบูต ฉันไม่เข้าใจเหตุผล ฉันควรดูที่สิ่งใดเพื่อแก้ไขปัญหา ฉันใช้ systemd v196 และไม่สามารถอัปเกรดเป็นรุ่น> = 198 ได้เพราะรุ่นหลังต้องใช้เคอร์เนลล่าสุด (พร้อมรองรับ cgroups) ซึ่งไม่สามารถอัพเดตได้ตามความต้องการของลูกค้า ฉันสงสัยว่ามีวิธีที่สมเหตุสมผลในการค้นหาสาเหตุของพฤติกรรมนี้และทำให้ systemd รีบูตระบบโดยไม่มีเงื่อนไข โปรดทราบว่าลิงก์นี้ไม่ได้ช่วย: http://freedesktop.org/wiki/Software/systemd/Debugging/#index2h1 ตามที่คุณสามารถอ่านได้ที่นี่: ปิดเครื่องไม่เสร็จสิ้น หากการรีบูตปกติหรือการปิดเครื่องไม่เสร็จสิ้นหลังจากรอสองสามนาทีวิธีการด้านบนเพื่อสร้างบันทึกการปิดระบบจะไม่ช่วยและจะต้องได้รับบันทึกโดยใช้วิธีการอื่น ตัวเลือกสองตัวเลือกที่มีประโยชน์สำหรับการแก้ไขข้อบกพร่องในการบูตสามารถใช้กับปัญหาการปิดระบบได้: use a serial console use a debug shell - not only is it available from early boot, it also stays active until late …
13 linux  systemd 

1
systemctl กำหนดเวลาการปิดระบบอย่างไร
เมื่อฉันพิมพ์shutdown -h +30Linux จะกำหนดการเปลี่ยนแปลงของระดับภายใน 30 นาที ใน Debian, คือการเชื่อมโยงสัญลักษณ์/sbin/shutdown /bin/systemctlการทดสอบของฉันแสดงให้เห็นว่าshutdownไม่ได้ใช้ค่าcronมิได้จับเวลา systemd การปิดระบบใช้งานได้systemdอย่างไร

1
วิธีการ logrotate ด้วย systemd?
ฉันรันแอปโหนดโดยใช้ systemd พร้อมไฟล์หน่วย สามารถดูบันทึกแอปได้โดยใช้journalctl -u example.comแต่บันทึกถูกตัดในบางจุดลบประวัติ (ซึ่งฉันต้องการสำหรับการดีบัก) ฉันจะกำหนดค่าการเข้าสู่ระบบการหมุนด้วย systemd เพื่อให้บันทึก app ของฉันได้รับการจัดเก็บไว้ในexample.com.log.1, example.com.log.2ฯลฯ ดังนั้นฉันสามารถสอบถามประวัติของ app ของฉันได้อย่างไร นี่คือไฟล์หน่วยของฉัน: ExecStart=/usr/bin/node keystone.js #Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=example.com User=user Group=user Environment=NODE_ENV=production [Install] WantedBy=multi-user.target

2
วิธีเริ่มบริการ systemd หลังจากผู้ใช้เข้าสู่ระบบและหยุดก่อนที่ผู้ใช้ออกจากระบบ
ฉันมี Fedora 23 Machine ฉันมีไดเร็กทอรี / ไฟล์ที่ซิงโครไนซ์สคริปต์ bash ที่ซิงโครไนซ์ไดเรกทอรีโลคัล / โฮมของฉันกับรีโมตไดเร็กทอรี (ในเครื่อง NAS) ฉันเรียกใช้ด้วยตนเอง แต่ฉันต้องการสร้างบริการ systemd และทำให้มีความยืดหยุ่นมากขึ้นเนื่องจากคนอื่น ๆ ใช้พีซีของฉันด้วยข้อมูลประจำตัวผู้ใช้ของตัวเองฉันต้องการทราบว่าเมื่อผู้ใช้เข้าสู่ระบบและเริ่มบริการของฉันหลังจากนั้น มีสิ่งที่ฉันสามารถทำได้จากไฟล์ systemd ของบริการของฉันหรือฉันจะต้องตรวจสอบว่าจากรหัสของฉันในสคริปต์หรือไม่ ฉันแค่ต้องแน่ใจว่าฉันสามารถเข้าถึงตัวแปรสภาพแวดล้อม (เช่น $ USER) และเรียกใช้เป็นบริการ แหล่งที่มาหลักของฉันคือการเชื่อมโยงเอกสารนี้https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html
10 linux  bash  fedora  systemd 

2
เพิ่มที่อยู่ IP แบบคงที่หลายรายการไปยังเซิร์ฟเวอร์ที่มี systemd-networkd
เรามีเซิร์ฟเวอร์ที่มีที่อยู่ IP หลายแห่ง เมื่อเร็ว ๆ นี้เราย้ายไปยัง systemd และเรายังต้องการ IP mutliple บนเซิร์ฟเวอร์นั้น ด้วย systemd-networkd เรามีปัญหาในการค้นหาตัวอย่างการกำหนดค่า ดังนั้นเราจึงใช้ bash script ในตอนท้ายของกระบวนการบูทเพื่อเพิ่ม ips ให้กับอินเตอร์เฟส บางคนสามารถให้ตัวอย่างการกำหนดค่า systemd-networkd สำหรับการเพิ่ม IP มากกว่าหนึ่งรายการในอินเทอร์เฟซเดียว
10 networking  ip  ipv4  systemd 

1
ปิด - บูต systemd ยาวงงงวยไม่ทราบว่าจะเริ่ม
ฉันเข้าใจว่าการแก้ไขเวลาบูตนานนั้นเกี่ยวข้องกับการวิเคราะห์ว่าต้องใช้เวลานานแค่ไหนในการบูตสิ่ง แต่ผลลัพธ์ของsystemd-analyze blameและsystemd-analyze plotทำให้ฉันงง ~ $ systemd- วิเคราะห์ การเริ่มต้นเสร็จสิ้นใน 12.557 วินาที (เฟิร์มแวร์) + 4.516s (ตัวโหลด) + 3.732s (เคอร์เนล) + 26.720s (userspace) = 47.526s ~ $ systemd- วิเคราะห์ตำหนิ | grep "\ s [1-9] * \." การตั้งค่าคีย์บอร์ด 8.989s 8.757s dev-sda2.device apparmor.service 6.055s บัญชี 4.948s-daemon.service 4.446s NetworkManager.service 3.383s gpu-manager.service 3.134s systemd-udevd.service 3.079s snapd.firstboot.service …

2
Systemd ไม่สามารถเริ่มสคริปต์?
ฉันมี BASH-script ฉันต้องการเริ่มทำงาน ระบบของฉันใช้งาน systemd ดังนั้นฉันจึงสร้างไฟล์. service พร้อมกับสิ่งที่ฉันคิดว่าเป็นข้อมูลที่จำเป็น: [Unit] Description=My Script After=network.target [Service] ExecStart=/home/myscript.sh [Install] WantedBy=multi-user.target ฉันใช้ systemctl เปิดใช้งานเพื่อ 'ลงทะเบียน' มันเป็นการรีบูตเครื่อง เมื่อบูตฉันบอกว่าสคริปต์ของฉันจะถูกประหารชีวิต แต่ฉันไม่สามารถเห็นข้อความใด ๆ ที่ ECHO ควรแสดงบนหน้าจอและไม่ได้เขียนบางสิ่งลงในไฟล์ตามที่ฉันเขียนไว้ในสคริปต์ นอกจากนี้มันไม่ได้เริ่มแอปพลิเคชันที่ควรจะเริ่ม สถานะ Systemctl บอกฉันว่าสคริปต์ทำงานและออกสำเร็จแล้ว ถึงกระนั้นสคริปต์ก็ไม่มีผล ถ้าฉันเรียกใช้สคริปต์จากเชลล์มันทำงานได้อย่างสมบูรณ์แบบ มีใครในพวกคุณรู้บ้างไหมว่าปัญหาของฉันคืออะไร?
9 systemd 

1
บริการ Systemd - สคริปต์ Python ภายในหน้าจอเมื่อบู๊ตเครื่อง
ฉันกำลังเรียกใช้สคริปต์ python ภายในเซสชันของหน้าจอผ่านสคริปต์นี้ใน rc.local: screen -L -dmS pi python /home/pi/truck/main2.py & แต่ฉันต้องการให้มันทำงานผ่าน systemd ดังนั้นฉันสามารถรีสตาร์ทได้หากสคริปต์ Python ขัดข้อง ฉันพยายามสร้างบริการใน /systemd/system/myscript.service [Unit] Description=myscript After=network.target [Service] Type=simple Restart=on-failure RestartSec=3 ExecStart=/usr/bin/screen -L -dmS pi python /home/pi/truck/main2.py [Install] WantedBy=multi-user.target แต่มันจะไม่เรียกใช้สคริปต์ของฉันภายในเซสชันหน้าจอหรือไม่ หากฉันได้รับรายการหน้าจอที่ใช้งานอยู่แสดงว่าเซสชันหน้าจอ "pi" นั้นตาย

1
ฉันจะทำให้ systemd-networkd เพิกเฉย DHCP ที่ส่งเส้นทางเริ่มต้นได้อย่างไร
ฉันต้องการ systemd-networkd ไม่สนใจเส้นทางเริ่มต้น / s ผลักโดย DHCP ในอินเทอร์เฟซเดียว การตั้งค่าการทำงานของฉันมี 3 อินเตอร์เฟสเครือข่าย ฉันมีหนึ่งไฟล์. network สำหรับแต่ละอินเตอร์เฟส: eth0) อินเทอร์เน็ต [Match] Name=eth0 [Network] DHCP=yes DNS=127.0.0.1 eth1) เครือข่ายทดสอบท้องถิ่น [Match] Name=eth1 [Network] Address=192.168.78.1/24 IPForward=ipv4 IPMasquerade=yes DHCPServer=yes [DHCPServer] PoolOffset=10 PoolSize=100 EmitDNS=yes DNS=192.168.78.1 eth2) การเชื่อมต่อเราเตอร์ VPN ไปยังเว็บไซต์หลัก [Match] Name=eth2 [Network] DHCP=ipv4 [Route] Gateway=10.3.10.1 Destination=10.100.102.0/24 Metric=0 [Route] Gateway=10.3.10.1 Destination=10.3.13.0/24 …

1
หยุดบริการ systemd เมื่อเริ่มต้นอีก
ฉันเขียนไฟล์ zram.service ง่ายๆที่จะตั้งค่าพื้นที่สว็อปบีบอัดสำหรับฉันเพื่อหลีกเลี่ยงการเคี้ยวดิสก์ของฉัน Zram มีลำดับความสำคัญสูงกว่าอุปกรณ์แลกเปลี่ยนอื่น ๆ ปัญหาคือเมื่อฉันพยายามจำศีลระบบของฉันมันจะเขียนสถานะของระบบเพื่อสลับซึ่งในกรณีนี้คือ zram และเนื่องจากเนื้อหาของหน่วยความจำหายไปเมื่อไฟฟ้าหายไปแน่นอนไม่ทำงาน วิธีแก้ปัญหาคือหยุด zram.service ของฉันก่อนที่จะเรียกใช้ systemctl hibernate และเริ่มอีกครั้งเมื่อระบบสำรอง เท่าที่ฉันได้พบว่า systemctl hibernate เริ่มต้น /lib/systemd/system/systemd-hibernate.service ฉันได้คัดลอกบริการนี้ไปยัง / etc / systemd / system / เพื่อแทนที่และฉันสามารถใช้งานได้โดยใช้ 'ExecStartPost =' stanza แต่ฉันคิดว่าต้องมีวิธีที่ดีกว่าในการหยุดบริการ systemd เมื่อบริการอื่น เริ่มต้นและกลับกัน แก้ไข: บริการ zram ที่ใช้งานได้บนระบบ Debian สำหรับผู้ที่สนใจ [Unit] Description=ZRAM swap Conflicts=hibernate.service [Service] Environment=ZRAM_MEM=1G Environment=ZRAM_CMPALGO=lz4 Environment=ZRAM_CMPSTREAMS=2 …

2
Ubuntu 16.04 ไม่สามารถใช้ systemctl ได้
ฉันมีเซิร์ฟเวอร์ Ubuntu 16.04 ตั้งแต่การรีสตาร์ทครั้งล่าสุด systemctl ไม่ทำงานอีกต่อไป ตัวอย่างเช่นถ้าฉันต้องการเริ่ม nginx ฉันได้รับข้อผิดพลาดต่อไปนี้: root@SERVER:/# systemctl start nginx Failed to start nginx.service: Unknown unit: nginx.service ผลลัพธ์เดียวกันสำหรับทุกบริการอื่น ๆ เพียง systemctl ให้ผลลัพธ์ต่อไปนี้: root@SERVER:/# systemctl Failed to list units: No such method 'ListUnitsFiltered' ขอบคุณ

0
เรียกใช้บริการ systemd ทุกครั้งที่ไม่มีผู้ใช้เข้าสู่ระบบ
ฉันมีบริการที่รันงานแบ็ตช์บนเครื่องแล็บจำนวนหนึ่ง เครื่องแล็บเป็นเครื่องเดสก์ท็อปและฉันต้องการเรียกใช้บริการเฉพาะในกรณีที่ไม่มีผู้ใช้ที่ล็อกอินอยู่นั่นหมายความว่า: เมื่อผู้ใช้เข้าสู่ระบบบริการควรจะหยุด เมื่อผู้ใช้คนสุดท้ายล็อกเอาต์ควรเริ่มบริการ แนวคิดปัจจุบันของฉันคือการใช้ Conflicts=แต่สิ่งนี้มีปัญหาจำนวนหนึ่ง: บริการจะไม่เริ่มขึ้นอีกเมื่อผู้ใช้คนสุดท้ายล็อกเอาต์ การเริ่มบริการด้วยตนเองจะนำไปสู่การออกจากระบบบังคับของผู้ใช้ทั้งหมด ฉันไม่ทราบวิธีการเรียกใช้บริการ instantiate (เช่นฉันต้องการ Conflicts=user@*.service ) ฉันจะกำหนดบริการ systemd ดังกล่าวโดยไม่มีปัญหาข้างต้นได้อย่างไร
1 systemd 

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