Вы можете использовать:
#dnf group remove "KDE Plasma Workspaces"
Также вы можете предоставить список своих групп:
#dnf grouplist hidden |grep -i kde
#dnf grouplist hidden |grep -i gnome
Затем выберите один из них в качестве аргумента группы удалить
В вашем подходе много недоразумений. Я пройдусь по ним один за другим.
dup2
, fork
и передачи дескриптора файла, можно создать много ссылок на один и тот же сокет, что приведет к увеличению его счетчика ссылок. Некоторые из этих ссылок могут быть из открытой таблицы файловых дескрипторов, которая сама по себе может использоваться многими потоками. Эти потоки могут принадлежать к одной и той же группе потоков (PID )или к разным группам потоков. Когда вы используете флаг -p
для netstat
, он перечисляет сокеты, доступные для каждого процесса, и пытается найти процесс для каждого известного сокета. Если есть несколько процессов-кандидатов, нет гарантии, что он покажет интересующий вас процесс. /proc/<PID>/net/tcp
не только перечисляет сокеты, связанные с этим процессом. В нем перечислены все сокеты TCPv4 в сетевом пространстве имен, к которому принадлежит этот процесс. В конфигурации по умолчанию все процессы в системе будут принадлежать одному сетевому пространству имен, поэтому вы увидите один и тот же результат с любым PID. Это также объясняет, почему поток/процесс, который не использует сеть, имеет содержимое в этом файле. Даже если он сам не использует сеть, он все равно принадлежит сетевому пространству имен, в котором другие процессы могут использовать сеть. /proc/<PID>/net/tcp
содержит как прослушивающие, так и подключенные сокеты. Когда вы передаете -l
в netstat
, он покажет вам только прослушивающие сокеты. Чтобы приблизить вывод, вам понадобится -a
, а не -l
. /proc/<PID>/net/tcp
содержит только сокеты TCPv4. Вам также нужно использовать /proc/<PID>/net/tcp6
, чтобы увидеть все сокеты TCP.Если вас интересуют только сокеты в том же пространстве имен, что и ваш собственный процесс, вам не нужно перебирать разные PID. Вместо этого вы можете использовать /proc/net/tcp
и /proc/net/tcp6
, поскольку /proc/net
является символической ссылкой на /proc/self/net
.
Используйте/proc/<pid>/fd
-здесь перечислены все дескрипторы открытых файлов, включая сокеты, используемые процессом. например.
/proc/1278482/fd:
total 0
dr-xr-xr-x. 9 user user 0 Apr 22 23:30../
dr-x------. 2 user user 0 Apr 22 23:30./
lr-x------. 1 user user 64 Apr 22 23:30 4 -> pipe:[640683476]
lrwx------. 1 user user 64 Apr 22 23:30 3 -> socket:[640754628]
lrwx------. 1 user user 64 Apr 22 23:30 2 -> /dev/pts/10
l-wx------. 1 user user 64 Apr 22 23:30 1 -> /home/user/my_sockets.txt
lrwx------. 1 user user 64 Apr 22 23:30 0 -> /dev/pts/10
Затем вы можете найти соответствующую запись (, например. 640754628 )из /proc/<pid>/net/tcp -> inode[6]
, чтобы получить всю информацию о сокете -, например.
tcp:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
1864: 0100007F:A650 0100007F:18EB 01 00000000:00000000 00:00000000 00000000 500 0 640754628 1 0000000000000000 20 4 30 10 -1
(выше приведен пример локального подключения к 127.0.0.1 :6379)