วิธีการปิดการใช้งานการปิดเพื่อให้กระบวนการที่สำคัญไม่สามารถถูกขัดจังหวะ?


10

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


5
ซ้ำกันที่เป็นไปได้: SO: ชั่วคราวป้องกันไม่ให้ลินุกซ์ปิดตัวลงคำตอบคำแนะนำในระดับต่างๆที่สามารถทำได้เช่นเชลล์สคริปต์หรือการจัดการพลังงานของสภาพแวดล้อมเดสก์ทอป
sr_

ฉันไม่คิดว่าคำตอบนั้นเฉพาะเจาะจงมากพอหากไม่มีคำอธิบายของ runlevels หรือลิงก์ไปยังคำอธิบาย มันไม่ได้อยู่ใน U&L SE ฉันขอถาม distro และรุ่นที่คุณใช้ได้ไหม
bsd

แทนที่จะแก้ไขขั้นตอนการปิดเครื่องให้เขียน wrapper เพื่อให้งานบ่งชี้ว่าเสร็จสิ้นแล้วไม่ว่าจะเป็นเมลหรือแตะไฟล์ ทดสอบการเสร็จงานแล้วเรียกใช้ปิดเครื่อง (cron ส่งเอาต์พุตของงานให้เจ้าของ แต่สามารถปรับแต่งได้)
bsd

คำตอบ:


1

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

อีกวิธี (ปลอดภัย) ใช้นามแฝง: alias shutdown=' ' บางสิ่งเช่นนี้กลับได้ง่ายกว่า หากคุณพยายามป้องกันการปิดระบบจากผู้ใช้ทั้งหมดให้เพิ่มชื่อแทนทั่วโลก


ฉันกำลังคิดที่จะใช้นามแฝงตอนนี้ฉันแค่ต้องเขียนสคริปต์ของฉัน ขอบคุณ!
zang3tsu

สิ่งที่เกี่ยวกับคำสั่งอื่น ๆ เช่นหยุดหรือ poweroff คุณจะต้องสร้างนามแฝง / เปลี่ยนชื่อด้วยหรือไม่
mintyfreshpenguin

17

สำหรับระบบใหม่ที่มี systemd systemd-inhibitนี้ได้รับการแก้ไขโดย ตัวอย่างการใช้งาน:

systemd-inhibit --why="Doing weekly backup" bash my-backups.sh

จากนั้นหากผู้ใช้พยายามปิดระบบจะไม่ได้รับอนุญาตเว้นแต่จะถูกบังคับ

❯ systemctl poweroff
Operation inhibited by "bash my-backups.sh" (PID 2414 "systemd-inhibit", user ntrrgc),
reason is "Doing weekly backup".
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl poweroff -i'.

มีปัญหานี้อยู่แม้ว่า: การเรียกใช้มันเป็นรูทแบบไม่โต้ตอบจะไม่สนใจการล็อก github.com/systemd/systemd/issues/2680
อลิเซีย

ฉันคิดว่าคุณอ่านรายงานข้อผิดพลาดผิดพวกเขากำลังพูดถึงการทำงานpoweroffในฐานะผู้ใช้ที่ไม่ใช่แบบโต้ตอบ
Ferrybig

ฉันจะรายงานข้อผิดพลาดได้อย่างไร? : S
Alicia

2

ปิดใช้งานคำสั่ง "shutdown / reboot / poweroff / halt / hostname" เช่นคำสั่งในภารกิจสำคัญของเซิร์ฟเวอร์

chmod 0 /sbin/shutdown

ถ้าคุณต้องการใช้มันให้เปลี่ยนกลับไปchmod 0755เป็น


1
สิ่งที่เกี่ยวกับhalt, poweroffและsystemctl poweroff?
Martin Ueding

1

ฉันจะปิดการใช้งานคำสั่งในไฟล์ / etc / sudoers เพื่อให้รูทเท่านั้นที่สามารถดำเนินการได้

ใน / etc / sudoers

# Cmnd alias specification
Cmnd_Alias     SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
vmule   ALL=(ALL:ALL) ALL, !SHUTDOWN

และเมื่อฉันพยายามเรียกใช้คำสั่ง:

vmule@debian:~$ sudo /sbin/shutdown  -r now
Sorry, user vmule is not allowed to execute '/sbin/shutdown -r now' as root on debian.vm

คุณอธิบายรายละเอียดของคำตอบได้ไหม? การปิดระบบอาจไม่ได้ระบุไว้อย่างชัดเจนใน / etc / sudoers
Archemar

แน่นอนว่าฉันได้แก้ไขคำตอบพร้อมคำอธิบายที่ดีกว่า ไชโย
vmule

0

ฉันต้องการป้องกันไม่ให้ผู้ใช้ในพื้นที่ปิดแล็ปท็อประหว่างการอัพเกรด การปิดใช้งานอุปกรณ์อินพุตเป็นวิธีที่ดีที่สุด สำหรับฉันแล้วมันก็เพียงพอแล้วที่จะปิดการใช้งานเม้าส์

แน่นอนว่ามีข้อเสียคือคอมพิวเตอร์ไม่สามารถใช้งานได้ในช่วงเวลานี้

ปิดใช้งานการป้อนข้อมูลด้วยแป้นพิมพ์และเมาส์บน unix (ใต้ X)


-1

shutdownเป็นแอปพลิเคชันทางเทคนิคด้วยซึ่งคุณสามารถลบได้ which shutdownวิ่ง whichเป็นคำสั่งที่แสดงเส้นทางของแอปพลิเคชั่น /sbin/shutdownในกรณีของฉันออกเป็น rm shutdownมันเป็นไฟล์ดังนั้นคุณก็สามารถทำได้ หรือถ้าคุณต้องการปิดใช้งานการคัดลอกชั่วคราวให้เปลี่ยนชื่อและลบไฟล์ต้นฉบับ

rm shutdownคุณต้องมีสิทธิ์เพียงพอถ้าคุณต้องการที่จะทำ มันเป็นแบบอ่านอย่างเดียวดังนั้นทำไมคุณอาจได้รับข้อผิดพลาด ลองลบมันออกrootหรือลองใช้คำสั่งrm shutdownก็ได้


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