Когда я перехожу от b к a от имени пользователя wilmes, почему сохраняется первоначальный владелец a (root)?
Потому что cp
по умолчанию (без флагов -a
или -p
) не изменяет время или владельца целевого файла. В вашем случае файл a
принадлежит root
, но поскольку у вас есть права на запись через группу, вы можете модифицировать файл, в том числе обрезать его и перезаписать полностью. Чего вы не можете сделать, так это изменить временные метки, поскольку это может сделать только владелец файла.
Если целевой файл не существует, он будет создан с uid пользователя, запустившего cp
, то есть wilmes
. (И без привилегий суперпользователя вы также не могли изменить владельца.)
Однако, поскольку у вас также есть права на запись в каталог, вы можете сначала удалить целевой файл, а затем создать его заново, и в этом случае он будет принадлежать пользователю, запустившему cp
.
Как говорит Лучано в комментарии, скорее всего, причиной является дисковый ввод-вывод.
Причина получения большего количества процессов в том, что ваш конвейер запускает как минимум 5 процессов. Таким образом, вы должны увидеть как минимум 64 * 5 запущенных процессов. Некоторые из них также могут запускать несколько потоков.
Параллельный дисковый ввод-вывод очень непредсказуем (см. https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/ ) и На практике невозможно сказать, сколько параллельных работ является оптимальным, поскольку это зависит от очень многих факторов.
Итак, чтобы оптимизировать ваш поток, я бы скорректировал количество заданий, пока вы не добьетесь максимальной пропускной способности. Вы можете использовать --joblog, чтобы узнать, как долго выполняется каждое задание.