Вот мое ужасное решение:
ps --no-headers -e -o pid,%cpu,%mem,args | grep -v "ps --no-headers" > ps.txt && awk '{ print $1 }' ps.txt > pids.txt && cat pids.txt | xargs pwdx | cut -d ' ' -f 2 > pwd.txt && awk '{ print " "$1" "$2" "$3" "}' ps.txt > ps1.txt && cut -d ' ' -f 4- ps.txt > ps2.txt && paste ps1.txt pwd.txt ps2.txt
Можно ли это сделать без записи файлов? Или просто менее кошмарно?
Link -локальные адреса (, начинающиеся с fe80::
), вполне подходят для вашего варианта использования. Они назначаются автоматически — настройка не требуется.
Единственная проблема с локальными адресами ссылки -заключается в том, что все локальные адреса ссылки -имеют один и тот же префикс (fe80::/10
), поэтому адрес назначения не содержит информации, через какой интерфейс должен передаваться пакет. По этой причине вам необходимо добавить «идентификатор области действия» к адресу, например. fe80::12:34:56:78%eth0
.
Чтобы решить эту проблему, вы можете использовать mDNS (Multicast DNS )или LLMNR (Link -Local Multicast Name Resolution ), что позволяет использовать имена вместо IP-адресов для адресации хостов на той же сети. Это решение решает как проблему с идентификаторами областей, так и необходимость обработки длинных адресов IPv6.
Чтобы использовать mDNS или LLMNR, вы можете включить службу разрешения systemd -вместе с разрешенной системой systemd -. Systemd -разрешил включает в себя как клиента, так и ответчика для ссылки -разрешения локального имени (для mDNS и/или LLMNR ).
Еще один вариант (, но требующий больше работы и немного излишний, imo )— это использование уникальных локальных адресов. См. Уникальный локальный адрес .