Önemli bir işlemin kesintiye uğramaması için kapatma nasıl devre dışı bırakılır?


11

Önemli bir işlem çalışırken yeniden başlatmayı / kapatmayı devre dışı bırakmanın veya geçici olarak askıya almanın en basit yolu nedir? İşlem bitirmek için çok uzun sürer ve duraklatılmış / devam ettirilemez, bu yüzden çalışırken pc kapatılmasını önlemek istiyorum. Bu, cron'dan çalıştırılır, bu yüzden manuel olarak çalışan işlemleri kontrol etmedikçe, çalıştığını bilmezdim. Teşekkürler.


5
Olası kopya: SO: Linux'un geçici olarak kapanmasını önler , cevaplar bunun yapılabileceği çeşitli düzeylerde ipucu verir, örneğin kabuk komut dosyaları veya masaüstü ortamının güç yönetimi.
sr_

Yanıtın ya çalışma seviyelerinin açıklaması ya da açıklama bağlantısı olmadan yeterince spesifik olduğunu düşünmüyorum. U&L SE'de değil. Hangi dağıtım ve sürümü kullandığınızı sorabilir miyim?
BSD

Kapatma prosedürünü değiştirmek yerine, işin işin bittiğini göstermesi için bir sarıcı yazın, posta veya bir dosyaya dokunun. İşin tamamlandığını test edin, ardından kapatma işlemini çalıştırın. (cron işlerinin çıktısını sahibine postalar, ancak bu düzeltilebilir).
bsd

Yanıtlar:


1

which shutdownKapatma programının yolunun nerede olduğunu görmek için çalıştırın . Karşı önerdiğim halde dosyayı yeniden adlandırabilirsiniz.

Başka (daha güvenli) bir yöntem. Takma ad kullanın: alias shutdown=' ' Bunun gibi bir şey daha tersine çevrilebilir. Tüm kullanıcıların kapanmasını engellemeye çalışıyorsanız takma adı global olarak ekleyin.


Bir takma ad kullanmayı düşünüyorum, şimdi sadece senaryomu yazmam gerekiyor. Teşekkürler!
zang3tsu

Durma veya kapanma gibi diğer komutlara ne dersiniz? Takma ad oluşturmanız / yeniden adlandırmanız gerekir mi?
mintyfreshpenguin

17

Systemd içeren yeni sistemler için bu çözüldü systemd-inhibit. Kullanım örneği:

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

Daha sonra, bir kullanıcı kapanmaya çalışırsa zorunlu olmadığı sürece buna izin verilmez.

❯ 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'.

Ancak bu sorun var: etkileşimli olmayan bir kök olarak çalıştırmak kilitleri yok sayar. github.com/systemd/systemd/issues/2680
Alicia

Sanırım bu hata raporunu yanlış okudun, koşmaktan bahsediyorlar poweroff
okuduğunuzu düşünüyorum,

Hata raporunu tam olarak nasıl yanlış okudum? : S
Alicia

2

Kritik görev sunucularındaki "shutdown / reboot / poweroff / halt / hostname" komutlarını devre dışı bırakın

chmod 0 /sbin/shutdown

Eğer kullanmanız gerekiyorsa, tekrar chmod olarak değiştirin chmod 0755.


2
Peki ya halt, poweroffve systemctl poweroff?
Martin Ueding

1

/ Root / sudoers dosyasındaki komutu devre dışı bırakırdım, böylece yalnızca root onu yürütebilir.

/ etc / sudoers içinde

# Cmnd alias specification
Cmnd_Alias     SHUTDOWN = /sbin/shutdown

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

ve komutu çalıştırmayı denediğimde:

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

cevabınızı detaylandırabilir misiniz? shutdown, / etc / sudoers içinde açıkça belirtilmemiş olabilir.
Archemar

Elbette, cevabı daha iyi bir açıklama ile düzenledim. Şerefe
vmule


-1

shutdownteknik olarak da kaldırabileceğiniz bir uygulamadır. Koş which shutdown. whichsize uygulamanın yolunu gösteren bir komuttur. Benim durumumda çıktı /sbin/shutdown. Sadece bir dosya rm shutdown. Veya geçici olarak devre dışı bırakmak istiyorsanız, adı değiştirin ve orijinal dosyayı kaldırın.

Bunu yapmak için yeterli izinlere sahip olmalısınız rm shutdown. Bu salt okunur, bu yüzden bir hata alabilirsiniz. Bunu kaldırmayı deneyin rootveya gerekirse komutu kullanmayı deneyin rm shutdown.


3
Neden -rbayrak? Bir dosya için buna ihtiyacınız olmayacak ve eğer bir şeyi yanlış yazarsanız, felaket ortaya çıkar.
MadTux
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.