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

systemd เป็นการแทนที่ที่ทันสมัยสำหรับ init Linux แบบดั้งเดิม คุณสมบัติหลักของมันรวมถึงความสามารถในการแสดงการพึ่งพาระหว่างการให้บริการและการเริ่มต้นบริการแบบขนานที่ก้าวร้าว

4
ไม่สามารถรับการเชื่อมต่อ D-Bus: ไม่อนุญาตให้ใช้งาน
ฉันกำลังพยายามแสดงรายการบริการบนรูปภาพ CentOS ที่ใช้งาน Docker โดยใช้ systemctl list-units แต่ฉันได้รับข้อความแสดงข้อผิดพลาดนี้: Failed to get D-Bus connection: Operation not permitted คำแนะนำใด ๆ ที่อาจเป็นปัญหา?

1
การอนุญาตให้ผู้ใช้ที่ไม่ใช่รูทเพื่อรีสตาร์ทเซอร์วิส
พื้นหลัง : ฉันสร้าง app ที่เรียกว่ามีmyapp Spring-bootประกอบด้วย jar ที่สามารถเรียกใช้งานได้ด้วยตนเองและเข้ากันได้กับบริการ systemd ตอนนี้ฉันกำลังพยายามรวมเข้ากับเจนกินส์ สิ่งที่ฉันต้องการ: ฉันต้องการให้เจนกินส์สามารถ: หยุดบริการ แทนที่โถ เริ่มบริการใหม่ ปัญหา: ถึงตอนนี้เฉพาะ sudoers เท่านั้นที่สามารถเริ่ม / หยุดบริการได้ ฉันไม่ต้องการให้เจนกินส์เป็นคนโง่ (ดูเหมือนว่ายุ่ง) โครงสร้างปัจจุบัน: ฉันมีผู้ใช้myappที่มี/home/myappโฟลเดอร์ โถสร้างขึ้นเรียกว่าและถูกวางไว้ที่myapp /home/myappผู้ใช้myappเป็นเจ้าของ jar ที่สร้างขึ้น: myapp@myserver:~/backend$ ll total 53900 drwxrwxr-x 2 myapp myapp 4096 Apr 25 17:09 ./ drwxr-xr-x 6 myapp myapp 4096 Apr 25 17:08 …
27 systemd  jenkins 

5
Automount USB ไดรฟ์พร้อม systemd
เรากำลังอัปเดตเซิร์ฟเวอร์ของเราจาก distro ที่ล้าสมัยไปเป็นระบบที่ใช้ Debian Jessie ที่ทันสมัยรวมถึง lightdm / xfce และแน่นอน systemd (และ udisks2) จุดต่อหนึ่งจุดคือการเมานท์ไดรฟ์ USB เราเคยทำสิ่งนี้ให้สำเร็จด้วยกฎของ udev กฎเก่ายังคงใช้งานได้ - จุดเมานต์จะถูกสร้างขึ้นและไดรฟ์ติดตั้งได้ดี แต่หลังจากไม่กี่วินาที systemd กำลังทำอะไรบางอย่างที่ทำให้เมาท์ดังนั้นความพยายามในการเข้าถึงที่ตามมาทำให้เกิดข้อผิดพลาด การติดตั้งไดรฟ์ด้วยตนเองผ่านทางบรรทัดคำสั่งทำงานได้ดี ดังนั้นให้ตัวจัดการไฟล์ (thunar และ thunar-volman ซึ่งใช้ udisks2) แต่นั่นไม่ใช่ตัวเลือกที่ทำงานได้ - ระบบเหล่านี้ส่วนใหญ่ทำงานโดยไม่ใช้หัวดังนั้น thunar จึงไม่ได้ทำงานตามปกติ เราจำเป็นต้องสามารถเสียบดิสก์ไดรฟ์สำหรับการสำรองข้อมูล cron แบบอัตโนมัติ ฉันคิดว่าการแก้ไขสคริปต์ udev เพื่อวางไข่งานเดี่ยวซึ่งรอสองสามวินาทีก่อนที่จะทำการเมานท์อาจทำเคล็ดลับได้ แต่ systemd ดูเหมือนจะออกนอกทางเพื่อป้องกันสิ่งนี้ อย่างต่อเนื่อง บางทีการมีสคริปต์ udev tickle udisks2 เป็นวิธีการที่ถูกต้องหรือไม่? …

3
การเพิ่ม nproc สำหรับกระบวนการที่เปิดตัวโดย systemd บน CentOS 7
ฉันเพิ่มค่า nofile และ nproc ให้กับผู้ใช้ในพื้นที่ได้สำเร็จ แต่ฉันไม่สามารถหาโซลูชันที่เหมาะสมสำหรับกระบวนการที่เปิดตัวโดย systemd การเพิ่ม max_open_files ให้กับการกำหนดค่า MariaDB ไม่ได้ช่วยอะไร su - mysqlเพื่อเปลี่ยนขีด จำกัด ด้วยตนเองไม่ทำงาน (บัญชีนี้ไม่สามารถใช้งานได้ในขณะนี้) /etc/security/limits.conf * soft nofile 102400 * hard nofile 102400 * soft nproc 10240 * hard nproc 10240 /etc/security/limits.d/20-nproc.conf (ไม่มีไฟล์อื่นอยู่ในไดเรกทอรี) * soft nofile 102400 * hard nofile 102400 * soft nproc 10240 * …

3
แก้ไขไฟล์ systemd unit โดยไม่แก้ไขไฟล์ upstream unit
ผมได้ติดตั้งบริการโดยวิธีการของpimd aptสิ่งนี้มาพร้อมกับsystemdไฟล์อัปสตรีมยูนิต ( /lib/systemd/system/pimd.service) ฉันต้องการบริการที่จะเริ่มต้นใหม่เมื่อด้วยเหตุผลบางอย่างที่จะได้รับการฆ่าดังนั้นฉันต้องการที่จะเพิ่มบรรทัดRestart = alwaysในไฟล์หน่วย อย่างไรก็ตามฉันไม่ต้องการแก้ไขไฟล์หน่วยต้นน้ำ มีวิธีแก้ปัญหาสำหรับสิ่งนี้หรือไม่?
24 systemd 

4
คำขอเริ่มบริการซ้ำเร็วเกินไปปฏิเสธที่จะเริ่มต้นขีด จำกัด
ฉันมีบริการ systemd ที่แสดงข้อผิดพลาดต่อไปนี้ service start request repeated too quickly, refusing to start ฉันเข้าใจว่าบริการได้รับการกำหนดค่าให้เริ่มต้นใหม่เมื่อเกิดข้อผิดพลาดและเริ่มต้นใหม่อีกครั้ง แต่เมื่อไหร่ที่มันไม่ยอมรีสตาร์ท? มีการ จำกัด หรือจำนวนที่กำหนดหรือไม่ ยิ่งไปกว่านั้นสิ่งที่too quicklyว่าหมายถึงอะไรมัน จำกัด จำนวนของการรีสตาร์ทในช่วงเวลาที่กำหนด?
23 linux  systemd 

2
ดูบันทึก journalctl รุ่นเก่าได้อย่างไร (หลังจากการหมุนอาจจะ?)
ฉันใช้นักเทียบท่าบน Ubuntu 16.04 และต้องการดูบันทึก อย่างไรก็ตามฉันไม่สามารถดูบันทึกหลังจากสิ่งที่ฉันคาดเดาว่าเป็นประเภทการหมุนเวียนหรือบันทึกมีขนาดที่แน่นอน ฉันยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับ journald.conf ดังนั้นฉันจึงใช้ค่าเริ่มต้นที่นั่น ตัวอย่างของสิ่งที่ฉันเห็น: systemctl docker statusยืนยันว่าบริการใช้งานsince Thu 2016-10-13 18:56:28 UTCได้ อย่างไรก็ตามเมื่อฉันเรียกใช้สิ่งที่ชอบjournalctl -u docker.service --until "2016-10-13 22:00"- ผลลัพธ์เดียวที่ฉันได้รับคือ-- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --ฉันสามารถดูบันทึกในช่วงนั้นได้ตามที่คาดไว้ คำถามของฉันคือทำไมฉันไม่สามารถดูบันทึกเก่า ๆ ด้วย journalctl และฉันจะแก้ไขปัญหานี้ได้อย่างไรเพื่อดูบันทึกได้

3
คุณใช้รูปแบบ journalctl ของ systemd อย่างไร
ฉันพยายามที่จะใช้journalctlการจับคู่แบบ SYSLOG_IDENTIFIERS'บน ตัวอย่างเช่นฉันมีข้อความจำนวนมากติดแท็กsshd: $ journalctl -t sshd | wc -l 987 แต่ถ้าฉันพยายามใช้การจับคู่รูปแบบเพื่อค้นหา: $ journalctl -t 'ssh*' -- No Entries -- $ journalctl -t 'ssh.*' -- No Entries -- หน้า manctctctl บอกว่ารูปแบบควรใช้งานได้ แต่ฉันไม่สามารถหาสิ่งอื่นใดเกี่ยวกับวิธีการใช้ / กำหนดรูปแบบใน systemd $ man journalctl .... -t, --identifier=SYSLOG_IDENTIFIER|PATTERN Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or …

4
การกำหนดค่า Systemd Service เพื่อรันด้วยการเข้าถึงรูท
ฉันมีบริการในรูปแบบของแอปพลิเคชัน node.js ที่ติดตั้งกับ Systemd บน Raspbian Jessie และใช้บัญชีผู้ใช้ของตัวเอง อย่างไรก็ตามฉันพบว่าบริการไม่ทำงานอย่างถูกต้องเพราะไม่มีสิทธิ์ที่จำเป็น หนึ่งในโมดูลโหนดที่ฉันติดตั้งต้องการการเข้าถึงรูท ถ้าฉันเรียกใช้แอปด้วยตนเองโดย sudo ทุกอย่างทำงานได้ดี มีวิธีบอก systemd ให้ใช้บริการด้วย sudo หรือไม่?

2
กำหนดค่าบริการ buggy systemd เพื่อยกเลิกผ่าน SIGKILL
พื้นหลัง ฉันถูกขอให้สร้างsystemdสคริปต์สำหรับบริการใหม่foo_daemonซึ่งบางครั้งอาจเข้าสู่ "สถานะไม่ดี" และจะไม่ตายSIGTERM(อาจเกิดจากตัวจัดการสัญญาณที่กำหนดเอง) นี่เป็นปัญหาสำหรับนักพัฒนาเนื่องจากได้รับคำแนะนำให้เริ่ม / หยุด / เริ่มบริการใหม่ผ่าน: systemctl start foo_daemon.service systemctl stop foo_daemon.service systemctl restart foo_daemon.service ปัญหา บางครั้งเนื่องจากfoo_daemonการเข้าสู่สถานะที่ไม่ดีเราต้องบังคับให้ฆ่าผ่าน: systemctl kill -s KILL foo_daemon.service คำถาม ฉันจะตั้งค่าsystemdสคริปต์ของฉันอย่างไรfoo_daemonเพื่อที่เมื่อใดก็ตามที่ผู้ใช้พยายามหยุด / เริ่มบริการใหม่systemdจะ: พยายามปิดสง่างามของผ่านfoo_daemonSIGTERM ให้มากถึง 2 วินาทีเพื่อให้การปิด / การสิ้นสุดของfoo_daemonเสร็จสมบูรณ์ พยายามปิดการบังคับfoo_daemonผ่านSIGKILLถ้ากระบวนการยังมีชีวิตอยู่ (ดังนั้นเราจึงไม่มีความเสี่ยงที่จะมีการรีไซเคิล PID และsystemdปัญหาSIGKILLต่อ PID ที่ไม่ถูกต้อง) อุปกรณ์ที่เรากำลังทดสอบวางไข่ / แยกกระบวนการจำนวนมากอย่างรวดเร็วดังนั้นจึงมีข้อกังวลที่หายาก แต่แท้จริงเกี่ยวกับการรีไซเคิล PID ที่ก่อให้เกิดปัญหา หากในทางปฏิบัติฉันแค่หวาดระแวงเกี่ยวกับการรีไซเคิล PID ฉันก็โอเคกับสคริปต์ที่ออกมาSIGKILLต่อต้านกระบวนการ …

3
systemd: ให้สิทธิ์ผู้ใช้ที่ไม่ได้รับสิทธิพิเศษเพื่อแก้ไขบริการหนึ่งที่เฉพาะเจาะจง
ฉันใช้เซิร์ฟเวอร์เกมส่วนตัวบนกล่อง linux ที่ไม่มีหัว เนื่องจากฉันไม่ใช่คนโง่พูดว่าเซิร์ฟเวอร์กำลังทำงานในฐานะผู้ใช้ที่ไม่มีสิทธิ์ของตัวเองด้วยสิทธิ์การเข้าถึงขั้นต่ำที่เปลือยเปล่าซึ่งจำเป็นต้องดาวน์โหลดการอัปเดตและแก้ไขฐานข้อมูลโลก ฉันยังสร้างไฟล์หน่วย systemd เพื่อเริ่มต้นอย่างถูกต้องหยุดและรีสตาร์ทเซิร์ฟเวอร์เมื่อจำเป็น (เช่นสำหรับการอัปเดตดังกล่าว) อย่างไรก็ตามเพื่อที่จะโทรจริงsystemctlหรือservice <game> start/stop/restartฉันยังต้องเข้าสู่ระบบในฐานะผู้ใช้รูทหรือsudoผู้ใช้ที่มีความสามารถ มีวิธีบอก systemd หรือไม่ว่าสำหรับ<game>บริการผู้ใช้ที่gamesrvไม่มีสิทธิได้รับอนุญาตให้รันคำสั่ง start / stop / restart ได้หรือไม่?
20 linux  systemd 

4
Systemd: เริ่มหน่วยหลังจากหน่วยอื่นเริ่มต้นจริงๆ
ในกรณีเฉพาะของฉันฉันต้องการเริ่มremote-fsหน่วยหลังจากทั้งหมดglusterfsเริ่มต้นอย่างสมบูรณ์ ไฟล์ systemd ของฉัน: glusterfs กำหนดเป้าหมาย: node04:/usr/lib/systemd/system # cat glusterfsd.service [Unit] Description=GlusterFS brick processes (stopping only) After=network.target glusterd.service [Service] Type=oneshot ExecStart=/bin/true RemainAfterExit=yes ExecStop=/bin/sh -c "/bin/killall --wait glusterfsd || /bin/true" ExecReload=/bin/sh -c "/bin/killall -HUP glusterfsd || /bin/true" [Install] WantedBy=multi-user.target remote-fs กำหนดเป้าหมาย: node04:/usr/lib/systemd/system # cat remote-fs.target [Unit] Description=Remote File Systems Documentation=man:systemd.special(7) Requires=glusterfsd.service …
20 nfs  glusterfs  systemd 

1
จะเริ่มต้นและหยุดยูนิต systemd ด้วยยูนิตอื่นได้อย่างไร?
ฉันใช้ CoreOS เพื่อจัดตาราง systemd units กับกองยาน ฉันมีสองหน่วย ( firehose.serviceและfirehose-announce.service. ฉันพยายามที่firehose-announce.serviceจะเริ่มต้นและหยุดพร้อมกับfirehose.service. นี่คือไฟล์หน่วยสำหรับfirehose-announce.service: [Unit] Description=Firehose etcd announcer BindsTo=firehose@%i.service After=firehose@%i.service Requires=firehose@%i.service [Service] EnvironmentFile=/etc/environment TimeoutStartSec=30s ExecStartPre=/bin/sh -c 'sleep 1' ExecStart=/bin/sh -c "port=$(docker inspect -f '{{range $i, $e := .NetworkSettings.Ports }}{{$p := index $e 0}}{{$p.HostPort}}{{end}}' firehose-%i); echo -n \"Adding socket $COREOS_PRIVATE_IPV4:$port/tcp to /firehose/upstream/firehose-%i\"; while netstat …
20 systemd  coreos 

4
การพึ่งพา Systemd และลำดับการบู๊ต
ฉันต้องระบุลำดับการบู๊ตเพื่อให้กระบวนการเริ่มต้น ฉันมี 389 Directory Server และ Samba ทำงานบน Fedora 18. ฉันจะให้บริการเครือข่ายได้อย่างไรจากนั้น 389 DS และ Samba แล้ว? มี GUI สำหรับจัดการสิ่งนี้ใน Fedora หรือไม่? systemctl enable smb.serviceผมได้เปิดใช้แซมบ้าจะเริ่มต้นด้วย ฉันยังได้เปิดใช้งาน 389 DS systemctl enable dirsrv.targetกับ
20 linux  fedora  systemd 

3
วิธีตั้งค่าชื่อโฮสต์สำหรับระบบ Debian Jessie
Debian systemdเจสซีมาพร้อมกับ คำแนะนำในการตั้งชื่อโฮสต์นั้นใช้ hostnamectl สำหรับ systemd อย่างไรก็ตามคำสั่งนี้ใช้งานไม่ได้ (แม้จะแสดงชื่อโฮสต์ปัจจุบัน) บนอิมเมจ Debian Jessie ที่บู๊ตบน EC2 : sudo hostnamectl sudo: unable to resolve host ip-172-30-0-17 Failed to create bus connection: No such file or directory ดังนั้นผมจึงพยายามที่จะไปข้างหน้ากับข้อเสนอแนะของ Debian ที่นี่ echo "myhostname" > /etc/hostname echo "127.0.0.1 myhostname" >> /etc/hosts /etc/init.d/hostname.sh start /etc/init.d/networking force-reload อย่างไรก็ตามหลังจากออกจากระบบและลงชื่อเข้าใช้อีกครั้งชื่อโฮสต์จะไม่เปลี่ยนแปลง อย่างไรก็ตามมันเปลี่ยนไปหลังจากรีบูตเครื่อง …

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