Halt ve Shutdown komutları arasındaki fark nedir?


Yanıtlar:


77

Genellikle, biri shutdownkomutu kullanır . Çok kullanıcılı kabuk sunucuların sistem yönetimi için önemli olan kapatma veya yeniden başlatmadan önce bir zaman gecikmesi ve uyarı mesajı verir; kullanıcılara kesinti süresini önceden bildirir.

Bu nedenle, kapatma komutunun bilgisayarı hemen durdurmak / kapatmak için bu şekilde kullanılması gerekir (en azından Linux ve FreeBSD'de):

shutdown -h now

Veya özel, 30 dakikalık önceden uyarı ile yeniden başlatmak için:

shutdown -r +30 "Planned software upgrades"

Gecikmeden sonra, çalışma seviyesi 0 (durdurma) veya 6 (yeniden başlatma) olarak değiştirmeyi shutdownsöyler init. ( Sistemin atlanması -hya -rda sistemin tek işlem moduna geçmesine neden olacağına (çalışma seviyesi 1) neden olan, çoğu sistem işlemini öldüren ancak sistemi gerçekten durdurmadığını unutmayın;

Sistem süreçleri öldürüldükten ve dosya sistemleri bağlantısı kesildikten sonra, sistem durur / kapanır veya otomatik olarak yeniden başlatılır. Bu, disklerdeki değişiklikleri senkronize eden ve ardından gerçek durma / kapanma veya yeniden başlatma işlemlerini gerçekleştiren haltveya rebootkomutu kullanılarak yapılır .

Linux'ta, sistem kapatma işlemini zaten başlatmadıysa haltveya rebootçalıştırılırsa, shutdowndoğrudan istenen işlemi gerçekleştirmek yerine komutu otomatik olarak çağırır . Bununla birlikte, FreeBSD gibi sistemlerde , bu komutlar önce eylemi kaydeder , wtmpsonra da işlemleri durdurmadan veya dosya sistemlerini sökmeden hemen kendilerini durdurur / yeniden başlatırlar.


İyi açıklama!

18
… Ama şimdi güncel değil. Systemd Linux işletim sistemlerinde, bu komutlar (yalnızca "uyumluluk" için (systemd doco'nun sözleriyle) bulunur. Orada ayrı değildir halt, rebootve shutdownbirbirini çağırmak programları. Tek bir program var, dahili olarak bir kod yoluna giren çok sayıda komut satırı ayrıştırıcısı var. Koşma seviyeleri de yok. Kapatma da tek bir kullanıcı moduna girmez. Aslında, tek kullanıcı modunun adı değiştirildi. Ayrıntılar için, bkz. Unix.stackexchange.com/a/196014/5132 .
JdeBP

49

Geçmiş

1980'lerde BSD vardı halt, rebootve shutdown. Sistem 5 UNIX'in BSD uyumluluk araç takımı vardı. Ancak doğal olarak kendine özgü, farklı bir shutdownemri vardı; ve yoktu haltya da reboothiç. (Bazı Sistem 5 çeşitlerinde SCO XENIX'inki gibi özellikler vardı haltsys.)

BSD haltve rebootkomutları düşük seviyeli, sert ve anındaydı. Düşünceli bir BSD sistemi kapatmaya yol oldu shutdown: Biri gerçekleşmesini beklediğini şeylerin hepsini yaptım komut, wall, servisler incelikle, yazılı günlük girişleri, öldürülen oturum açma vb devre dışı ve kullanıcılara mesajlar.

Alınan bilgelik kaynaklandığı yer BSD ölçüde iken o " shutdownyöneticilerin halt/ reboot" ve ikincisi dikkatle kullanılması olduğunu; insanlar aksine alışkanlığı öğrenildi nerede Sistem 5 dünyaydı halt/ reboot: sadece kullanışlı kestirme ve başka bir şey vardı /usr/ucb/halt, "BSD Uyumluluk Paketi" dan, etkisi de farklı değildi shutdown -h. İkisi de yaptı init 0.

daha fazla okuma

Bugün

Günümüzde, bir dizi olası sistem yönetimi araç setine sahibiz. BSD'ler, 1990'lardaki olası AT&M mekanizmalarından arındırılmış olmalarına rağmen hala araçlarına sahipler. 1992’deki Miquel van Smoorenburg (yeniden) bir Linux init+ yazdı rcve bunlara bağlı olarak, insanlar şu anda UNIX Sistem 5’in yazılımı olmasa da “Sistem 5 init” olarak bahsettiler. init). Ayrıca vardır systemd , sonradan görme ve nosh sahip, her biri, kendi uygulamalarını ait halt, reboot, fasthalt, fastbootve benzeri.

Alet takımları da büyüdü ve değişti. Artık poweroff1980'lerde işletim sistemlerinde mevcut olmayan bir komut var çünkü çoğu çağdaş makinedeki Merkezi İşleme Üniteleri güç kaynaklarını kontrol etmenin bir yolu yoktu. Özellikle Linux araç takımları BSD komutlarını aldı; ancak UNIX Sistem 5'teki BSD uyumluluk araçları gibi, bunlar tam bir işçilik değildir ve işler büyük ölçüde düzleştirilmiştir.

Bu düzleşme bir noktaya bizi getirdi haltve shutdownvardır çoğunlukla aynı. Ancak kesin detaylar araç setinden araç setine kadar değişiklik gösterir ve her araç setinin mekaniği biraz farklıdır.

Ayrıca bu komut seti yüzden şimdi insanlar bilgisayarları gibi kendinden çelişkili talimatlar vermek sağlayan uyumluluk seçenekleri ile festooned hale geldi biraz utanç verici konuma bizi getirdi reboot --haltve poweroff --rebootben nosh kılavuz sayfasına belirtildiği gibi, halt, fasthalt, reboot, fastboot, ve poweroffkomutlar. ☺

Sistem araç seti

halt, reboot, poweroff, telinit, Ve shutdownvardır her biri bir program . Aslında sistemin kendi systemctlprogramı. Bu komutların çeşitli komut satırı sözdizimleri için birkaç komut satırı ayrıştırıcısına sahiptir, hem kendi komutunu, hem de bundan sonra büyük ölçüde dahili olarak bir kod yoluna huniyi içine alır. haltBir eylemi tetiklemek için kullanımıyla shutdownkomut seçenekleri arasında, aynı işlemi tetiklemek için kullanımıyla komut seçenekleri arasında fark yoktur .

systemd, kurtarma modunu (sistemd kullanıcılarının tek kullanıcı modunu yeniden adlandırdığı şey ) kapatma sistemi durumu olarak düşünmez ve bu komutların hiçbirine erişilemez. Seçenek az shutdown now, aynıdır poweroff.

Daha fazla okuma:

BSD'ler

BSD'ler 1980'lerin anlambilimlerini büyük ölçüde koruyor. haltve shutdowndolayısıyla , araç setlerinde pek eşdeğer değildir . haltve reboottek bir program; ve hala düşük seviye, acil ve sert. Oysa shutdownve poweroffaynı zamanda tek bir program, zamanlanmış kapanma, wallmesaj yazma , günlük kaydı eylemleri, oturum açma işlevini devre dışı bırakma vb. Gibi tüm düşünceli şeyleri yapar .

BSD araç setlerinde, shutdown/ poweroffgeleneksel olarak son sistem durum değişikliğini devreye sokmak halt/ rebootbaşlatmak için sona erdi . (Günümüzde çoğu zaman yanlış olan) , aslında " uygulayan / " shutdownbilgisinin hala NetBSD ve OpenBSD ile ilgili olduğu bilgisini aldı. Ancak FreeBSD / TrueOS / DragonFlyBSD'de, seçenek kullanıldığında sadece durum böyledir . Bu BSD günü, hem bu programların normalde çeşitli sinyaller (göndererek nihai sistem durumları değişir yürürlüğe , ve ) işlemek için # 1. does tüm bu sistemlerde sistem devlet yönetimini.haltreboot-oINTUSR1USR2init

Hepsinin üzerinde, seçenek daha az shutdown nowbirine denk olmayan halt, rebootya da poweroff. BSD için geçişler tek kullanıcılı modda bir geçiş için olan, geri için çoklu kullanıcı modu .

Daha fazla okuma:

Nosh araç seti

Nosh sistem yönetimi araç seti olarak, halt, fasthalt, poweroff, fastpoweroff, reboot, ve fastboothepsi tek bir programı vardır. Bu geriye doğru uyumluluk takoz normal sadece zincirleri var shutdown, ters alınan bilgelik. --forceSeçeneği için bu zincir yapar system-controlyerine.

Yani hiçbir fark (devamsızlık var --forcearasında) haltkomuta ve shutdown"BSD / Sistem 5 uyumluluğu" komutları bu set olarak, bu araç grubu içinde (eşdeğer seçeneğiyle) komuta üstünden sadece ince bir dolgu tabakasıdır shutdown.

Daha fazla okuma:

Başlangıç ​​araç seti

Nosh gibi, başlangıç ​​sistem yönetim araç setinde alınan BSD bilgeliğinin tam tersi geçerlidir. halt, rebootve poweroffhepsi normal olarak zincirleyen bir programdır shutdown; --forceseçenek kullanılmadığı sürece, reboot()sistemin kendisini çağırmasını sağlar.

Yani, yine, hiçbir fark (devamsızlık var --forcearasında) haltkomutu ve ve shutdownbu araç grubu içinde (eşdeğer seçeneğiyle) komutu. Ayrıca yine seçenek daha az shutdown now(hangi hiçbiri halt, rebootya poweroffiçine sistemini getiren tüm set seçenekleri de onlar kadar çağırma sona erebilir) tek kullanıcı modu yerine kapatılması.

Daha fazla okuma:

Linux Sistem 5 init+ rcaraç takımı

Yine, bu araç setinde, alınan BSD bilgeliğinin zıttı geçerlidir ve haltve rebootbasitçe shutdown- - eğer sistem zaten güç altında değilse veya "çalışma-seviyelerinde durmadığı sürece, bu durumda bu komutlar gerçekte son sistem durum değişikliğini kabul eder. shutdownsırayla zincirleri init.

Bu yüzden, yine, sistem zaten büyük ölçüde kapatılmadıkça) arasında bir fark yoktur halt, shutdownçünkü eski sadece ikincisini çağırır. Ve evet, yine, seçenek daha az shutdown now(hangi hiçbiri halt, rebootya poweroffiçine sistemini getiren tüm set seçenekleri de onlar kadar çağırma sona erebilir) tek kullanıcı modu yerine kapatılması.


Bu nedenle oylama sistemi seçmenlerin% 80'i çalışmadığı zaman çalışıyor
ychaouche

Şöyle diyorsunuz: "durma ve yeniden başlatma tek bir program; ve hala düşük seviye, ani ve sert" durum böyle değil. Durdurulan sayfa sayfasını dragonflyBSD'den alıntı yapıyorum: Durma ve yeniden başlatma programları, dosya sistemi önbelleğini diske hizalar, tüm çalışan işlemleri bir SIGTERM (ve ardından bir SIGKILL) gönderir ve sırasıyla sistemi durdurur veya yeniden başlatır. Wtmp (5) dosyasına bir kapatma kaydı girilmesi de dahil olmak üzere eylem günlüğe kaydedilir. Bakınız: dragonflybsd.org/cgi/web-man?command=halt§ion=ANY
ychaouche

Şimdi gidip cevabı tekrar okuyunuz, bu listede açıkça belirtilmiş (iki kez) bir dizi şey için; aynı zamanda çeşitli BSD'lerin sistem yöneticisi kılavuzlarında da belirtildiği gibi.
JdeBP

Hangi liste @JdeBP?
ychaouche

11

Bunun, hangi UNIX / Linux sürümünü kullandığınıza bağlı olduğunu düşünüyorum. Centos'ta (ve diğer modern Linux'ları beklerim) çağrıları kapatma işlemini durdurur ( çalışma seviyesi 0 veya 6'da olmamanızı sağlar ) böylece sisteminiz temiz bir şekilde kapanır. Solaris 10'da durma daha acımasızdır, sadece disk önbelleklerini temizler ve sistemi kapatır - herhangi bir komut dosyasını çalıştırmaya veya smf olanaklarını kapatmaya çalışılmaz .


2

AWS EC2 kullananlar için: AWS açıkta , sonlandırıldığında bir örneği shutdown durdurur .halt


Durdur ve sonlandır arasındaki fark nedir ?
roaima

Bu tamamen farklı bir konu, burada durmak, bu yüzden ondan bahsetmedim. Ancak docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
dveim

1
Yani cevap maçında şu söylüyorsun durdurma oysa diyor ve örnek durur yapar durma (veya alternatif terminolojide, sonlandırmak ) örneği durur ve onu siler.
roaima

Evet. Ancak bu AWS'ye özgüdür.
dveim

Ah. Anlıyorum. OP bağlam sağlamamıştır. Var. Teşekkürler.
roaima

0

Linux'ta, "dur" ve "yeniden başlat", kapatma komutunun diğer adıdır - shutdown -hve shutdown -rsırasıyla. Bareword kapanması genellikle -h olarak kabul edilir.


10
Onlar aliaseskabuk takma adları anlamında değillerdir , ama evet, halttemelde sadece çağırır shutdown -hve rebootçalışır shutdown -r. Geçtiğiniz takdirde unutmayın -fiçin (kuvvet) seçeneği haltya reboot, shutdownolan değil denir.
Mikel

Aslında, hala yanlış olmasına rağmen, sistem işletim sistemlerinde Shadur'un buradaki açıklaması Mikel'in düzeltmesinden daha doğrudur. "A sadece B'yi çağırmaz" yok. Bunların hepsi , unix.stackexchange.com/a/196014/5132 adresinde daha ayrıntılı olarak açıklandığı gibi, tek bir programı çağırmanın alternatif yollarıdır .
JdeBP

@JdeBP Bu sistemi yazdığımda bir yıldan daha az bir süredir piyasada kaldı ve hiç duymamıştım, akıl. :)
Shadur

1
@JdeBP Onları eşit olur, diyelim ki, sendmailbu noktada komut - MTA'larla gibi, hepsi hem tanıyacaktır çünkü Kullandığınız init sistemi meselesi aslında yapmaz shutdownve haltgibi.
Shadur

1
Aslında, fark eder; çünkü araç takımları arasındaki ince ve gerçekten de şüphesiz farklılıklar var. İronik olarak, bu aynı zamanda sendmailemir için de geçerlidir. Bu sendmailemir gibi , ama senin düşündüğün şekilde değil.
JdeBP,
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.