След на LAN через PHY и одноадресную передачу только работает за первые ~30 секунд после того, как пополудни - приостановят

Возможно, я пропускаю что-то, но не можете Вы просто сделать:

(./handle_1.py & ./handle_2.py & ./handle_3.py) | sort -n

Если Вы хотите, чтобы строки от каждого процесса не были чередованы, более легкое должно, вероятно, удостовериться, что процесс сами пишет им полностью и возможно отключает вывод, буферизующий как writes к каналу, как гарантируют, будут атомарными, пока они не больше, чем PIPE_BUF. Например, Вы могли удостовериться, что это действительно использует вывод, буферизующий а-ля stdio и звоните fflush или независимо от того, что эквивалент находится в python после того, как одна или несколько строк были записаны.

Если Вы не можете изменить сценарии Python, Вы могли бы сделать:

lb() { grep --line-buffered '^'; }

(с GNU grep) или:

lb() while IFS= read -r l; do printf '%s\n' "$l"; done

(См. примечания в комментариях ниже если, что вывод команд не является текстом),

И сделайте:

(./handle_1.py | lb & ./handle_2.py | lb & ./handle_3.py | lb) | sort -n

Другая опция избежать тех 3 lb процессы должны иметь три канала к одной команде, которая использует select/poll видеть, где существует некоторый вывод, прибывающий из, и подает его к sort основанный на строке, но требуется немного программирования.

2
13.11.2013, 11:49
1 ответ

Хорошо, глупый меня не думал о факте, тот Windows и Linux на значение по умолчанию имеют тайм-аут ARP точно 30 секунд, как каждый видит путем выполнения a

netsh interface ipv4 show interface 2

в cmd.exe, где эти 2 должен быть заменен Idx Вашего NIC, каждый добирается путем издания

netsh interface ipv4 show interfaces

На типе Linux

cat /proc/sys/net/ipv4/neigh/default/base_reachable_time_ms

в Вашем ударе, для наблюдения тайм-аута ARP по умолчанию в миллисекундах.

Таким образом, решение состояло бы в том, чтобы привести в порядок статический адрес ARP для пробуждения системы через SSH или SMB или что бы то ни было. Чтобы сделать это делает a

arp -s 10.0.0.200 00-10-54-CA-E1-40

в Windows и a

arp -s 10.0.0.200 00:10:54:CA:E1:40

в Вашей системе Linux.

1
27.01.2020, 22:22

Теги

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