November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Friday, August 18th, 2017 05:53 pm

Задачка по сути настолько элементарная, что я даже и ответ писать не буду, сами догадайтесь..
Но её как раз можно использовать для проверки квалификации сисадминов ;)

Условие:
Вы запустили в линуксе копирование большого объёма данных (скажем, с одного диска на другой) с помощью команды dd.
Чтобы данные на ходу не менялись, этот dd запустили в однопользовательском режиме, в котором у вас всего один терминал.
Данных много, поэтому dd копирует их довольно долго.

Вопрос:
Как посмотреть, сколько данных уже скопировалось, и с какой скоростью происходит копирование, чтоб можно было посчитать, сколько примерно времени ещё придётся подождать до конца?

Подсказка:
dd умеет выдавать текущее состояние — сколько блоков уже прочиталось, сколько записалось, какой у них общий объём, и какая выходит скорость копирования — если в него послать сигнал USR1.

Помнится, в древние времена во FreeBSD это можно было сделать, просто нажав Ctrl-T, но в нынешнем линуксе это не работает. Послать сигнал из другого терминала тоже нельзя, ибо терминал только один. Зайти в эту машинку по сети тоже невозможно, ибо однопользовательский режим, сеть не подключена.

Так как же послать этот сигнал, если единственный имеющийся терминал занят этим самым dd?

P.S. Я щас сам как раз это и делаю, копируя один большой диск на другой ;)

Оригинал этой записи в личном блоге.