Частичный ответ:
X-серверы могут прослушивать как сокет домена unix (для локальных подключений ), так и TCP-порт (6000 + отображаемый номер ). Последний по умолчанию отключен на современных серверах, что может быть причиной того, что вы не можете подключиться.
Итак, на сервере, к которому вы хотите подключиться (7 ВМ ), выполните ps axu | grep X
или подобное и посмотрите на командную строку, с которой был запущен X-сервер. Если есть -nolisten
или -nolisten tcp
, его нужно убрать; и вы должны добавить -listen tcp
.
Существует несколько способов запуска X-сервера, и я не знаю, какой из них используется в вашей системе. Итак, посмотрите на идентификатор родительского процесса (PPID )процесса X, сделайте еще несколько вызовов ps
и посмотрите, сможете ли вы это понять. Может быть диспетчером отображения (, например. gdm или kdm )или, возможно, systemd. Что бы ни началось, его необходимо настроить для этих параметров командной строки.
Если сервер правильно прослушивает порт 6000, следующим шагом будет проверка правил брандмауэра (iptables ).
Я думаю, что это возможно, упрощая:
for i in {1..11}; do
n_month=$(($i + 1))
[[ $n_month =~ ^[0-9]$ ]] && n_month="0$n_month"
echo "$n_month"
done
Output
02
03
04
05
06
07
08
09
10
11
12
Не используйте ведущие нули в переменных, где вы хотите хранить десятичные значения, потому что в различных контекстах число с ведущим нулем интерпретируется как восьмеричное . Арифметическое расширение является одним из таких контекстов. Следующий код не работает:
i1=09
i2=$((i1+1))
пока этот работает:
i1=9
i2=$((i1+1))
Добавляйте ведущие нули только при печати результатов. Сделайте это, используя printf
в правильном формате. Пример:
i1=9
i2=$((i1+1))
year1=2020
year2=2020
printf "Processing data '%04d-%02d-01 00:00:00' and '%04d-%02d-01 00:00:00'\n" "$year1" "$i1" "$year2" "$i2"
Обратите внимание, что когда printf
ожидает число, он интерпретирует строку с ведущим нулем как восьмеричное число. Так что это еще один контекст, где вам нужно быть осторожным. Пример:
$ printf '%02d\n' 9
09
$ printf '%02d\n' 09
printf: '09': value not completely converted
00
$ printf '%02d\n' 012
10
Это означает, что хотя printf %02d
может быть решением, если вы избегаете ведущих нулей, это может быть ошибкой, если вы этого не делаете.