Еще один заезд на этой старой лошадке:
function random_free_tcp_port {
local ports="${1:-1}" interim="${2:-2048}" spacing=32
local free_ports=( )
local taken_ports=( $( netstat -aln | egrep ^tcp | fgrep LISTEN |
awk '{print $4}' | egrep -o '[0-9]+$' |
sort -n | uniq ) )
interim=$(( interim + (RANDOM % spacing) ))
for taken in "${taken_ports[@]}" 65535
do
while [[ $interim -lt $taken && ${#free_ports[@]} -lt $ports ]]
do
free_ports+=( $interim )
interim=$(( interim + spacing + (RANDOM % spacing) ))
done
interim=$(( interim > taken + spacing
? interim
: taken + spacing + (RANDOM % spacing) ))
done
[[ ${#free_ports[@]} -ge $ports ]] || return 2
printf '%d\n' "${free_ports[@]}"
}
В этом коде используются исключительно переносимые коды netstat
, egrep
, awk
и др. Обратите внимание, что для внешних команд выдается только вызов, чтобы получить список занятых портов в начале. Можно запросить один или несколько свободных портов:
:; random_free_tcp_port
2070
:; random_free_tcp_port 2
2073
2114
и начать с произвольного порта:
:; random_free_tcp_port 2 10240
10245
10293
Это то, что я использую каждый день, которое проходит через обычный драйвер X11, а не через VGA BIOS, root-доступ не требуется:
xrandr --output LVDS1 --off
LVDS1
соответствующим портом из простой команды xrandr
без параметров. Обычно это что-то вроде VGA1
, HDMI1
или DP1
. Это не переводит экран в режим ожидания в смысле энергосбережения в стиле DPMS -; он фактически отключает указанный видеовыход и отсоединяет его от вашего сервера отображения.
Побочным эффектом этого безголового состояния является то, что ваш «рабочий стол» сожмется до крошечного размера; около 320x200 пикселей; Вы можете нажать клавишу PrintScreen , чтобы увидеть, как это выглядит. Вероятно, это не сработает для ваших юзабилити-тестов, так что...
Для предотвращения усадки; добавить опцию --fb
для установки размера виртуального «рабочего стола» после отключения видеовыхода:
xrandr --output LVDS1 --off --fb 1024x768
LVDS1
соответствующим выходным портом и 1024x768
вашим текущим разрешением. Как только видеовыход будет отключен, а размер виртуального «рабочего стола» будет установлен, вы можете приступать к тестированию.
Когда вы захотите вернуться, повторно -включите свой выход:
xrandr --output LVDS1 --auto
LVDS1
соответствующим выходным портом. --auto
чем-то вроде--mode 1024x768
(замените 1024x768
на желаемое разрешение ). П.С. Мой ответ проверен на Debian 7.0 32 -битная система GNU / Linux, сервер отображения Xorg 1.12.4, графика Intel i915.