В спецификации ключа A -k1,2
указано один ключ , который начинается в начале первого столбца (включает ведущие пробелы, поскольку разделителем столбцов по умолчанию является переход от непустого к пустому) и заканчивается в конце второго столбца.
Важно понимать, что это всего лишь один ключ. Если вам нужны два ключа, вам понадобятся две опции -k
. При сортировке sort
сравнивает строку «1 50»
с «1 1000»
численно. Для числового сравнения эти строки преобразуются в числа с учетом начальной части (без начальных пробелов), которая выглядит как допустимое число. Итак, мы будем сравнивать 1
и 1
. Поскольку они равны, sort
вернется к резервной сортировке, чтобы определить связи, которые являются лексическим сравнением всей строки.
С -n -k1,1 -k2,2
, sort
сравнивает «1»
с «1»
, а затем поскольку это ничья, учитывает второй ключ ( «50»
vs «1000»
).Поскольку это числовая сортировка, -n -k1 -k2
также будет работать (где -k1
задает ключ, который начинается в первом поле и заканчивается в конце строки, то же как полная линия).
Вы можете использовать lsof -p P1
и lsof -p P2
, чтобы увидеть файловые дескрипторы, открытые двумя процессами. Затем вы можете просмотреть список сокетов и каналов, которые у каждого из них открыты, и посмотреть, есть ли у кого-либо из них одинаковый идентификатор.
imac:barmar $ sleep 100 | sleep 100 &
[1] 51885
imac:barmar $ jobs -l
[1]+ 51884 Running sleep 100
51885 | sleep 100 &
imac:barmar $ lsof -p 51884 | grep -i pipe
sleep 51884 barmar 1 PIPE 0x491a6929f9ea1ca9 16384 ->0x491a6929f9e9fae9
imac:barmar $ lsof -p 51885 | grep -i pipe
sleep 51885 barmar 0 PIPE 0x491a6929f9e9fae9 16384 ->0x491a6929f9ea1ca9
Обратите внимание, что идентификатор назначения канала в первом процессе совпадает с идентификатором источника канала во втором процессе. Это указывает на то, что это два конца одной и той же трубы.