173.194.222.139
lo-in-f113.1e100.net.
сохранить в ips.txt каждый ip-адресс, и PTR-запись , соответствующую этому ip(строкой ниже).
tail -f файл
cat fifo-файл
cat $LOG | analysisLogs &
# ... код
wait
#!/usr/bin/env bash
# бот1 и бот2 просто постоянно выводят рандомно числа от 0 до 9 с интервалом в 2 секунды
bot1(){
while true; do
echo "Bot1: $[RANDOM%10]"
sleep 2
done
}
bot2(){
while true; do
echo "Bot2: $[RANDOM%10]"
sleep 2
done
}
# обший лог-файл куда будем писать логи от ботов
LOG=/tmp/botsLog.txt
# удаляем лог-файл
rm -rf $LOG
# создаём именнованный канал (FIFO-файл)
mkfifo $LOG
# запускаем ботов паралельно и в фоновом(&) режиме, а также начинаем выводит от них информацию на консоль и писать в общий файл
bot1 | tee -a $LOG &
sleep 1
bot2 | tee -a $LOG &
# функция анализа поступающих данных
analysisLogs() {
# запускаем постоянное построчное чтение поступающих данных в функцию
while read -r data; do
# здесь мы задаём фильтры и то что выполнить если сработает условие
case "$data" in
"Bot1: 0" ) echo "Бот 1 выдал ноль"
;;
"Bot2: 0" ) echo "Бот 2 выдал ноль"
;;
esac
done
}
# читаем файл(FIFO-файл) и передаём появляющиеся данные в функцию analysisLogs
cat $LOG | analysisLogs
# это необходимо чтобы главная программа преждевременно не завершилась пока не завершаться запушенные в ней фоновые(&) потоки
wait
exit
node main.js | tee -a /path/to/log/file
q="$IFS";IFS=$'\n';nodeLogsArr=(cat /path/to/log/file);IFS="$q"
...
#!/usr/bin/env bash
# функции бот1 и бот2 которые постоянно выводят рандомно числа от 0 до 9 с интервалом в 2 секунды
bot1(){
while true; do
echo "Bot1: $[RANDOM%10]"
sleep 2
done
}
bot2(){
while true; do
echo "Bot2: $[RANDOM%10]"
sleep 2
done
}
# обший лог-файл куда будем писать логи от ботов
LOG=/tmp/botsLog.txt
# удаляем лог-файл (если ненужно то закоментирвоать)
rm -rf $LOG
# запускаем ботов в фоновом(&) режиме,
# а также начинаем выводит поступающую от них информацию на консоль и писать в общий лог-файл
bot1 | tee -a $LOG &
sleep 1
bot2 | tee -a $LOG &
# функция анализа лог-файла (потока)
analysisLogs() {
# запускаем постоянное построчное чтение поступающих данных в функцию
while read -r data; do
# здесь мы задаём фильтры и то что выполнить если совпадёт условие
case "$data" in
"Bot1: 0" ) echo "Бот 1 выдал ноль"
;;
"Bot2: 0" ) echo "Бот 2 выдал ноль"
;;
esac
done
}
# tail выводит поступающие данные по мере роста лог-файла (мониторит)
# в данном случае мы передаём появляющиеся данные из файла в функцию analysisLogs
tail -f $LOG | analysisLogs
# это необходимо чтобы главная программа преждевременно не завершилась
# пока не завершаться запущенные в ней фоновые(&) потоки
wait
exit
моё способ получения данных с программы на даёт ей выводить эти данные в консоль
[["logs"==*"Process exit with code:"*]]
[[ "$logs" =~ РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ ]]
nodeLogs="$(node $path/main.js)"
echo $nodeLogs
nodeLogs='test
test1'
echo $nodeLogs
test test1
nodeLogs='test
test1'
echo "$nodeLogs"
test
test1
IFS="\n" read -a nodeLogsArr <<< "$nodeLogs"
echo "${nodeLogsArr[1]}"
IFS="\n" read -a nodeLogsArr <<< "$nodeLogs"
echo "${nodeLogsArr[0]}"
echo "${nodeLogsArr[1]}"
test
2: Даже если бы вы использовали это решение с односимвольным разделителем (например, запятой отдельно, то есть без пробела или другого багажа), если значение $string переменной, как оказалось, содержит какие-либо LF(перевод строки), то read будет останавливать обработку, как только он встретит первый LF. Встроенный read обрабатывает только одну строку на вызов. Это верно, даже если вы передаете или перенаправляете ввод только в read оператор, как мы делаем в этом примере с механизмом здесь-строки , и, следовательно, необработанный ввод гарантированно будет потерян. Код, обеспечивающий работу read встроенного модуля, не знает о потоке данных в его структуре команд.
Вы можете утверждать, что это вряд ли вызовет проблему, но, тем не менее, это скрытая опасность, которую следует избегать, если это возможно. Это связано с тем, что read встроенный модуль фактически выполняет два уровня разбиения ввода: сначала на строки, а затем на поля. Поскольку OP требует только одного уровня разбиения, такое использование read встроенной функции не подходит, и мы должны избегать этого.
а что дает знак доллара?
А можно мюда поставить генту пакетов,и превратить это из кастрированного гов..в нормальный дистр?
у меня по крайней мере -3 выводит только одну колонку
п.с.