маршрутизация между двумя частными сетями (NICs)

Ваш очевидный вопрос: тестирование существования процесса с данным PID

ps -p $pid POSIX и должен работать над любым современным невстроенным Unix (не старинные вещи или Minix или BusyBox).

Простой и портативный способ протестировать, существует ли процесс данным PID, kill -0 $pid. Это только работает, если можно отправить сигнал в процесс (сигнал 0 ведет себя как сигнал, который всегда поставляется, но не имеет никакого эффекта), означая это kill работает под эффективным UID процесса или как корень. Если kill работает как другой пользователь, можно протестировать, не сигнализирует ли это “о таком процессе” (ESRCH) или “операции, не разрешенной” (EPERM), но от оболочки это требует знания, как реализация отформатирует сообщение об ошибке.

Ваш базовый дизайн: тестирование, завершился ли процесс

Ваш предложенный дизайн имеет главный дефект: как Вы знаете ли, что PID является процессом bunzip, которого Вы ожидали? Возможно, bunzip закончился и существует теперь другой процесс с его старым PID. Единственное место, где можно надежно ожидать после завершения процесса, находится в его родителе.

Лучший подход должен был бы включить существование несжатого файла и или несуществование сжатого файла, или проверять, что несжатый файл не открыт никаким процессом (с lsof).

1
12.02.2012, 23:33
1 ответ

Я предполагаю, что у Вас есть сети 10.0.0.0/8 один переключатель и 192.168.0.0/24 на другом простое решение проблемы было бы помещено следующее в /etc/hosts файл или независимо от того, что Вы используете для name resolution.

192.168.0.10   machine1-100
192.168.0.11   machine2-100

10.0.1.10      machine1
10.0.1.11      machine2

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

1
27.01.2020, 23:54

Теги

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