Ядро linux поддерживает список ожидания процессов, которые «блокируются» на IO / мьютексах и т. д. Если нет запускаемого процесса, процесс простоя помещается в очередь выполнения до тех пор, пока он не будет выгружен задачей, выходящей из ожидания queue.
Причина, по которой у него есть задача, заключается в том, что вы можете измерить (приблизительно), сколько времени ядро тратится из-за блоков на IO / locks и т. д. Кроме того, это делает код, который намного проще для ядро, поскольку задача бездействия такая же, как и каждая задача, которой он нужен для переключения контекста, вместо задачи «специального случая», которая может затруднить изменение поведения ядра.
я получаю чувство, что по крайней мере необходимо смочь сделать это от терминала.
Да, это довольно легко сделать путем рассмотрения меток времени в /var/lib/dpkg/info/
. Например,
ls -lct /var/lib/dpkg/info |egrep -o "May.*\." | cut -d. -f1 | uniq | more
-lct
виды ctime, "май" является током (или недавний) месяц, который Вы ищете, cut
просто удаляет раздражающий период в конце, и uniq
удаляет дубликаты. Это дает Вам что-то как:
... May 11 18:03 libcogl-pango0:amd64 May 11 18:03 libcogl9:amd64 May 11 18:03 libcaribou0:amd64 May 11 18:03 libcaribou-common May 11 03:35 libcpufreq0 May 11 03:35 cpufrequtils ...
предположим Вы хотите обработать в пакетном режиме - удаляют все пакеты, установленные 11 мая в 18:03, Вы сделали бы что-то вроде этого:
apt-get remove `ls -lct /var/lib/dpkg/info | egrep -o "May.*18:03.*\." | cut -d. -f1 | uniq | cut -d' ' -f4 | tr '\n' ' '`
то, где 2-е cut
просто выбирает имена пакета и tr
, преобразовывает разрывы строки в пробелы, чтобы дать Вам список, подходящий для apt-get
.