Я сравниваю два USB-устройства после rsync
с md5sum / usb1 / * / usb2 / * | sort
так, чтобы для всех файлов, находящихся в корне дисков, были вычислены их суммы md5, затем вывод сортируется по md5sum. Вся команда расширяется, например, до md5sum / usb1 / bigfile1 / usb1 / bigfile2 / usb2 / bigfile1 / usb2 / bigfile2
. Из-за нетерпения я задаюсь вопросом, каков прогресс, то есть над каким файлом он работает прямо сейчас? Поскольку он передан в другую команду, у меня нет stdout или stderr, чтобы увидеть, какой файл хэшируется atm. Есть ли какая-то команда, чтобы сообщить о том, что делает другая команда прямо сейчас ?
Я помечен здесь как «сигналы», но я мало знаю о сигналах, чтобы было удобно прерывать md5sum процесс с одним. Я помню, что можно было отправить сигнал на dd
, чтобы он сообщил о ходе выполнения.
Вы можете использовать прогресс
для этого:
progress -p $(pgrep md5sum)
или, если вы хотите постоянно контролировать md5sum
:
progress -m -p $(pgrep md5sum)
Без использования внешнего инструмента , вы можете увидеть, к каким файлам md5sum
в настоящее время обращается в Linux, перечислив /proc/$(pgrep md5sum)/fd
, и узнать больше информации об дескрипторах файлов (включая их положение , который показывает, сколько было обработано md5sum
), просматривая файлы в /proc/$(pgrep md5sum)/fdinfo
.
Как вы упомянули, dd
распечатает отчет о проделанной работе, когда получит SIGUSR1
, но это функция, реализованная dd
, а не общий сигнал- опосредованный признак. По умолчанию отправка SIGUSR1
процессу уничтожит его.
Другая команда, которая работает как cat
, это pv
. Он загружает содержимое файла в стандартный вывод, который вы передаете другой программе (md5sum ), а индикация хода выполнения выводится через стандартный вывод. Хотя это действительно хорошо только для 1 файла за раз. Используйте какpv /usb1/bigfile1 | md5sum