Почему некоторые утилиты анализируют операнды перед опциями?

FAQ Cygwin упоминает "ресурс, временно недоступный" как одно из сообщений об ошибках, которые могут произойти из-за пути создание процесса дескрипторов Windows. Потенциальные решения, которые это перечисляет:

5
09.10.2015, 04:16
1 ответ

gmrun наследует переменную $ PATH , заданную родителем, который ее породил. Следовательно, можно сделать его исходным ~/.bashrc , инициировав его с помощью:

bash -ci 'gmrun'

Это создает «интерактивную» оболочку; имеет несколько отличий от неинтерактивной оболочки, но отлично работает с gmrun . Просто привяжите приведенную выше команду к горячей клавише.

-121--119534-

Я думаю, что лучшее, что вы можете сделать сейчас, это правильно настроить OpenVPN, чтобы сообщить ему, что есть второй сервер, например:

Реализация конфигурации балансировки нагрузки/аварийного переключения Клиент

Конфигурация клиента OpenVPN может относиться к нескольким серверам для балансировка нагрузки и отработка отказа. Например,

remote server1.mydomain
remote server2.mydomain
remote server3.mydomain

будет направлять OpenVPN-клиент на попытку соединения с server1, server2 и server3 в таком порядке. Если существующее соединение нарушен, клиент OpenVPN повторит попытку последнего подключения сервер, и если это не удастся, перейдет к следующему серверу в список. Можно также поручить клиенту OpenVPN рандомизировать его сервер список при запуске, чтобы загрузка клиента была вероятной распределяется по пулу серверов.

remote-random

Если вы также хотите, чтобы ошибки разрешения DNS вызвали OpenVPN клиент для перемещения на следующий сервер в списке, добавьте следующее:

resolv-retry 60

Параметр 60 сообщает клиенту OpenVPN, чтобы попытаться разрешить каждый удаленный DNS-имя в течение 60 секунд перед переходом на следующий сервер в список.

Список серверов может также относиться к нескольким демонам серверов OpenVPN выполняется на одной машине, каждый прослушивает соединения на другой порт, например:

remote smp-server1.mydomain 8000
remote smp-server1.mydomain 8001
remote smp-server2.mydomain 8000
remote smp-server2.mydomain 8001

Если серверы являются многопроцессорными машинами, используется несколько OpenVPN демоны на каждом сервере могут быть выгодны с точки зрения производительности точка зрения.

OpenVPN также поддерживает удаленную директиву, ссылающуюся на DNS-имя который имеет несколько A-записей в конфигурации зоны для домена. В этом случае клиент OpenVPN случайным образом выберет один из A записывает каждый раз при разрешении домена.

Источник: https://openvpn.net/index.php/open-source/documentation/howto.html#loadbalance

-121--166880-

Обычно аргументы всегда следуют за опциями. Первый параметр (первая последовательность в командной строке, которая не начинается с - ) завершает параметры и начинает аргументы.

Некоторые инструменты, особенно инструменты сборки (компиляторы, линкеры), всегда шли вразрез с этим соглашением. Другим приведенным примером является find . Иногда это происходит потому, что параметры вступают в силу в точке командной строки, где они появляются, поэтому требуется путь для указания аргументов как до, так и после параметра, где параметр применяется к этому аргументу, только если аргумент появляется после параметра.

Это соглашение позволяет написать сценарий оболочки, который содержит такую строку:

rm foobar ${more_things_to_remove}

...и гарантируйте, что вы не сможете случайно добавить параметры в команду rm , даже если переменная оболочки более _ вещей, _ для _ удаления , имеет неприятное значение, такое как « -rf ».

Это соглашение предшествует более позднему соглашению об использовании специального варианта -- для прекращения обработки варианта. -- является гораздо лучшим способом явной маркировки конца опций:

rm -- foobar ${more_things_to_remove}

# and it works even if you don't need to delete something called "foobar":
rm -- ${more_things_to_remove}

Так в последнее время (и в последнее время, я имею в виду, это уже происходит много-много лет) гораздо больше синтаксических анализаторов командной строки, похоже, двигались к нарушению более раннего соглашения и позволяли, видимо, смешивать варианты и аргументы повсюду (при условии, что всегда - вынуждает к окончанию вариантов), даже если у них нет особых причин нарушать соглашение, как это сделали компиляторы и некоторые другие инструменты.

Лично я никогда не знаю, какие коммунальные службы все еще придерживаются конвенции, а какие нет, поэтому я всегда ставлю варианты перед аргументами, как раньше, и я слегка удивлен, когда вижу чужой рабочий код, который делает это в противоположном порядке!

3
27.01.2020, 20:41

Теги

Похожие вопросы