Отслеживание хода выполнения chmod

Вы можете сделать это с помощью этой команды,

find "$(pwd)" -type f -name "*.gz" -printf "%T@ %p\n"| sort -n | cut -d' ' -f 2 | tail -n 1
3
10.12.2016, 01:07
3 ответа

Вы можете подключиться к запущенному процессу и посмотреть, что он сейчас делает. Это даст вам представление о том, где он находится.

strace -p1234

где 1234 - это идентификатор процесса chmod . Обратите внимание, что многие системы ограничивают пользователей без полномочий root только мониторингом дочерних процессов, поэтому вам придется делать это как root; см. после обновления gdb не будет подключаться к процессу .

Знание того, какой файл в настоящее время обрабатывается, не дает простого способа узнать, что уже было обработано. chmod просматривает дерево файлов в порядке глубины и просматривает каждый каталог в порядке каталогов (порядок ls -U , который не совпадает с порядком ls в целом).

Было бы неплохо узнать, сколько файлов процесс уже обработал, и это можно определить хотя бы приблизительно, зная, сколько системных вызовов сделал процесс, но насколько я знаю, Linux не отслеживает сколько системных вызовов сделал процесс.

4
27.01.2020, 21:18

Вы можете посмотреть на команду pv . На данный момент у меня его нет в этой системе, но он помогает вам контролировать потоки в трубе.

Я предполагаю, что вы делаете что-то вроде:

find stuff -exec chmod 664 {} \;

Вы можете разбить команду, используя каналы, а затем вставить pv или tee, чтобы отслеживать, где что-то было.

Я понимаю, что не стал готовить ответ, но, возможно, эти идеи помогут.

0
27.01.2020, 21:18

В общем, нет, не без какого-либо флага, показывающего, что делает программа, с указанием флага при запуске процесса. (Если вы сделаете его подробным, также обязательно поместите его в сеанс screen или tmux , чтобы вы могли повторно подключиться к нему при необходимости ...)

Некоторые утилиты ( например, dd ) принимает сигнал пользователя для переключения детализации (например, через сигнал USR1 , pkill -USR1 dd ), но это зависит от приложения ( USR1 по умолчанию просто убивает процесс; используйте с осторожностью).

Косвенные указания - это еще один метод, например запустите top , предполагая, что процессы генерируют достаточную нагрузку на ЦП или ввод / вывод, чтобы выделить его (то, что ожидает результатов сети, может показаться, что мало что делает).

Также возможно отслеживание процессов, хотя это может сильно замедлить работу системы (например, strace ); менее дорогостоящими инструментами для такой проверки могут быть dtrace или аналогичный, который может брать образцы и сообщать сводку о том, сколько соответствующих системных вызовов chmod делает за определенное время.

1
27.01.2020, 21:18

Теги

Похожие вопросы