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

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

2
การรันเซอร์วิส systemd ในฐานะผู้ใช้อื่นที่ไม่ใช่รูท!
ฉันสร้างบริการต่อไปนี้ amos.service และจำเป็นต้องเรียกใช้เป็น amos (สมาชิกของกลุ่ม amos) [Unit] Description=AMOS Service After=network.target [Service] User=amos Group=amos Type=simple WorkingDirectory=/usr/share/amos ExecStart=/usr/share/amos/amos_service.sh start ExecStop=/usr/share/amos/amos_service.sh stop Restart=on-failure [Install] WantedBy=multi-user.target สิทธิ์ทั้งหมดได้รับการตั้งค่า/usr/share/amosเป็นamos:amos amos_service.sh มีดังนี้: #!/bin/bash CUDIR=$(dirname "$0") cd /usr/share/amos start() { exec /usr/share/amos/run_amos.sh >> /var/log/amos.log 2>&1 } stop() { exec pkill java } case $1 in start|stop) "$1" ;; …
18 systemd  services  init 

1
Systemd: จะมั่นใจได้อย่างไรว่าบริการ“ oneshot” ถูกลองใหม่หากล้มเหลวในครั้งแรก
ฉันได้อ่าน manpage บริการ systemd สองสามครั้ง แต่ฉันยังไม่สามารถหารูปแบบ systemd พื้นฐานได้: ฉันต้องการเรียกใช้กระบวนการเริ่มต้นหนึ่งครั้ง (เช่นตัวเทียบท่าคอนเทนเนอร์หรือฟอร์แมตไดรฟ์) เมื่อเริ่มต้นระบบจนเสร็จสมบูรณ์ แต่ถ้าฉันใช้ Type = oneshot สำหรับสิ่งนั้นฉันไม่สามารถใช้ Restart = on-failure และถ้ามันล้มเหลวมันจะไม่ลองอีกครั้ง ฉันขาดอะไรบางอย่างชัดเจนที่นี่? ฉันพยายามตั้งค่า Type = simple ด้วย Restart = on-failure แต่ในหลายกรณีฉันต้องการพฤติกรรมดังต่อไปนี้ (จาก manpage) ที่บริการ oneshot ให้: พฤติกรรมของวัตถุที่คล้ายคลึงกันง่าย ๆ ; อย่างไรก็ตามคาดว่ากระบวนการจะต้องออกก่อนที่ systemd จะเริ่มหน่วยติดตาม ปรับปรุง: ที่เกี่ยวข้องข้อผิดพลาด systemd ต้นน้ำ และเราต้องการRemainAfterExitความหมายเช่นกัน
18 systemd 

2
รายการของหน่วยที่เลือกได้สำหรับ journalctl
ในเซิร์ฟเวอร์ CentOS 7 ฉันต้องการรับรายการหน่วยที่สามารถเลือกได้ซึ่งjournalctlสามารถสร้างบันทึกได้ ฉันจะเปลี่ยนรหัสต่อไปนี้เพื่อทำสิ่งนี้ได้อย่างไร journalctl --output=json-pretty | grep -f UNIT | sort -u ในเทอร์มินัล CentOS 7 โค้ดด้านบนจะสร้างgrep: UNIT: No such file or directoryขึ้น แก้ไข: โปรแกรม Java ต่อไปนี้ถูกยกเลิกโดยไม่ต้องพิมพ์ผลลัพธ์ใด ๆ จาก grep ที่ต้องการ ฉันจะเปลี่ยนสิ่งต่าง ๆ เพื่อให้โปรแกรมจาวาทำงานได้นอกเหนือจากรุ่นเทอร์มินัลได้อย่างไร String s; Process p; String[] cmd = {"journalctl --output=json-pretty ","grep UNIT ","sort -u"}; try { …
18 grep  systemd 

3
chrony vs. systemd-timesyncd - อะไรคือความแตกต่างและการใช้เคสเป็นไคลเอนต์ NTP?
อย่างใด แต่ไม่ค่อนข้างสร้างตามคำถามเก่า"ntpd กับ systemd-timesyncd - วิธีการซิงค์ NTP ที่เชื่อถือได้?" ผมอยากจะถามเกี่ยวกับความแตกต่างระหว่าง chrony และ systemd-timesyncd ในแง่ของ NTP ลูกค้า ฉันรู้ว่า systemd-timesyncd เป็นการใช้งาน ntp ไคลเอนต์น้อยมากหรือน้อยที่สุดในขณะที่ chrony เป็นโซลูชัน NTP daemon ที่เต็มเปี่ยมที่เกิดขึ้นเพื่อรวมไคลเอ็นต์ NTP บันทึกย่อประจำรุ่น ubuntu Bionic Beaverระบุสิ่งต่อไปนี้: สำหรับการซิงค์เวลาแบบง่ายความต้องการระบบพื้นฐานมาพร้อมกับ systemd-timesyncd Chrony จำเป็นต้องทำหน้าที่เป็นเซิร์ฟเวอร์เวลาเท่านั้นหรือหากคุณต้องการให้การซิงค์มีความแม่นยำและมีประสิทธิภาพมากขึ้น ฉันชอบความคิดในการใช้เครื่องมือที่ติดตั้งไว้ล่วงหน้าเพียงเล็กน้อยเพื่อทำงานและฉันค่อนข้างมั่นใจว่า systemd-timesyncd จะทำงานให้กับกรณีการใช้งานของฉัน แต่ฉันก็ยังสงสัยอยู่: อะไรคือความแตกต่างของโลกแห่งความเป็นจริงระหว่างสองสิ่งนี้ในแง่ของความแม่นยำ? ประสิทธิภาพต่างกันอย่างไร การซิงค์เวลาแบบ "ไม่ง่าย" อะไรที่ต้องใช้ในกรณีของการใช้ chrony เป็นไคลเอนต์ NTP
18 systemd  ntp  chrony 

4
เปลี่ยนโปรแกรมแก้ไขเริ่มต้นเป็นกลุ่มสำหรับ _ sudo systemctl edit [unit-file] _
[4.13.12-1-ARCH กับ gnome3 และ gdm บน Xorg] ฉันได้ตั้งค่าภาพและตัวแก้ไข env-vars ไว้vimแล้ว ในทำนองเดียวกันฉันลองSYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR ใน ~ / .bashrc ของฉันเพื่อประโยชน์ เมื่อทำการแก้ไขไฟล์ยูนิตใน Arch (systemd) ผ่านทาง $ sudo systemctl edit _unit_ nanoฉันพบตัวเองจ้องมองที่ ชีวิตนั้นสั้นเกินไปและฉันต้องการvimโดยทั้งหมด ฉันจะทำสิ่งนี้ได้อย่างไร
18 systemd  vim  editors 

1
วิธีใดที่ถูกต้องในการปิดการใช้งาน systemd unit timer?
ฉันได้ย้ายงาน cron ของฉันไปที่ systemd สำเร็จแล้ว ฉันทำตามคำแนะนำและใช้แนวทางมาตรฐานในการสร้าง 3 ไฟล์: myjob.timer - systemd timer unit myjob.service - systemd service unit myjob.sh ในขณะที่คุณสามารถเดาได้ว่าบางครั้ง myjob.timer จะถูกเรียกใช้ซึ่งจะเรียกใช้ myjob.service ซึ่งจะเรียกใช้ myjob.sh ฉันมีการตั้งค่าเดียวกันสำหรับตัวจับเวลาทั้งหมดของฉันและตอนนี้ฉันเห็นว่าทุกอย่างทำงานได้ดีฉันต้องการปิดการใช้งาน myjob.timer ซึ่งเป็นเพียงเครื่องทดสอบ ฉันแค่ทำ: systemctl --user disable myjob.timer หรือฉันต้องทำ: systemctl --user disable myjob.service สิ่งที่ถูกต้องทำคืออะไร? ฉันค่อนข้างใหม่กับ systemd ดังนั้นฉันต้องการเรียนรู้วิธีการทำสิ่งที่ถูกต้อง ฉันเดาว่ามันถูกต้องที่จะปิดการใช้งานทั้งสองหน่วยเพื่อให้ระบบปราศจากสัมภาระส่วนเกิน

2
ลดการหมดเวลาปิดเครื่องสำหรับ“ งานหยุดทำงาน”
ฉันติดตั้ง node.js และ pm2 บน Pi (Raspbian) แล้ว PM2 ได้รับการกำหนดค่าให้เริ่มต้นpm2 startupและสคริปต์ init ที่สร้างขึ้น บางครั้งเมื่อฉันรีบูตการปิดเครื่องจะหยุดทำงานในสองสามนาที: A stop job is running for LSB: PM2 init script (... / 5min) ทุกครั้งในขณะที่1สิ่งที่ฉันสมมติว่าเป็น PM2 ไม่ได้ปิดตัวลงอย่างถูกต้องและแฮงค์สำหรับเต็ม 5 นาที ในระบบนี้ฉันรู้ว่าแอป PM2 กำลังจัดการอะไรและฉันไม่สนใจว่าจะปิดอย่างถูกต้องหรือไม่ คำถามของฉันคือฉันจะลดการหมดเวลาจาก 5 นาทีเป็น 15 วินาทีได้อย่างไร สิ่งนี้ถูกกำหนดค่าที่ใด ฉันอ่านฟอรัมว่าเป็นDefaultTimeoutStopSecกุญแจสำคัญใน/etc/systemd/system.confดังนั้นฉันจึงลองตั้งค่าเป็น "15s" แต่ไม่มีผลใด ๆ ฉันลองสิ่งเดียวกันใน/etc/systemd/user.confเหมือนกัน แต่ไม่มีการเปลี่ยนแปลง การหมดเวลายังคงตั้งไว้ที่ 5 นาที …
18 systemd  reboot  lsb 

2
Systemd: ต้องมี vs ต้องการ
ต้องการ vs vs Wantsในไฟล์เป้าหมายต่างกันหรือไม่? [Unit] Description=Graphical Interface Documentation=man:systemd.special(7) Requires=multi-user.target Wants=display-manager.service ขอบคุณ
18 systemd 

2
การเขียนไฟล์ systemd unit ด้วยพา ธ ที่ปฏิบัติการได้ที่ตั้งค่าสภาพแวดล้อม
ฉันกำลังเขียนไฟล์ systemd unit สำหรับแอปพลิเคชัน Java และฉันต้องการควบคุมเวอร์ชันของ Java ที่ใช้เพื่อเริ่มต้นทำงาน ไฟล์บริการของฉัน (แบบง่าย) คือ [Service] Type=simple EnvironmentFile=%h/Documents/apps/app/app-%i/app.cfg ExecStart=${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar %h/Documents/apps/app/app-%i/myapp.jar SuccessExitStatus=143 เมื่อพยายามเริ่มมันฉันได้รับข้อผิดพลาดกลับมา Apr 28 12:43:37 rombert systemd[1613]: [/home/robert/.config/systemd/user/app@.service:7] Executable path is not absolute, ignoring: ${JAVA_HOME}/bin/java ${JAVA_OPT Apr 28 12:43:37 rombert systemd[1613]: app@1.0.0.service lacks both ExecStart= and ExecStop= setting. Refusing. ฉันรู้ว่าJAVA_HOMEตั้งไว้ถูกต้อง; ถ้าฉันเปลี่ยนExecStartบรรทัดเพื่อเริ่มต้นด้วย/usr/bin/javaจากนั้นเพิ่มสิ่งที่-DsomeOption=${JAVA_HOME}ฉันเห็นมันก็โอเค วิธีแก้ปัญหาที่ชัดเจนคือการสร้างสคริปต์ตัวตัด …
17 systemd  java 

2
วิธีการเรียกใช้บริการผู้ใช้ systemd เพื่อทริกเกอร์ในโหมดสลีป (aka. suspend, hibernate)
จากแหล่งข้อมูลต่าง ๆ ที่ฉันได้เรียนด้วยกัน~/.config/systemd/user/screenlock.service: [Unit] Description=Lock X session Before=sleep.target [Service] Environment=DISPLAY=:0 ExecStart=/usr/bin/xautolock -locknow [Install] WantedBy=sleep.target systemctl --user enable screenlock.serviceผมได้เปิดใช้งานได้โดยใช้ แต่หลังจากรีบูตเครื่องเข้าสู่ระบบระงับและดำเนินการต่อ (ทดสอบทั้งกับsystemctl suspendและโดยการปิดฝา) หน้าจอจะไม่ถูกล็อคและไม่มีอะไรjournalctl --user-unit screenlock.serviceมา ผมทำอะไรผิดหรือเปล่า? กำลังDISPLAY=:0 /usr/bin/xautolock -locknowล็อคหน้าจอตามที่คาดไว้ $ systemctl --version systemd 215 +PAM -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ +SECCOMP -APPARMOR $ awesome --version awesome v3.5.5 (Kansas …

3
rsyslog ไม่ได้เข้าสู่ระบบ
นี่เป็นปัญหาแปลก ๆ ฉันกำลังทดสอบบริการ chrony / ntp บน RHEL7 VM และกำลังรีเซ็ตเวลาเช่นเดียวกับโฮสต์ เมื่อฉันพอใจกับมันฉันตรวจสอบ/var/log/messagesและรู้ว่ามันไม่ได้เปลี่ยนไปในขณะที่ ตอนนี้ไม่ว่าสิ่งที่ฉันทำอะไรจะถูกบันทึกยกเว้นเมื่อฉันเริ่มบริการ rsyslog เอง; เมื่อฉันฉันจะได้รับสิ่งนี้: Apr 15 13:59:43 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2847" x-info="http://www.rsyslog.com"] exiting on signal 2. Apr 15 13:59:59 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2853" x-info="http://www.rsyslog.com"] start Apr 15 14:00:11 mymachine1 rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested …


2
จุดประสงค์ของคำสั่ง hostnamectl คืออะไร?
ตรงข้ามกับการแก้ไข / etc / hostname หรือที่ไหนก็ตามที่เกี่ยวข้อง? จะต้องมีเหตุผลที่ดี (ฉันหวังว่า) - โดยทั่วไปฉันชอบวิธี "เก่า" มากซึ่งทุกอย่างเป็นไฟล์ข้อความ ฉันไม่ได้พยายามโต้เถียง - ฉันอยากรู้และตัดสินใจด้วยตัวเองถ้ามันเป็นเหตุผลที่ดี ขอบคุณ

1
ตัวเลือกบรรทัดคำสั่ง systemd คืออะไร - - สวิตช์สลับรูท "และ" - กำจัดซ้ำ "
ทำpsบน Linux กล่องแสดงของฉันที่systemdทำงานกับตัวเลือกบรรทัดคำสั่งและ--switched-root --deserializeไม่มีอะไรใน man page หรือ/usr/share/doc/systemdพูดถึงมันและ Google ก็ไม่ได้ช่วยอะไรมากนัก ดังนั้นพวกเขาจะทำอย่างไร ฉันเดาว่า--switched-rootมีบางอย่างที่เกี่ยวข้องกับpivot_rootแต่นั่นเป็นเพียงการคาดเดา
17 linux  systemd 

1
จะสร้างเป้าหมายระบบได้อย่างไร?
หลังจากค้นหามากมายผ่านโพสต์วิดีโอ Youtube และ "เอกสาร" มากมายในเรื่องของ systemd ฉันยังคงสูญเสีย ลิงค์ ( https://wiki.archlinux.org/index.php/systemd#Create_custom_target ) ดูเหมือนจะมีแนวโน้ม แต่ก็ค่อนข้างคลุมเครือ (สำหรับฉัน) คำถาม เราจะสร้างเป้าหมาย systemd ที่กำหนดเองได้อย่างไร (IE: foo.target) เพื่อให้สามารถบู๊ตด้วยหน่วยบริการที่เลือกได้ ตัวอย่าง ระบบบูต default.target (symlink ของ "foo.target") "foo.target" จะเริ่มโปรแกรม X server และ GUI ของ barebones เท่านั้นให้พูดว่า "gvim" เหตุผล ฉันแค่ต้องการสร้างเป้าหมายที่กำหนดเองสำหรับการเปิดตัวหนึ่งโปรแกรม X อย่างรวดเร็ว ฉันยินดีที่จะยกเว้นบริการทั้งหมดที่ฉันไม่ต้องการ ขอบคุณล่วงหน้า!

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