Questão Graciosamente matar defrag.exe quando executado no prompt de comando


Quando executo a desfragmentação no prompt de comando, existe alguma maneira de parar o processo antes que ele termine?

Matar a tarefa no TM causa algum problema se estiver no meio da movimentação de um arquivo?

Windows 7 Pro 64bit


4


origem




Respostas:


Em teoria, deve ser seguro apenas terminar o programa (no seu caso, você pode usar CTRL-C) porque é feito um esforço no design do aplicativo Microsoft Disk Defragmenter para evitar a perda de dados no caso de uma interrupção inesperada. Isso está documentado no site da Microsoft da seguinte maneira:

The following steps are the processes by which Disk Defragmenter and
file system defragment an NTFS volume and update the MFT.

   1. Locate the fragments of each file throughout the disk.
   2. Copy the fragments to contiguous locations on the disk.
   3. Verify that the copy is an exact duplicate of the original file.
   4. Update the MFT in NTFS with the new location of the beginning of
      the file.
   5. Free up the space previously used by the file.

Microsoft - Como funciona o Desfragmentador de disco
http://technet.microsoft.com/en-us/library/cc778290(WS.10).aspx
(o texto acima pode ser encontrado em "Atualizando a tabela de arquivos mestre")

Essencialmente, os dados são copiado para novos setores, os ponteiros para os dados que foram movidos são atualizados para apontar para esses novos setores e, em seguida, os setores antigos são liberados como resultado. Essa é uma abordagem muito segura para usar caso ocorra uma falha, porque, no pior cenário (como uma falha em uma tela azul), você teria duas cópias dos mesmos dados, uma em setores não alocados e outra nos sectores atribuídos. Na perspectiva de ler os dados, ele aparecerá da mesma forma.

Além disso, há muitas melhorias que podem ser feitas nas técnicas de desfragmentação de disco que a Microsoft usa (que já são mais do que adequadas para muitas pessoas), e uma variedade de produtos alternativos são examinados e comparados em grande detalhe aqui:

Defragger (do glossário de Java de Roedy Green)
http://www.mindprod.com/jgloss/defragger.html


4



Excelente como de costume Randolf! - Moab


Controle C para cancelá-lo.

Eu não espero que o gerenciador de tarefas faça algum mal, já que ele primeiro pede que o programa seja fechado antes que o brute o force.


6



Razão que eu perguntei é que há alguns anos atrás eu gotejei uma instalação do XP, forçando a desfragmentação a fechar usando o gui, ele não responderia e então eu a matei no TM, tentei várias tentativas mas o TM finalmente a matou, após a reinicialização foi debulhada. Eu estava impaciente naqueles anos da minha vida. - Moab
Sim, matando pela TM nem sempre é uma boa ideia. Uma das lições mais difíceis que aprendi com o C ++ é que criar um processo é fácil. Fechando um processo graciosamente é o que separa os meninos dos homens. - surfasb
É a parte da força bruta que me preocupa, é por isso que eu perguntei se havia um método gracioso. - Moab
@ Moab, apenas use Ctrl + C; Ele não mata o processo, já que você pode vê-lo continua depois (ele detecta o pressionamento de tecla, aborta a desfragmentação e imprime uma mensagem). Lembro-me de que, nos dias do DOS, havia uma maneira de instalar um manipulador Ctrl + C (usei um em um programa Pascal), por isso não é surpresa que os aplicativos de console do Windows 7 possam fazê-lo. - Synetech
@moab: não use TM. Ou pegue uma cópia do mydefrag que lhe dá um controle ainda mais granular sobre seus defrags. Não se preocupe. Ele usa as mesmas APIs que desfragmentam. Venha para pensar sobre isso, não me lembro da última vez que tive que acionar o programa de desfragmentação. Tinha que ser antes do Vista. . . - surfasb


Esta discussão tem muita informação útil sobre se existem perigos para os discos que estavam desfragmentando durante a falta de energia (embora não seja idêntico à sua situação, você ainda está abruptamente interrompendo o programa - como o comentarista gentilmente apontou, se o sistema puder se recuperar a partir de uma interrupção de hardware, uma interrupção de software provavelmente não vai doer).

Parece que defrag está seguindo com o diário que ocorre durante o uso normal.


2



Eu acho que você pode querer adicionar algo como "se até mesmo um hard shut off provavelmente não irá danificá-lo, então para um desligamento de software não vai" - soandos
Artigo legal, mas não responde realmente à minha pergunta sobre como terminar de forma elegante. - Moab
@soandos Esse é um bom ponto. Realmente, as duas formas estão parando o software antes que ele tenha a chance de limpá-lo. - jonsca
@ Moab Eu acho que nós dois estamos dizendo que os métodos convencionais de Ctrl-C ou matá-lo do gerenciador de tarefas não vão machucar nada. Basta executar um chkdsk (ou equivalente) para ter certeza. - jonsca
Sim, mas desta forma você responde mais diretamente à pergunta, apenas algo que você pode querer adicionar à sua resposta. - soandos