ปิดใช้งานบริการทั้งหมดยกเว้น ssh


31

ฉันจะปิดการใช้งานบริการทั้งหมดยกเว้น ssh บนการกระจาย linux ที่ทันสมัย ​​(อิงตาม systemd) ได้อย่างไร

ฉันต้องการที่จะใช้โหมดการบำรุงรักษา

บริการทั้งหมดเหล่านี้จำเป็นต้องหยุดทำงาน:

  • postgres
  • postfix
  • อาปาเช่
  • ถ้วย
  • cron
  • พิราบ

แต่ ssh จะต้องไม่ถูกปิดเนื่องจากสิ่งนี้จะได้คุ้นเคยกับการทำงานในระหว่างโหมดการบำรุงรักษา

แน่นอนฉันสามารถเขียนเชลล์สคริปต์ซึ่งวนรอบรายการบริการที่ฉันต้องการปิดการใช้งาน แต่นี่ให้ความรู้สึกเหมือนฉันได้คิดค้นสิ่งที่มีอยู่แล้ว แต่ตอนนี้ฉันยังไม่ทราบ


1
งานประเภทใด ทำไมคุณต้องการสิ่งนี้
ewwhite

@ user430214 ฉันอัปเดตคำถาม ฉันเพิ่ม: แน่นอนฉันสามารถเขียนเชลล์สคริปซึ่งวนผ่านรายการบริการที่ฉันต้องการปิดการใช้งาน แต่นี่ให้ความรู้สึกเหมือนฉันได้คิดค้นสิ่งที่มีอยู่แล้ว แต่ตอนนี้ฉันยังไม่ทราบ
guettli

คำตอบ:


55

ฟังดูคล้ายกับrunlevelsแทนที่ด้วยเป้าหมายใน Systemd ดังนั้นแทนที่จะเขียนสคริปต์ที่เริ่มต้นและหยุดรายการบริการคุณสามารถสร้างใหม่maintenance.targetที่มีเฉพาะบริการที่จำเป็นเช่น SSH แน่นอนว่า SSH ไม่ค่อยมีประโยชน์หากไม่มีเครือข่ายดังนั้นในตัวอย่างนี้มีการemergency-net.targetแก้ไขอย่างง่ายเพื่อรวม SSH

[Unit]
Description=Maintenance Mode with Networking and SSH
Requires=maintenance.target systemd-networkd.service sshd.service
After=maintenance.target systemd-networkd.service sshd.service
AllowIsolate=yes

จากนั้นคุณสามารถเข้าสู่โหมดบำรุงรักษาโดยใช้

# systemctl isolate maintenance.target

และกลับมา

# systemctl isolate multi-user.target

1
ขอบคุณมากสำหรับคำตอบนี้ มันแสดงให้เห็นว่าการถามนั้นมีประโยชน์แม้ว่าคุณคิดว่าไม่มีคำตอบที่ดียกเว้นการเขียนสคริปต์เชลล์ที่สกปรก Emergency-net.target เป็นโซลูชันที่เรียบง่ายและสง่างาม :-) ยอดเยี่ยม
guettli

แน่นอนมันเป็นเพราะยังดูแลการอ้างอิงทั้งหมดและคุณไม่จำเป็นต้องปรับปรุงสคริปต์ของคุณทุกครั้งที่คุณติดตั้งบริการใหม่
Esa Jokinen

3

อันดับแรกแสดงรายการบริการของคุณและค้นหา systemd-names ที่สอดคล้องกัน

จากนั้นสร้างรายการและหยุดสมาชิกแต่ละรายเพื่อเข้าสู่การบำรุงรักษาเริ่มสมาชิกแต่ละคนหลังจากการบำรุงรักษา


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