“Reboot” ou “shutdown -r now”: qual comando de reinicialização é mais seguro?

50

Temos em nossa organização cerca de ~ 500 máquinas Linux RedHat.

Em todas as máquinas, instalamos aplicativos e serviços em /etc/init.dservidores Oracle RAC. Pretendemos realizar atualizações yum em todas as máquinas e depois disso reiniciar.

Então, eu queria saber qual comando é mais seguro:

reboot

ou

shutdown -r now
dandan
fonte
6
Possível duplicata de: Qual é a diferença entre reboot, init 6 e shutdown -r now?
Henrik Pingel
11
temos todo o tipo - como RedHat 4,5,6,7
dandan
6
Vamos retroceder: por que você acha que pode haver uma diferença na segurança?
underscore_d
2
@underscore_d: não é razoável pensar que se possa ser um comando "somente para uso interno" que não execute as mesmas etapas de desligamento limpo. Por exemplo, talvez um use o outro após executar algumas etapas iniciais de desligamento limpo. Obviamente, a página de manual explica que rebooté apenas um comando legado e ainda existe apenas para compatibilidade com versões anteriores.
Peter Cordes
11
@knowhy A questão não pode ser uma duplicata de uma questão em um diferente local ..
Insane

Respostas:

50

Para sistemas Red Hat, não há diferença funcional entre reboote shutdown -r now.

Faça o que for mais fácil para você.

ewwhite
fonte
13
Mas um faz você digitar mais e é fundamentalmente "mais legal"!
Insano
Um requer acesso de superusuário, o outro pode ser executado por qualquer usuário (a menos que seja restrito) a partir de uma sessão X.
Burhan Khalid
2
@BurhanKhalid Se você tiver pessoas aleatórias fazendo login nas sessões X nos servidores, poderá ter problemas maiores do que se perguntar qual dos dois comandos é "mais seguro".
um CVn
11
Pelo menos no Debian (embora eu admita prontamente que não conheço a Red Hat, mas a resposta de Janne Pikkarainen sugere que ela pode ser semelhante, mas diferente) halt, reboote poweroffnão aceita uma mensagem de razão nem um tempo, como Mikhail T. explicou . Eu acho que consideraria uma ferramenta capaz de fazer algo que outra não permite ser uma "diferença funcional".
um CVn 04/07
88

O desligamento é preferível, pois permite especificar o motivo da ação drástica - algo que você deve sempre fazer. A mensagem será gravada no (s) log (s) para posteridade. Por exemplo:

shutdown -r now 'Kernel upgrade requires reboot'

Você também pode executar uma reinicialização agendada - especificando algo diferente do nowhorário da reinicialização:

shutdown -r 22:00 'Work around kernel memory leak'

Seus usuários receberão lembretes periódicos para sair e assim por diante - o processo será mais organizado e profissional.

Mikhail T.
fonte
13

Se você der uma olhada, no RHEL 7 ambos /sbin/shutdowne /sbin/rebootsão realmente apenas links simbólicos para o systemd systemctlcomando. Então, use o que quiser. Nenhuma diferença funcional como o ewwhite disse, nem mesmo em versões anteriores do RHEL que ainda não usavam o systemd.

Janne Pikkarainen
fonte
12
Eu não encontrar este argumento muito convincente: é óbvio que /sbin/shutdowne /sbin/rebootque não se comportam da mesma em todos os casos (em particular: /sbin/shutdown! Não reiniciar por padrão), por isso, se eles estão simbolicamente ao mesmo executável, em seguida, que devem executável estar examinando ARGV[0]e ajustando seu comportamento de acordo. Embora isso certamente reduz o risco de diferenças não intencionais , não é uma evidência convincente de que não haja diferenças funcionais intencionais que o OP possa querer conhecer.
Ruakh 02/07
3
Cuidado ao assumir que um link simbólico implica equivalência, principalmente se houver nomes diferentes envolvidos.
Mckenzm 04/07/19
ruakh está certo - pense nisso por um momento, embora rebootesteja ligado a um link systemctl, você não pode usar, por exemplo, reboot status whatever.servicecomo faria com o último, pode?
grawity
9

Usar rebooté mais seguro.

O uso de rebootsua intenção é claro e não há como digitar incorretamente algo shutdown -t nowque poderia levar a uma dor de cabeça se você estiver usando em um servidor remoto com controle limitado.

Antzi
fonte
2
IMHO resposta subestimada. Muitas vezes esquecemos o quanto é importante esclarecer as intenções e quanto tempo e xingamentos economiza a longo prazo!
RoughTomato 26/09
1

Para o RHEL moderno, é recomendável usar o comando systemctl, conforme resumido aqui : As distribuições [recentes] RHEL devem usar o novo comando systemctl para emitir poweroff / reboot. Conforme declarado nas páginas de manual de reinicialização e desligamento, elas são "um comando herdado disponível apenas para compatibilidade".

No entanto, se você usar muitas distribuições diferentes ou distribuições de várias safras, talvez fique com ela shutdown -r now 'reason for shutdown'.

O principal motivo para usar rebootseria evitar o risco de esquecer de adicionar o -r ao usar shutdown -rem uma máquina remota, o que poderia resultar facilmente na impossibilidade de efetuar login novamente e na necessidade de usar o administrador remoto (se disponível) para reiniciar o máquina.

robocat
fonte
0

Os sistemas mais antigos definitivamente faziam uma distinção entre shutdowne reboot. Este último não desligava os serviços ou necessariamente sincronizava os buffers de disco. Em ambientes heterogêneos - ou para evitar precedentes que possam ser perigosos no futuro ao encontrar outras implementações * ix - é importante adotar o shutdownhábito.

user19151
fonte