эквивалентная команда `route -n` в BSD

Допустим, this.py содержит следующее:

#!/usr/bin/python
from datetime import datetime
now = datetime.now()
print now

Следующее в Bash будет выполнять 10 процессов this.py одновременно в 20 000 раундов. Следующий раунд начинается после завершения 10 процессов. Это позволит вам выполнить this.py 200 000 раз, используя одновременно только 10 потоков.

#!/bin/bash
for i in {1..20000}; do
  echo -e "\nROUND $i\n"
  for j in {1..10}; do
    /path/to/this.py &
  done
  wait
done 2>/dev/null

... или используйте однострочник:

for i in {1..20000}; do echo -e "\nROUND $i\n"; for j in {1..10}; do /path/to/this.py & done; wait; done 2>/dev/null

Очевидно, вы можете исключить строку echo . Я просто сделал это в целях тестирования и чтобы показать хороший результат, когда STDERR перенаправлен на / dev / null . Мой вывод будет выглядеть так:

ROUND 1

2015-10-09 23:20:12.432295
2015-10-09 23:20:12.444988`
2015-10-09 23:20:12.471788
2015-10-09 23:20:12.482884
2015-10-09 23:20:12.519446
2015-10-09 23:20:12.558949
2015-10-09 23:20:12.560826
2015-10-09 23:20:12.582571
2015-10-09 23:20:12.600680
2015-10-09 23:20:12.625727

ROUND 2

2015-10-09 23:20:12.761279
2015-10-09 23:20:12.764459
2015-10-09 23:20:12.801361
2015-10-09 23:20:12.831900
2015-10-09 23:20:12.853339
2015-10-09 23:20:12.877965
2015-10-09 23:20:12.921946
2015-10-09 23:20:12.950549
2015-10-09 23:20:12.973625
2015-10-09 23:20:12.986714

ROUND 3

2015-10-09 23:20:13.128276
2015-10-09 23:20:13.169144
2015-10-09 23:20:13.222183
2015-10-09 23:20:13.234889
2015-10-09 23:20:13.242653
2015-10-09 23:20:13.246504
2015-10-09 23:20:13.305419
2015-10-09 23:20:13.306198
2015-10-09 23:20:13.317769
2015-10-09 23:20:13.328895

... и т. Д.

Также изучите GNU Parallel , хотя я думаю, что он может быть ограничен запуском такого количества одновременных заданий, сколько у вас ядер. Вы можете избежать этого предостережения, запустив несколько параллельных процессов. Это отличная замена петлям и тому подобному.

0
17.04.2018, 03:29
2 ответа

Для этой цели можно использовать netstat -rn.

Дополнительную информацию см. на справочной странице FreeBSD netstat .

Между прочим, это также работает в Linux, так что это более переносимая команда, чем route -nдля проверки таблиц маршрутизации.

3
28.01.2020, 02:16
route -n show

Вы забыли упомянуть задачу, которую хотели routeвыполнить:show. На это также намекает сообщение об ошибке, которое вы получаете.

Команда Linux routeи команды BSD routeсильно различаются по своей семантике, и команда BSD по умолчанию не показывает маршруты.

3
28.01.2020, 02:16

Теги

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