สถานะการบริการ sudo รวมถึงการไม่ดี;


32
$ sudo service cassandra status
● cassandra.service - LSB: distributed storage system for structured data
   Loaded: loaded (/etc/init.d/cassandra; bad; vendor preset: enabled)
   Active: active (running) since Wed 2016-10-12 15:54:40 IDT; 4min 4s ago

สิ่งที่ไม่bad;เป็นส่วนหนึ่งในบรรทัดที่ 2 ของการส่งออกยืน? ฉันได้รับบริการนี้มากมายเช่น mysql, winbind, virtualbox ซึ่งบางส่วนฉันเคยใช้มาแล้วอย่างไม่มีที่ติ (คาสซานดราเป็นการติดตั้งใหม่)

คำตอบ:


42

คำตอบสั้น ๆ :

  • bad: แสดงSystemd Unit filesสถานะการเปิดใช้งาน
  • คุณจะเห็นข้อความประเภทนี้ในระบบที่ใช้ systemd
  • คุณสามารถตรวจสอบสถานะการเปิดใช้งานโดยใช้คำสั่ง:

    sudo systemctl is-enabled <unit-name>
    

    หากแฟ้มหน่วยงานที่เป็นบริการ systemd พื้นเมืองแล้วมันจะทำให้การส่งออกenabled, disabledฯลฯ ถ้ามันไม่ได้เป็นบริการ systemd พื้นเมืองแล้วมันจะให้รายงานข้อความเช่น

    sudo systemctl is-enabled apache2
    apache2.service is not a native service, redirecting to systemd-sysv-install
    Executing /lib/systemd/systemd-sysv-install is-enabled apache2
    enabled
    

    แต่ด้วยคำสั่ง:

    systemctl status apache2
    or
    service apache2 status
    

    badมันจะช่วยให้สถานะ (อาจเป็นเพราะมันไม่สามารถพิมพ์ข้อความที่สมบูรณ์หรือผู้พัฒนาตัดสินใจพิมพ์bad)

คำตอบยาว:

ไฟล์ยูนิตระบบคืออะไร?

หน่วยเป็นวัตถุที่ systemd รู้วิธีจัดการ สิ่งเหล่านี้เป็นตัวแทนมาตรฐานของทรัพยากรระบบที่สามารถจัดการได้โดยชุดของ daemons และจัดการโดยยูทิลิตี้ที่ให้มา มันสามารถใช้กับบริการนามธรรมทรัพยากรเครือข่ายอุปกรณ์ระบบไฟล์เมาท์และพูลทรัพยากรที่แยกได้ คุณสามารถอ่านรายละเอียดเกี่ยวกับหน่วย systemd ที่นี่และที่นี่

ตัวอย่าง:

systemctl status apache2
* apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           `-apache2-systemd.conf
   Active: active (running) since Wed 2016-10-12 14:29:42 UTC; 17s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1027 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)

systemctl จะตรวจสอบว่าapache2เป็นหน่วยดั้งเดิมหรือไม่ ถ้าไม่เช่นนั้นจะขอsystemd-sysv-generatorให้สร้างไฟล์ในรูปแบบหน่วยที่ให้การสนับสนุนคล้ายกับหน่วยดั้งเดิม ในตัวอย่างด้านบนไฟล์ที่สร้างขึ้นจะถูกเก็บไว้ที่ /lib/systemd/system/apache2.service.d/apache2-systemd.conf

Drop-In: /lib/systemd/system/apache2.service.d
               `-apache2-systemd.conf

หมายเหตุ:คุณสามารถค้นหาเครื่องกำเนิดไฟฟ้าที่/lib/systemd/system-generators/systemd-sysv-generatorและคุณสามารถอ่านเพิ่มเติมเกี่ยวกับที่

man systemd-sysv-generator

จุดหลัก :

is-enabled NAME...
       Checks whether any of the specified unit files are enabled (as with
       enable). Returns an exit code of 0 if at least one is enabled,
       non-zero otherwise. Prints the current enable status (see table).
       To suppress this output, use --quiet.

       Table 1.  is-enabled output
       +------------------+-------------------------+-----------+
       |Name              | Description             | Exit Code |
       +------------------+-------------------------+-----------+
       |"enabled"         | Enabled via             |           |
       +------------------+ .wants/, .requires/     |           |
       |"enabled-runtime" | or alias symlinks       |           |
       |                  | (permanently in         | 0         |
       |                  | /etc/systemd/system/,   |           |
       |                  | or transiently in       |           |
       |                  | /run/systemd/system/).  |           |
       +------------------+-------------------------+-----------+
       |"linked"          | Made available through  |           |
       +------------------+ one or more symlinks    |           |
       |"linked-runtime"  | to the unit file        |           |
       |                  | (permanently in         |           |
       |                  | /etc/systemd/system/    |           |
       |                  | or transiently in       | > 0       |
       |                  | /run/systemd/system/),  |           |
       |                  | even though the unit    |           |
       |                  | file might reside       |           |
       |                  | outside of the unit     |           |
       |                  | file search path.       |           |
       +------------------+-------------------------+-----------+
       |"masked"          | Completely disabled,    |           |
       +------------------+ so that any start       |           |
       |"masked-runtime"  | operation on it fails   |           |
       |                  | (permanently in         | > 0       |
       |                  | /etc/systemd/system/    |           |
       |                  | or transiently in       |           |
       |                  | /run/systemd/systemd/). |           |
       +------------------+-------------------------+-----------+
       |"static"          | The unit file is not    | 0         |
       |                  | enabled, and has no     |           |
       |                  | provisions for enabling |           |
       |                  | in the "[Install]"      |           |
       |                  | section.                |           |
       +------------------+-------------------------+-----------+
       |"indirect"        | The unit file itself is | 0         |
       |                  | not enabled, but it has |           |
       |                  | a non-empty Also=       |           |
       |                  | setting in the          |           |
       |                  | "[Install]" section,    |           |
       |                  | listing other unit      |           |
       |                  | files that might be     |           |
       |                  | enabled.                |           |
       +------------------+-------------------------+-----------+
       |"disabled"        | Unit file is not        | > 0       |
       |                  | enabled, but contains   |           |
       |                  | an "[Install]" section  |           |
       |                  | with installation       |           |
       |                  | instructions.           |           |
       +------------------+-------------------------+-----------+
       |"bad"             | Unit file is invalid or | > 0       |
       |                  | another error occurred. |           |
       |                  | Note that is-enabled    |           |
       |                  | will not actually       |           |
       |                  | return this state, but  |           |
       |                  | print an error message  |           |
       |                  | instead. However the    |           |
       |                  | unit file listing       |           |
       |                  | printed by              |           |
       |                  | list-unit-files might   |           |
       |                  | show it.                |           |
       +------------------+-------------------------+-----------+

ถ้าเรารันคำสั่ง:

sudo systemctl is-enabled ssh
enabled

sudo systemctl is-enabled docker
enabled

sudo systemctl is-enabled apache2
apache2.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install is-enabled apache2
enabled

คุณสามารถดูว่าหน่วยต่าง ๆ เป็นแบบดั้งเดิมของ systemd like หรือไม่sshและdockerในเอาต์พุตด้านบนจะแสดงเฉพาะenabledและสำหรับหน่วยที่ไม่ใช่แบบดั้งเดิมapache2แต่ยังคงเปิดใช้งานจะให้ข้อความที่แทนที่จะพิมพ์badที่นี่เนื่องจากเงื่อนไขนี้:

       +------------------+-------------------------+-----------+
       |"bad"             | Unit file is invalid or | > 0       |
       |                  | another error occurred. |           |
       |                  | Note that is-enabled    |           |
       |                  | will not actually       |           |
       |                  | return this state, but  |           |
       |                  | print an error message  |           |
       |                  | instead. However the    |           |
       |                  | unit file listing       |           |
       |                  | printed by              |           |
       |                  | list-unit-files might   |           |
       |                  | show it.                |           |
       +------------------+-------------------------+-----------+

วิธีการแก้:

สถานะbadจะไม่สร้างปัญหา (ผมไม่แน่ใจว่ามันขึ้นอยู่) systemctlแต่มันจะไม่ให้การทำงานทั้งหมดของ คุณสามารถรอรุ่นถัดไปของสิ่งpackageที่จะให้การสนับสนุนsystemdได้ หรือคุณสามารถเขียนไฟล์หน่วยสำหรับบริการของคุณหรือทรัพยากรอื่น ๆ โดยใช้การอ้างอิงที่กำหนด

คุณสามารถอ่านรายละเอียดเกี่ยวกับ systemd, systemctl และหน่วยโดยใช้ด้านล่างอ้างอิง:

  1. Systemctl

  2. หน่วย Systemdและที่นี่

  3. Systemd


ขอบคุณจริงๆสำหรับการพิจารณาอย่างรอบคอบและรอบคอบของหัวข้อ!
แม

2
คำตอบนี้ดูเหมือนจะเสร็จสมบูรณ์ แต่เป็นเรื่องที่สับสน ... คุณดูเหมือนจะให้ข้อมูลจำนวนมากโดยไม่ได้ระบุข้อสรุปรวบยอดที่สรุปได้ว่าคน ๆ หนึ่งอาจ (อาจ) ได้มาจากข้อมูล ตัวอย่างเช่นข้อสรุปโดยตรงที่รัดกุมฉันอนุมาน (มีงานบางอย่าง) จากคำตอบสั้น ๆ ของคุณคือเมื่อเซอร์วิส (systemd unit) ไม่ใช่เนทีฟ systemctl ไม่สามารถรับสถานะการเปิดใช้งานโดยไม่เปลี่ยนเส้นทางไปที่ systemd-sysv-install คำสั่งสถานะ systemctl ด้วยเหตุผลบางอย่างไม่ได้ทำเช่นนั้น แต่แทนที่จะรายงานว่า "ไม่ดี" ในขณะที่เปิดใช้งาน systemctl จะทำการเปลี่ยนเส้นทางเพื่อให้คุณมีสถานะ
EricS

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