Удаленный доступ к X-серверам в настоящее время обычно запрещен из-за серьезных проблем с безопасностью.
Либо брандмауэры, либо настройки X-сервера препятствуют успешному выполнению этих подключений.
Только локальные сокеты и сокеты домена Unix могут подключаться, таким образом, только localhost:server[.display] или вообще без хоста :server[.display] являются используемыми настройками.
Чтобы выяснить, прослушивает ли ваш X-сервер TCP-порт, вы можете запустить эту команду и посмотреть, отображается ли X-сервер (или ssh в случае туннелирования) с использованием портов в диапазоне 6000+:
$ sudo netstat -anp|grep -w LISTEN
Если ваш сервер прослушивает только связанные сокеты unix, которые будут отображаться с помощью lsof
:
$ sudo lsof -p $(pgrep Xorg)
Эти строки представляют сокеты unix:
Xorg 1874 root 21u unix 0xffff8800d5db4000 0t0 21169 @/tmp/.X11-unix/X0 type=STREAM
Чтобы идентифицировать все процессы, прослушивающие TCP-порт, вы можете запустить это команда:
$ sudo lsof -P | grep -w LISTEN
Например, вот демон ssh, прослушивающий TCP-порт 22:
sshd 1032 root 4u IPv6 22727 0t0 TCP *:22 (LISTEN)
Проверьте это:
awk -F, '{date1[$4]+=$1;++date2[$4]}END{for (key in date1) print "Average of",key,"is",date1[key]/date2[key]}' file
Average of 27:May:2017 is 2677.57
Average of 26:May:2017 is 1410.02
Average of 25:May:2017 is 2940.02
Объяснение:
-F,
: определяет разделитель . В качестве альтернативы может быть awk 'BEGIN{FS=","}...
Затем мы создаем два массива date1
и date2
, в которых мы используем 4-е поле $4
в качестве индекса/ключа массива и первое поле $1
как значение, добавленное к существующему значению той же позиции массива.
Таким образом, для первой строки у нас будет
date1[27:May:2017]+=2415.02
++date2[27:May:2017]
--> увеличивает значение на 1 - -> значение 1 для первой строки
Для следующей той же даты (строка 2) у нас будет
date1[27:May:2017]+=2415.02 + 3465.02
++date2[27:May:2017 ]
--> увеличивает значение на 1 --> значение 2 (вторая строка)
Та же логика распространяется на все строки с одинаковой датой, а также на все разные даты.
В конце мы используем цикл for
для перебора ключей массива date1
(или date2
— ключи одинаковы в обоих массивах = > $4
) и для каждого найденного ключа
мы печатаем ключ
(=дата $4) и мы также печатаем дату1[ключ]
value = сумма всех значений $1
для одной и той же даты $4
, деленная на date2[key]
value = числовое количество найденных строк с одинаковой датой = то же $4
.
Вот вариант с использованием GNU datamash для усреднения:
datamash -t, groupby 4 mean 1 < file |
awk -F'[,:]' '{printf "Average for %dth %s is %f\n", $1,$2,$4}'
Average for 25th May is 2940.020000
Average for 26th May is 1410.020000
Average for 27th May is 2677.570000