Что я думаю, вы хотите сделать, это получить список портов прослушивания, а затем удалить их из любых других подключений TCP, то это будет все исходящие соединения. SS (Socket Status) Команда выводит «Локальный адрес: порт» и «Адрес PORE»: «Порт» столбцы, нам нужно удалить порты прослушивания из столбца «Локальный адрес: порта», а не в столбце «Адрес Peer: Port», В противном случае вы можете пропустить некоторые исходящие соединения. Так что для достижения того, что я использую \ S {2} +
за строку «: $ Port» в GREP, чтобы соответствовать пробелам, которые существуют за столбцом «Локальный адрес: порт»; Эта колонна имеет два или более белых пробела за ним, где «адрес сверстника: порт» имеет одно пространство, а затем новая линия (GRRR ... должен просто иметь новую линию, IMO, то я мог бы использовать \ S +
Вместо \ S {2} +
.) Обычно я могу попытаться использовать функциональность фильтрации SS, как с состоянием SS -TN, установленном »(Sport! =:
. Но кажется, что есть предел, насколько длится эта строка, она бомбила в системе, где у меня было много портов прослушивания. Так что я пытаюсь сделать то же самое с Greep. Я считаю, что следующее будет работать:
FILTER=$(ss -tn state listening | gawk 'NR > 1 {n=split($3,A,":"); B[NR-1]=A[n]} END {for (i=1; i<length(B); i++) printf ":%s\\s{2}+|", B[i]; printf ":%s\\s{2}+", B[i]}')
ss -tn state established dst :* | grep -P -v "$FILTER"
Примечание. Это зависит от версии SS, которые вы используете, более старые версии (например: утилита SS, iProute2-SS111117) имеет другой выходной формат, поэтому вам, возможно, придется использовать 3 доллара вместо 4 доллара в awk. Примечание также SS -TLN
и SS -TN State прослушивание
дает вам разные выходные данные, что мне немного противотуировано. YMMV.
Я нашел немного более элегантное решение, которое не требует знания IP-хоста, SS -TN State Установлено DST: *
работает хорошо, я модифицировал командные строки выше.
Чтобы отредактировать файл:
sudo nano -w /etc/x11/xorg.conf.d/50-synaptics.conf
Перейдите в начало строки с помощью ...:
Ctrl + k
, чтобы удалить всю строку, или используйте backspace, как в Блокноте. Теперь для выхода:
Ctrl + x
Ответьте на вопросы, которые вам задают (если вы хотите сохранить, а где - в основном нажатие Y и Enter).
PS. Если вы ничего не можете сделать (у вас нет доступа к терминалу), попробуйте нажать Ctrl + Alt + F4 . Вы приземлитесь на другом терминале. Войдите в систему, указав свое имя пользователя и пароль, выполните команду, которую я вам дал, а затем попробуйте перезапустить.