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

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

1
ฉันจะเริ่มบริการ systemd ได้หลังจาก mysql เริ่มทำงานแล้วเท่านั้น?
ฉันกำลังทำงานในโครงการที่เป็น EmailServer แบบโมโน ฉันได้ลองเพิ่มบริการไปยัง systemd เพื่อให้มันเริ่มขึ้นโดยอัตโนมัติในระหว่างการบูต แต่ฉันมีปัญหา ผมได้สร้างสคริปต์และเพิ่มไปแล้วเรียกใช้/lib/systemd/system/emailserver.serviceln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service ฉันได้ดำเนินการแล้วsystemd reload-daemonตามด้วยsystemctl start emailserver.serviceและเมื่อฉันเรียกใช้ps -ef |grep -i emailserverแล้วฉันจะเห็นว่าmono EmailServer.exeกำลังทำงานอยู่ทั้งหมดดูดีจนถึงขณะนี้ อย่างไรก็ตามเมื่อฉันรีบูทเซิร์ฟเวอร์ใน/var/log/messagesไฟล์มันจะมีข้อความแสดงข้อผิดพลาดดังต่อไปนี้ Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff time over, scheduling restart. Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff time over, scheduling restart. Jul 16 19:41:03 dev-server systemd[1]: emailserver.service holdoff …
15 opensuse  systemd 

2
วิธีเริ่มและใช้ ssh-agent เป็น systemd service?
วิธีการเริ่มssh-agentเป็นบริการsystemd ? มีคำแนะนำบางอย่างในเน็ต แต่พวกเขายังไม่สมบูรณ์ วิธีเพิ่มคีย์ที่ไม่เข้ารหัสโดยอัตโนมัติหากบริการssh-agentเริ่มต้นได้สำเร็จ อาจเป็นการเพิ่มคีย์จากรายการ~/.ssh/.session-keysจะดี วิธีการตั้งค่าSSH_AUTH_SOCKในเซสชั่นการเข้าสู่ระบบใด ๆ หลังจากนั้น? วิธีที่ถูกต้องที่สุดคือการส่งจากบริการssh-agentไปยังบริการsystemd-logind (ไม่ทราบว่าเป็นไปได้หรือไม่) /etc/profileวิธีที่ไร้เดียงสาธรรมดาเป็นเพียงการเพิ่มเข้าไป

2
ฉันจะทำให้บริการผู้ใช้รอจนกระทั่งเครือข่ายออนไลน์ได้อย่างไร
ฉันได้เขียนไฟล์บริการผู้ใช้ systemd สองไฟล์ซึ่งฉันต้องการให้ผู้ใช้เปิดใช้งานและต้องการการเชื่อมต่อเครือข่ายที่ใช้งานได้ ฉันคิดว่าจะง่ายเหมือน: Wants=network-online.target After=network-online.target อย่างไรก็ตามบริการดูเหมือนจะเริ่มเร็วเกินไปและในjournalctlฉันเห็น: network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory. จากนั้นฉันค้นหาเพิ่มเติมและลอง Wants=network.target After=network.target sudo systemctl enable systemd-networkd-wait-online.serviceและทำ ตอนนี้ฉันมีในjournalctl: network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory. และอีกครั้งบริการเริ่มเร็วเกินไป ข้อความนั้นควรจะอยู่ที่นั่นหรือไม่? ฉันจะแก้ไขปัญหาของฉันได้อย่างไร …

4
Systemd ฆ่าบริการทันทีหลังจากเริ่มต้น
ฉันกำลังเขียนไฟล์ systemd unit สำหรับ OSSEC HIDS ปัญหาคือเมื่อ systemd เริ่มให้บริการมันจะหยุดทันที เมื่อฉันใช้ ExecStart directive นั้นทำงานได้ดี ExecStart=/var/ossec/bin/ossec-control start แต่เมื่อฉันทำการปรับปรุงเล็ก ๆ น้อย ๆ ฉันก็ทำได้ในบันทึก OSSEC มันจะได้รับ SIG 15 หลังจากเริ่มต้น ExecStart=/bin/sh -c '${DIRECTORY}/bin/ossec-control start' ถ้าฉันเปลี่ยนบริการเล็ก ๆ น้อย ๆ จะได้รับ SIG 15 หลังจาก 20 วินาที ExecStart=/bin/sh -c '${DIRECTORY}/bin/ossec-control start && sleep 20' ดังนั้นฉันเดาว่า systemd จะฆ่ากระบวนการ / …
15 centos  rhel  systemd 

3
ฉันจะข้ามการหมดเวลา 90s ใน systemd ได้อย่างไร
เป็นไปได้ไหมที่จะข้ามการหมดเวลา 90s ใน systemd แบบโต้ตอบ? ตัวอย่างเช่นเมื่อกำลังรอให้ดิสก์พร้อมใช้งานหรือผู้ใช้ออกจากระบบ ฉันรู้ว่ามันจะล้มเหลวในที่สุดดังนั้นฉันจะทำให้มันล้มเหลวตอนนี้ได้ไหม ฉันเกลียดการจ้องมองที่หน้าจออย่างช่วยไม่ได้

1
วิธีรันคำสั่งภายใน virtualenv โดยใช้ systemd
ฉันเชื่อว่าสิ่งนี้ควรจะง่าย แต่ฉันไม่สามารถทำงานได้อย่างถูกต้อง เหล่านี้คือคำสั่งที่ฉันสามารถเรียกใช้บนบรรทัดคำสั่ง: cd /home/debian/ap # Start a virtualenv source venv-ap/bin/activate # This needs to happen inside the virtualenv and takes ~20 seconds crossbar start # Outside the virtualenv, perhaps in a different command line window python3 /home/debian/myscript.py คำสั่งเหล่านี้จะต้องทำตามลำดับนี้ เนื่องจาก virtualenv, ไม่สามารถเรียกใช้งานได้สำหรับ crossbar และสคริปต์ python แยกต่างหากหลังจากนั้นฉันจึงไม่สามารถหาวิธีที่ดีที่สุดในการทำให้สิ่งนี้ทำงานได้ ความคืบหน้าในการทำงานปัจจุบันของฉัน: [Unit] Description=Start CB …

1
Systemctl ลบยูนิตออกจากรายการที่ล้มเหลว
ฉันจะลบหน่วยออกจากsystemctl --failedรายการโดยไม่ต้องรีบูตเครื่องได้อย่างไร ความเป็นมา: ฉันมีรายการต่อไปนี้ในรายการ: ● openvpn-server@intranert.service loaded failed failed OpenVPN service for intranert สิ่งนี้เกิดขึ้นเพราะฉันสะกดคำผิดintranetซึ่งเป็นอินสแตนซ์ที่ใช้งานได้จริงในการเปิดใช้งานเทมเพลตหน่วยเมื่อไม่นานมานี้ อย่างไรก็ตามตอนนี้ฉันมักจะสับสนเมื่อมองอย่างรวดเร็วเมื่อฉันตรวจสอบหน่วยที่ล้มเหลวของเซิร์ฟเวอร์เนื่องจากดูเหมือนว่าบริการที่ได้ผลจริง ๆ จะล้มเหลวจนกว่าฉันจะรับรู้ถึงข้อผิดพลาดในการสะกดคำและจดจำการพิมพ์ผิดของฉัน

1
พร็อกซี SSH ถุงเท้าตามคำขอผ่านหน่วยผู้ใช้ systemd พร้อมการเปิดใช้งานซ็อกเก็ตไม่รีสตาร์ทตามที่ต้องการ
ในการเข้าถึงเครือข่ายที่แยกผมใช้SSH -D ถุงเท้า พร็อกซี่ เพื่อหลีกเลี่ยงการต้องพิมพ์รายละเอียดทุกครั้งที่ฉันเพิ่มลงใน~/.ssh/config: $ awk '/Host socks-proxy/' RS= ~/.ssh/config Host socks-proxy Hostname pcit BatchMode yes RequestTTY no Compression yes DynamicForward localhost:9118 จากนั้นฉันสร้างไฟล์ข้อกำหนดหน่วยบริการผู้ใช้ systemd : $ cat ~/.config/systemd/user/SocksProxy.service [Unit] Description=SocksProxy Over Bridge Host [Service] ExecStart=/usr/bin/ssh -Nk socks-proxy [Install] WantedBy=default.target ฉันปล่อยให้ daemon โหลดข้อกำหนดบริการใหม่เปิดใช้บริการใหม่เริ่มตรวจสอบสถานะและตรวจสอบว่ากำลังฟังอยู่: $ systemctl --user daemon-reload $ systemctl --user …

4
ตัวแปรแบบไดนามิกในไฟล์หน่วยบริการ systemd
มีวิธีการกำหนดตัวแปรสภาพแวดล้อมในไฟล์ systemd service unit หรือไม่ เรามีเครื่องที่มี 4 GPU และเราต้องการที่จะหมุนบริการหลายอย่างต่อหนึ่ง GPU เช่น: gpu_service @ 1: 1. บริการ gpu_service @ 2: 1. บริการ gpu_service @ 3: 1. บริการ gpu_service @ 4: 1. บริการ gpu_service @ 1: 2.service gpu_service @ 2: 2.service gpu_service @ 3: 2.service gpu_service @ 4: 2.service โฆษณาคลื่นไส้ ดังนั้น 1: …

2
คำขอเริ่มบริการซ้ำเร็วเกินไปปฏิเสธที่จะเริ่ม
ฉันได้สร้างบริการบน Debian 8.6 และเมื่อฉันพยายามเริ่มใช้งานโดยใช้คำสั่งบริการฉันได้รับข้อผิดพลาด ฉันพยายามsystemctl daemon-reloadแล้ว แต่ก็ยังได้ผลลัพธ์เหมือนเดิม $ sudo service cloud9 start $ sudo service cloud9 status ● cloud9.service - cloud9 Loaded: loaded (/etc/systemd/system/cloud9.service; enabled) Active: failed (Result: start-limit) since Thu 2016-10-13 07:21:02 UTC; 2s ago Process: 2610 ExecStart=/opt/bitnami/nodejs/bin/node /home/user/c9sdk/server.js -w /home/user -l 0.0.0.0 -a admin:admin (code=exited, status=216/GROUP) Main PID: …

3
สคริปต์เริ่มต้นของ Systemd postgresql
ฉันกำลังติดตั้ง postgresql บนเซิร์ฟเวอร์ตัวที่สอง ก่อนหน้านี้ฉันติดตั้ง postgresql แล้วใช้สคริปต์ที่ให้มา ./contrib/start-scripts/linux วางลงใน dir ที่ถูกต้อง # cp ./contrib/start-scripts/linux /etc/rc.d/init.d/postgresql92 # chmod 755 /etc/rc.d/init.d/postgresql92 ซึ่งฉันสามารถดำเนินการตามที่คาดไว้ด้วย # service postgresql92 start อย่างไรก็ตามเครื่องใหม่ใช้ Systemd และดูเหมือนว่ามีวิธีที่แตกต่างอย่างสิ้นเชิงในการทำเช่นนี้ ฉันไม่ต้องการแฮ็คข้อมูลนี้และทำลายบางสิ่งบางอย่างดังนั้นฉันจึงสงสัยว่าใครก็ตามสามารถชี้ให้ฉันในทิศทางที่ถูกต้องว่าจะบรรลุผลลัพธ์เดียวกันได้อย่างไร

1
เหตุใดการขยายพารามิเตอร์ bash ไม่ทำงานในไฟล์เซอร์วิส systemd
ฉันกำลังพยายามที่จะใช้systemd's EnvironmentFileและเพิ่มตัวเลือกในการคำสั่งเมื่อมีการตั้งค่าในแฟ้ม ฉันมีต่อไปนี้ในไฟล์หน่วย: ExecStart=/usr/bin/bash -c "echo ${PORT:+port is $PORT}" ซึ่งไม่ได้สะท้อนอะไรเลยเมื่อฉันเริ่มให้บริการ งานต่อไปนี้เป็นไปตามที่คาดไว้: ExecStart=/usr/bin/bash -c "echo port is $PORT" ซึ่งหมายความว่าไฟล์อ่านอย่างถูกต้อง การทดแทนพารามิเตอร์ยังทำงานบนบรรทัดคำสั่ง: $ PORT=1234 bash -c 'echo ${PORT:+port is $PORT}' port is 1234 ฉันกำลังคิดถึงอะไร

3
Systemd และกระบวนการวางไข่
ปกติจะไม่โพสต์ที่นี่ แต่ฉันกำลังฉีกผมออกไปมากกว่านี้ ฉันมีสคริปต์ Python ที่เรียกใช้เมื่อมันเปิดตัวและมีหน้าที่รับผิดชอบในการเริ่มต้นกระบวนการอื่น ๆ สคริปต์นี้เคยเปิดตัวเมื่อเริ่มต้นผ่าน sysvinit แต่เมื่อเร็ว ๆ นี้ฉันอัพเกรดเป็น Debian Jessie ดังนั้นจึงได้ปรับให้เปิดใช้งานผ่าน systemd น่าเสียดายที่ฉันพบปัญหาฉันไม่สามารถทำงานได้ เมื่อคุณเรียกใช้สคริปต์โดยตรงในเชลล์ผู้ใช้มันจะเปิดใช้งานกระบวนการลูกอย่างถูกต้องและเมื่อสคริปต์ออกจากกระบวนการลูกจะถูกกำพร้าและทำงานต่อไป เมื่อเปิดตัว Via systemd หากกระบวนการหลักออกไปเด็ก ๆ ก็ออกจากกันด้วย (หน้าจอก็จะเริ่มตายและปรากฏเป็น Dead ???) เป็นการดีที่ฉันจะต้องสามารถเริ่มต้นสคริปต์แม่โดยไม่ต้องฆ่ากระบวนการลูกทั้งหมดมีบางสิ่งที่ฉันหายไป? ขอบคุณ! [Unit] Description=Server commander After=network.target [Service] User=serveruser Type=forking PIDFile=/var/Server/Server.pid ExecStart=/var/Server/Server.py ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target แก้ไข: มันอาจเกี่ยวข้องกับฉันที่จะชี้ให้เห็นว่าสคริปต์ Python นั้นเป็น 'ตัวควบคุม' สำหรับกระบวนการลูก มันเริ่มและหยุดเซิร์ฟเวอร์ในหน้าจอ …

3
ฉันสามารถใช้ลิงก์สัญลักษณ์เป็นบริการของ systemd ได้หรือไม่?
ตัวอย่างเช่นฉันมีบริการชื่อmysshd.serviceภายใต้/usr/lib/systemd/system/ไดเรกทอรี ฉันสามารถสร้างลิงค์สัญลักษณ์ได้เช่น: ln -s /usr/lib/systemd/system/mysshd.service /usr/lib/systemd/system/fool.service เพื่อให้การดำเนินการใด ๆ ที่ฉันทำกับคนโง่บริการจะสะท้อนให้เห็นถึงmysshd.service( systemctl enable/disable start/stop fool.servce)? จุดประสงค์ของฉันคือการเขียนทับบริการ sshd ดั้งเดิมโดยลิงก์สัญลักษณ์ของบริการ sshd ของฉันเอง
14 systemd  services 

4
วิธีการเปลี่ยนการหมดเวลาใน systemctl
เมื่อฉันบูทระบบ Debian ของฉันการเริ่มต้นจะหยุดทำงานเป็นเวลาประมาณ 2 นาทีในบรรทัด: Loading, please wait... [ 5.191043] systemd-fsck[129]: /dev/mmcblk0p2: clean, 234192/873120 files, 2335263/3491328 blocks [ 6.645242] intel_rapl: no valid rapl domains found in package 0 [ 6.643682] systemd-fsck[222]: fsck.fat 3.0.27 (2014-11-12) [ 6.664844] intel_rapl: no valid rapl domains found in package 0 [ 6.660702] systemd-fsck[222]: /dev/mmcblk0p1: 3 …

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