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

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

2
วิธีการดีบักยูนิต systemd ExecStart
ฉันอยากรู้ว่าฉันสามารถพิมพ์ExecStart/ExecStopบรรทัดคำสั่งที่ขยายออกได้อย่างเต็มที่หรือไม่ ลองพิจารณาตัวอย่างต่อไปนี้: ExecStart=/usr/bin/java $OPTS_COMMON $OPTS $OPTS_LOG $OPTS_DEBUG some.class.Start --param1 ${PARAM1} --param2 ${PARAM2} ฉันมีบรรทัดคำสั่งที่ค่อนข้างยาวและมีตัวแปรสภาพแวดล้อมมากมายที่เกี่ยวข้อง หากตัวแปรบางตัวผิดปกติ (ตัวอย่างเช่นโดยการกำหนดค่าแบบดรอปดาวน์) บริการอาจไม่เริ่มเลย อย่างไรก็ตามฉันไม่เห็นบรรทัดที่ถูกขยายอย่างสมบูรณ์ด้วย envs ที่ทดแทนได้ทุกที่และฉันพยายามหาว่าอะไรผิด ฉันไม่มีโชค googling สิ่งนี้และจนถึงความเป็นไปได้เดียวที่ฉันพบคือการแก้ไขไฟล์หน่วยเพื่อเรียกใช้/usr/bin/echoแทนการให้บริการเอง แต่นั่นก็ค่อนข้างน่าเบื่อ หรือโซลูชันที่น่ารำคาญยิ่งขึ้น - ตรวจสอบตัวแปรสภาพแวดล้อมทุกตัวทีละตัว มีวิธีใดบ้างที่จะบังคับให้ systemd แสดงให้ฉันเห็นว่าพยายามเรียกใช้จริงหรือไม่?
13 systemd 

7
กำลังเรียกใช้ systemd ภายในคอนเทนเนอร์ docker (arch linux)
ฉันพยายามที่จะดูว่าฉันสามารถเรียกใช้ systemd ภายในคอนเทนเนอร์นักเทียบท่า (ซึ่งเรียกใช้ arch linux ในคอนเทนเนอร์) ฉันเริ่มนักเทียบท่าด้วยความสามารถทั้งหมดและผูกเมานต์ใน cgroups: docker run -it --rm --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro .. อย่างไรก็ตามถ้าฉันพยายามรัน systemd binary: Trying to run as user instance, but the system has not been booted with systemd. พยายามค้นหาวิธีเริ่มต้นสิ่งต่าง ๆ อย่างถูกต้องเพื่อให้ systemd เริ่มต้นขึ้น

2
วิธีกำหนดค่า systemd เพื่อฆ่าและรีสตาร์ท daemon เมื่อโหลดซ้ำ
ฉันมีภูตโรงเรียนเก่าที่ฉันต้องการควบคุมโดยใช้ systemd เมื่อไฟล์การกำหนดค่าเปลี่ยนแปลงจะต้องถูกฆ่าและรีสตาร์ท กล่าวอีกนัยหนึ่งหลังจากแก้ไขไฟล์ปรับแต่งแล้วsystemctl reload MYSERVICEควรจะทำให้กระบวนการหยุดทำงานและเริ่มต้นใหม่ ความพยายามที่ 1: ลองใช้ค่าเริ่มต้น สิ่งนี้บอกให้ systemd ทราบว่าจะเริ่มดีมอนได้อย่างไร แต่ไม่ใช่วิธีโหลดซ้ำ [Service] ExecStart=/usr/bin/MYSERVICE Type=simple เป็นผลstartและrestartทำงานได้ แต่reloadให้ข้อผิดพลาดนี้: # systemctl reload MYSERVICE Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service. พยายาม 2: บอกวิธีฆ่ากระบวนการ นี่เป็นการฆ่ากระบวนการ แต่ systemd ไม่รีสตาร์ทสำหรับฉัน [Service] ExecStart=/usr/bin/MYSERVICE Type=simple ExecReload=/bin/kill -HUP $MAINPID ...ติดตามโดย... # …
12 systemd 

1
วิธีการใช้ systemd-firstboot.service
ฉันสร้างภาพของ Debian Jessie ในการบูตระบบไม่มี/etc/machine-idไฟล์ สิ่งนี้ทำให้เกิดปัญหากับเจอร์นัลที่ไม่เริ่ม ฉันพบว่าใน repo systemd: # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 …
11 linux  boot  systemd 

2
มีวิธีการทำงานเพียงบันทึกด้วย firewalld ใน RHEL7 หรือไม่
ฉันเริ่มใช้ RHEL7 และเรียนรู้เล็กน้อยเกี่ยวกับการเปลี่ยนแปลงที่มาพร้อมกับ systemd มีวิธีดำเนินการ/sbin/service iptables saveในไฟร์วอลล์หรือไม่ $ /sbin/service iptables save The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl. ขนานที่ใกล้เคียงที่สุดที่ฉันสามารถหาได้จากเอกสารคือ--reload: Reload the firewall without loosing state information: $ firewall-cmd --reload แต่มันไม่ได้บอกอย่างชัดเจนว่ามันประหยัดหรือไม่

5
ตั้งค่าชื่อโฮสต์อย่างถูกต้อง - Fedora 20 บน Amazon EC2
บริบท ฉันมีภาพเมฆของ Fedora 20 ที่ทำงานบน Amazon EC2 (ต่อจากนี้ไปจะเรียกว่า "อินสแตนซ์") และฉันมีความไม่แน่นอนเกี่ยวกับการตั้งชื่อโฮสต์อย่างต่อเนื่อง เป้าหมาย ในกรณีนี้สมมติว่าผมต้องการที่จะตั้งชื่อโฮสต์อินสแตนซ์ที่จะpenpen.homelinux.org (ชื่อนี้จะถูกลงทะเบียนที่ DynDNS โดยใช้ddclientแต่นี่เป็นอีกแง่มุมหนึ่งที่เราไม่สนใจ) แน่นอนสามารถตั้งชื่อโฮสต์ด้วยตนเองหลังจากการบูตเสร็จสมบูรณ์ (ใช้hostnamectlในหมู่อื่น ๆ ) แต่เราต้องการให้มีการตั้งค่าชื่อโฮสต์ที่ถูกต้องก่อนเข้าสู่ระบบครั้งแรก /etc/hostnameเดิมที่จะเสมอกำหนดค่าชื่อโฮสต์หนึ่งจะปรับเปลี่ยนเนื้อหาของ น่าเสียดายที่นี่ใช้งานไม่ได้ พฤติกรรมของระบบเริ่มต้น โดยค่าเริ่มต้นอินสแตนซ์ตั้งชื่อโฮสต์เป็นชื่อ EC2 ภายใน หลังจากบู๊ตเราสามารถดูสถานที่ต่าง ๆ ทั้งหมดที่ให้ชื่อโฮสต์และเราพบว่า: Kernel hostname via 'sysctl' : ip-10-164-65-105.ec2.internal Kernel domainname via 'sysctl' : (none) File '/etc/hostname' : contains 'ip-10-164-65-105.ec2.internal' File '/etc/sysconfig/network' : exists …

1
เพิ่มการหมดเวลาการตรวจจับดิสก์ขณะบู๊ตด้วย Linux / Systemd
ฉันมีเครื่องที่มีดิสก์จำนวนมากและคอนโทรลเลอร์ SAS พิเศษในโหมด HBA ดูเหมือนว่าจะทำให้ Linux คิดอย่างน้อย 8-10 วินาทีใน initramfs ก่อนที่ดิสก์จะปรากฏขึ้นจริง หมดเวลาสำหรับการตรวจหาดิสก์คือ 10 วินาที สิ่งนี้ทำให้ BTRFS / MDADM / etc ไม่สามารถติดตั้ง RAID1 ที่ฉันมีในระบบของฉันทำให้ฉันไปที่เชลล์ฉุกเฉินจากที่ที่ฉันสามารถติดตั้งดิสก์ได้จริงและดำเนินการต่อได้ คำถามของฉันคือฉันจะเพิ่มการหมดเวลานี้ตอนบูตได้อย่างไรจาก 10 วินาที? มันอยู่ใน systemd หรือไม่ ใน udev ไหม ที่อื่น? ฉันไม่แน่ใจว่าจะเริ่มมองหาที่ไหนและ googling เกี่ยวกับปัญหานี้ส่วนใหญ่ดูเหมือนว่าจะทำให้คนที่ต้องการเพิ่มการหมดเวลาของ I / O หรือช่วงเวลาอื่น (scsi / lun / etc) แต่ฉันไม่ได้หามัน
11 linux  boot  systemd  timeout  btrfs 

1
Systemd: เรียกใช้สคริปต์ Python เมื่อเริ่มต้น (virtualenv)
ฉันมีสคริปต์ไพ ธ อนซึ่งปกติฉันจะรันด้วยคำสั่งนี้: (environment) python run.py ฉันต้องการเรียกใช้สคริปต์นี้เมื่อเริ่มต้น (ฉันใช้อูบุนตู) นี่คือบริการของฉัน: [Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py [Install] WantedBy=multi-user.target BTW ฉันไม่สามารถเรียกใช้สคริปต์นี้ แต่ฉันสามารถเรียกใช้สคริปต์ที่ไม่ได้อยู่ในสภาพแวดล้อม ฉันจะเรียกใช้สคริปต์ python เมื่อเริ่มต้น (virtualenv) ได้อย่างไร sudo systemctl status user_sent ● user_sent.service - Mail Service Loaded: loaded (/lib/systemd/system/user_sent.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since xxxxx …

2
varnish daemon ไม่ฟังพอร์ตที่ตั้งค่าไว้
ฉันพยายามติดตั้งวานิชบน Ubuntu 16.04 ฉันอ่านบทความต่าง ๆ ที่ไม่มีการทำงาน จากสิ่งที่ฉันอ่านตั้งแต่ Ubuntu 15.04 วิธีการกำหนดค่าวานิชได้เปลี่ยนไป (เพราะ systemd) ตอนนี้ฉันมีระเบียบที่ไม่ทำงาน: / etc / default / varnish: DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s malloc,256m" /etc/varnish/default.vcl (โดยปกติจะชี้ไปที่โฮสต์ที่ชี้ไปที่ 127.0.0 และพอร์ต 8080 แต่เพื่อจุดประสงค์ในการดีบักฉันแก้ไขมันเป็นโดเมนภายนอก) vcl 4.0; # Default backend definition. Set this to point to …

1
Systemd ไม่ได้เริ่มบริการใหม่แม้ว่าจะเริ่มใหม่ = เสมอ
นี่คือไฟล์หน่วยของฉันของบริการ systemd: [Unit] Description=Tunnel For %i After=network.target [Service] User=autossh ExecStart=/usr/bin/autossh -M 0 -N -o "ExitOnForwardFailure yes" -o "ConnectTimeout=1" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 40443:installserver:40443 -R 8080:installserver:8080 tunnel@%i Restart=always [Install] WantedBy=multi-user.target หน่วยล้มเหลว 15 วันที่ผ่านมาและ systemd ไม่รีสตาร์ทแม้ว่า "เริ่มใหม่ = เสมอ" อยู่ในไฟล์หน่วยด้านบน นี่คือสถานะเอาท์พุทของบริการนี้: salt:/srv # systemctl status autossh@eins-work autossh@eins-work.service - Tunnel …

2
journalctl - หยุดการติดตามโดยไม่ออกจากเพจเจอร์
ถ้าฉันทำ: journalctl -u my-service จากนั้นShift-Fให้ทำตามในขณะที่เพจจิ้งฉันจะ(interrupt to abort)ไม่ออกเพจเจอร์ได้อย่างไร ด้วยlessปกติฉันแค่^Cแต่ถ้าฉันทำเช่นนั้นใน journalctl มันจะออกจากเพจเจอร์ทั้งหมด
10 systemd  journald  less 

4
คุณจะแยกแยะความแตกต่างระหว่างการหยุดทำงานและการรีบูตบน RHEL7 ได้อย่างไร
มีวิธีการตรวจสอบว่าเซิร์ฟเวอร์ RHEL7 ถูกรีบูทผ่าน systemctl (หรือรีบูต / ปิดนามแฝง) หรือไม่หรือว่าเซิร์ฟเวอร์ล้มเหลวหรือไม่ Pre-systemd นี้ค่อนข้างง่ายต่อการตรวจสอบlast -x runlevelแต่ RHEL7 ไม่ชัดเจนนัก

3
เริ่มต้นนักเทียบท่าเขียนด้วย systemd บน Ubuntu 15.04
ฉันมีโปรเจ็กต์นักเทียบท่าที่ฉันต้องการควบคุมผ่าน systemd โดยทั่วไปฉันจะใช้สคริปต์ที่มีลักษณะดังนี้: description "Start/Stop server" author "Jim Cortez" start on filesystem and started docker stop on runlevel [!2345] respawn limit 3 240 pre-start script # wait (if necessary) for our docker context to be accessible while [ ! -f /projects/my_server/docker-compose.yml ] do sleep 1 done /usr/local/bin/docker-compose -f /projects/my_server/docker-compose.yml up …

1
Debian 9 เซิร์ฟเวอร์ไม่มี sshd ใน auth.log
ที่หนึ่งในเซิร์ฟเวอร์ของฉันเด 9 มีผลลัพธ์ออกมาจากในsshd /var/log/auth.logในความเป็นจริงถ้าผมทำag sshdใน/var/logมันก็ไม่ปรากฏ เพียงสิ่งเดียวในมีauth.log systemd-logindในความเป็นจริงเป็นที่น่าสงสัยว่าข้อความบันทึกเกือบทั้งหมดมาจาก systemd มีเพียงไม่กี่อย่างเท่านั้นจากสิ่งอื่น นี่คือของฉัน/etc/rsyslog.conf(ลบความคิดเห็น) (ควรเป็นค่าเริ่มต้น): module(load="imuxsock") # provides support for local system logging module(load="imklog") # provides kernel logging support $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $WorkDirectory /var/spool/rsyslog $IncludeConfig /etc/rsyslog.d/*.conf auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* …

1
รอให้บริการออกจากระบบก่อนที่จะปิดเครื่อง / รีบูต
คุณจะเขียนบริการ systemd ที่ปิดระบบได้อย่างงดงามเมื่อปิดเครื่องหรือรีบูตอย่างไร โดยเฉพาะอย่างยิ่งมันควรชะลอการปิดเครื่องจนกว่าจะออกอย่างสง่างาม ฉันมีบริการที่ใช้เวลา 10 วินาทีในการปิด: /usr/local/bin/shutdowntest.sh: #!/bin/bash SHUTDOWN=0 SHUTDOWN_TIME=10 TRAPPED_SIGNAL= function onexit() { TRAPPED_SIGNAL=$1 SHUTDOWN=1 } for SIGNAL in SIGINT SIGTERM SIGHUP SIGPIPE SIGALRM SIGUSR1 SIGUSR2; do trap "onexit $SIGNAL" $SIGNAL done echo >&2 "shutdowntest running" while ((!SHUTDOWN || SHUTDOWN_TIME>0)); do if [[ -n "$TRAPPED_SIGNAL" ]]; then echo …
9 systemd 

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