ถ้าผมติดตั้งบริการใหม่แล้วตัดสินใจฉันไม่ต้องการโปรแกรมที่อีกต่อไปและลบมันบริการจะยังคงอยู่ในการส่งออกจากsystemctl
เป็นข้อผิดพลาด
สิ่งนี้มาจากไหนและฉันจะลบออกได้อย่างไร
ถ้าผมติดตั้งบริการใหม่แล้วตัดสินใจฉันไม่ต้องการโปรแกรมที่อีกต่อไปและลบมันบริการจะยังคงอยู่ในการส่งออกจากsystemctl
เป็นข้อผิดพลาด
สิ่งนี้มาจากไหนและฉันจะลบออกได้อย่างไร
คำตอบ:
สูตรของฉันสำหรับการกำจัดบริการ (โปรดระมัดระวังด้วยrm
คำสั่ง!)
systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] symlinks that might be related
systemctl daemon-reload
systemctl reset-failed
อาจเป็นไปได้ว่าบริการ systemd 'ปิด' สคริปต์แบบเก่าใน /etc/init.d ดังนั้นคุณอาจต้องการล้างข้อมูลด้วยเช่นกัน แต่นั่นไม่ใช่ตำแหน่งที่บริการ systemd ใช้งานอยู่
/etc/init.d/[servicename]
ก่อนที่จะเริ่มทำงานsystemctl reset-failed
systemctl cat [servicename]
การค้นหาไฟล์ทุกหน่วยที่จะเอาผมตรวจสอบการส่งออกของ
คุณอาจกำลังมองหาreset-failed
:
$ sudo systemctl reset-failed
$
จาก systemd man page:
reset-failed [PATTERN...]
รีเซ็ตสถานะ "ล้มเหลว" ของหน่วยที่ระบุหรือหากไม่มีชื่อหน่วยผ่านให้รีเซ็ตสถานะของหน่วยทั้งหมด เมื่อหน่วยหนึ่งล้มเหลวในบางวิธี (เช่นกระบวนการออกโดยไม่มีรหัสข้อผิดพลาดที่ไม่ใช่ศูนย์ยุติอย่างผิดปกติหรือหมดเวลา) หน่วยจะเข้าสู่สถานะ "ล้มเหลว" โดยอัตโนมัติและรหัสทางออกและสถานะจะถูกบันทึกไว้เพื่อวิปัสสนาจนกระทั่งบริการ ถูกรีสตาร์ทหรือรีเซ็ตด้วยคำสั่งนี้
ดูเหมือนว่าคุณจะถอนการติดตั้ง แต่ไม่ได้ลบ systemd hook:
# systemctl disable [servicename]
การเพิ่มคำตอบของ@ mark-lakataและคำนึงถึงความใส่ใจที่จำเป็นสำหรับrm
คำสั่ง [chkconfig]
สามารถลดความซับซ้อนของกระบวนการ! ( คลิกที่นี่เพื่ออ่านเกี่ยวกับ chkconfig )
หากต้องการย้ำรายการคำสั่งอีกครั้ง:
systemctl stop [servicename]
chkconfig [servicename] off
systemctl daemon-reload
systemctl reset-failed
หมายเหตุ: คำสั่งที่ 1 เป็นทางเลือกขึ้นอยู่กับว่าคุณต้องการให้บริการยังคงทำงานอยู่ในเซสชันปัจจุบันหรือไม่ (สำหรับคำถามนี้ควรใช้คำสั่งนี้)
คำสั่งที่ 2 ดูแลทั้งการปิดและการลบ (ตาม symlink) บริการ
chkconfig
เป็นคำสั่งดั้งเดิมเพื่อเปิด / ปิดการใช้งานบริการ SysVinit ในระบบที่ใช้systemd
อาจเป็นคำสั่งที่เข้ากันได้แบบย้อนหลัง แต่systemctl
คำสั่งพื้นฐานนั้นเรียบง่าย:systemctl disable [servicename]
การลบบริการออกจาก systemd:
Systemd ใช้หน่วย (ไฟล์เพื่อกำหนดบริการ) เพื่อลบบริการที่ต้องลบยูนิต ... นี่คือรายการของที่ตั้งหน่วย:
/etc/systemd/system/ (and sub directories)
/usr/local/etc/systemd/system/ (and sub directories)
~/.config/systemd/user/ (and sub directories)
/usr/lib/systemd/ (and sub directories)
/usr/local/lib/systemd/ (and sub directories)
/etc/init.d/ (Converted old service system)
รีเฟรช systemd:
systemctl daemon-reload
systemctl reset-failed
บริการผี (ไม่พบ):
Systemd สามารถแสดงรายการ ghost (not-found) services แม้ว่าหน่วยจะถูกลบด้วยเหตุผลหลายประการ
(*) หากมีการกล่าวถึงบริการในหน่วยอื่น แต่ไม่มี systemd จะยังคงแสดงรายการบริการที่มีสถานะที่ไม่พบแม้ว่าจะไม่มีไฟล์หน่วย ... คุณสามารถค้นหาสิ่งที่หน่วยใช้บริการนั้นด้วยการค้นหาข้อความ และแก้ไขหน่วยเหล่านั้น (ไม่แนะนำหากคุณวางแผนที่จะติดตั้งบริการนั้นในภายหลัง)
/usr/lib/systemd/system
/etc/systemd/system/
สำหรับการอ้างอิงดู: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…