Я должен скрипты:Linux скрипт с Netcat перестает работать после й часов
#!/bin/bash
netcat -lk -p 12345 | while read line
do
match=$(echo $line | grep -c 'Keep-Alive')
if [ $match -eq 1 ]; then
[start a command]
fi
done
и
#!/bin/bash
netcat -lk -p 12346 | while read line
do
match=$(echo $line | grep -c 'Keep-Alive')
if [ $match -eq 1 ]; then
[start a command]
fi
done
Я поставил два сценарий в /etc/init.d»/'
Когда я перезагружаю свою машину Linux (RasbPi), оба скрипта работают нормально.
Я пробовал их как 20 раз, и они продолжают работать нормально.
Но примерно через 12 часов вся система перестает работать. Я включил некоторый loggin, но кажется, что скрипты больше не реагируют. Но когда я;
ps aux
Я могу видеть, что сценарии все еще работают:
root 1686 0.0 0.2 2740 1184 ? S Aug12 0:00 /bin/bash /etc/init.d/script1.sh start
root 1689 0.0 0.1 2268 512 ? S Aug12 0:00 netcat -lk 12345
root 1690 0.0 0.1 2744 784 ? S Aug12 0:00 /bin/bash /etc/init.d/script1.sh start
root 1691 0.0 0.2 2740 1184 ? S Aug12 0:00 /bin/bash /etc/init.d/script2.sh start
root 1694 0.0 0.1 2268 512 ? S Aug12 0:00 netcat -lk 12346
root 1695 0.0 0.1 2744 784 ? S Aug12 0:00 /bin/bash /etc/init.d/script2.sh start
После перезагрузки они начинают работать снова ... Но то грех, перезагружая машину Linux периодически ...
Я вставил некоторый loggin, вот результат;
Listening on [0.0.0.0] (family 0, port 12345)
[2013-08-14 11:55:00] Starting loop.
[2013-08-14 11:55:00] Starting netcat.
netcat: Address already in use
[2013-08-14 11:55:00] Netcat has stopped or crashed.
[2013-08-14 11:49:52] Starting loop.
[2013-08-14 11:49:52] Starting netcat.
Listening on [0.0.0.0] (family 0, port 12345)
Connection from [16.8.94.19] port 12345 [tcp/*] accepted (family 2, sport 6333)
Connection closed, listening again.
Connection from [16.8.94.19] port 12345 [tcp/*] accepted (family 2, sport 6334)
[2013-08-14 12:40:02] Starting loop.
[2013-08-14 12:40:02] Starting netcat.
netcat: Address already in use
[2013-08-14 12:40:02] Netcat has stopped or crashed.
[2013-08-14 12:17:16] Starting loop.
[2013-08-14 12:17:16] Starting netcat.
Listening on [0.0.0.0] (family 0, port 12345)
Connection from [16.8.94.19] port 12345 [tcp/*] accepted (family 2, sport 6387)
Connection closed, listening again.
Connection from [16.8.94.19] port 12345 [tcp/*] accepted (family 2, sport 6388)
[2013-08-14 13:10:08] Starting loop.
[2013-08-14 13:10:08] Starting netcat.
netcat: Address already in use
[2013-08-14 13:10:08] Netcat has stopped or crashed.
[2013-08-14 12:17:16] Starting loop.
[2013-08-14 12:17:16] Starting netcat.
Listening on [0.0.0.0] (family 0, port 12345)
Connection from [16.8.94.19] port 12345 [tcp/*] accepted (family 2, sport 6167)
Connection closed, listening again.
Connection from [16.8.94.19] port 12345 [tcp/*] accepted (family 2, sport 6168)
Благодаря
не вижу проблемы, но я мало знаю о netcat. НО вы можете уменьшить количество процессов, созданных вами, заменив 'match = ... fi' на' do; если grep -q «Keep-Alive»; затем запустите cmd; fi'. Удачи. – shellter
Я только что пробовал это, но это останавливает все, от работы ... – Lectere
+1 «Но это грех».Я подозреваю, особенно в свете флага «-k» keep-alive на netcat, что IP-уровень отскакивает через много часов либо через истечение срока аренды DHCP, либо «самовосстановление» (т.е. перезагрузка ежедневно, потому что это проще, чем исправление ошибок) » функции вашего etherswitch. «/ Var/log/syslog» дает вам подсказку? – msw