В Linux вы можете использовать:
ss -ltu
или
netstat -ltu
Список портовl
приемаT
CP и U
DP.
Добавьте параметр -n
(для ss
или netstat
), если вы хотите отключить преобразование номера порта и IP-адреса в имя службы и хоста.
Добавить параметр -p
для просмотра процессов (, если они есть, некоторые порты могут быть связаны ядром, например, для NFS ), которые прослушивают (если у вас нет привилегий суперпользователя, это будет предоставляйте эту информацию только для процессов, запущенных от вашего имени ).
Это будет список портов, на которых приложение прослушивает (UDP, к которому привязан сокет ). Обратите внимание, что некоторые могут прослушивать только заданный адрес только (IPv4 и/или IPv6 ), что будет отображаться в выводе ss
/netstat
(0.0.0.0
означает прослушивание любого IPv4-адреса, [::]
на любом IPv6-адресе ). Даже в этом случае это не означает, что данный другой хост в сети может связываться с системой через этот порт и этот адрес, поскольку любой брандмауэр, включая брандмауэр хоста, может блокировать или маскировать/перенаправлять входящие соединения на этот порт на основе более или менее сложные правила (, такие как разрешать соединения только с того или иного хоста, того или иного исходного порта, в то или иное время и только до того или иного количества минут и т. д. ).
Конфигурацию брандмауэра хоста можно посмотреть в выводе iptables-save
.
Также обратите внимание, что если процесс или процессы прослушивают TCP-сокет, но не принимают там соединения, как только число ожидающих входящих соединений становится больше максимального невыполненного, соединения больше не будут принят, а с удаленного хоста будет показано, что порт заблокирован. Наблюдайте за столбцом Recv-Q
в выводе ss
/ netstat
, чтобы определить те ситуации (, когда входящие соединения не принимаются, и заполнить очередь ).
Если это действительно важно,вы можете написать свою собственную batch-move
программу на C, которая займет, например. список файлов в качестве стандартного ввода и выполняет перемещение с использованием соответствующих системных вызовов Unix.
Если нет, то «узнайте пределы и работайте над этим» точно то, чтоxargs(1)
(делает версия GNU для Linux, здесь ). Я очень сомневаюсь, что вы станете намного быстрее.
Позвольте xargs сделать вычисления за вас.
printf '%s\0' files/* | xargs -0 mv -t new_files_dir
Ваш вопрос, кажется, предполагает, что существует фактическое «ограничение количества аргументов», хотя на самом деле это комбинация двух ограничений:
сумма длин строк аргументов командной строки и переменных среды, включая их завершающие байты NUL.
максимальная длина строки одной команды -строковый аргумент.
Например, вы можете вызвать команду с 200000 однобуквенных -аргументов, с 100000 двухбуквенных -аргументов, но не с одним аргументом размером более 128 КБ.
Предполагая xargs
от GNU coreutils, xargs --show-limits </dev/null
покажет, каковы эти ограничения в вашей системе.
В любой системе xargs
не будет не использовать максимальные ограничения вашей системы при построении командных строк, а выберет что-то разумное, (нет никакого смысла нагружать систему таким образом ).