У меня проблемы с фоном bash и переадресацией файлов.
Мне нужно подключиться к удаленному сенсорному блоку и записать поток данных ascii из этого блока на файлы дисков. Я хотел бы разбить этот поток данных на сегменты по 10 минут каждый с меткой даты и времени, прикрепленной к имени файла.
Для этого у меня есть скрипт, который генерирует имя файла, подключается к удаленному блоку, используя nc > filename
. (обратите внимание, что я установил время в прикрепленном коде на 1 минуту, а не на 10 минут).
Этот скрипт записывает данные в сгенерированное имя файла, как и ожидалось:
#!/bin/bash
DEST=/home/sensors/gps1
[[ -d $DEST ]] || mkdir -p $DEST
while true
do
DESTFILE=$DEST/"gps1-freq-ref-capture-"`date +"%Y-%m-%d-%H%M"`
nc fepts03 20014 > $DESTFILE
NCPID=$!
sleep 60 ; kill $NCPID
done
Но выполнение никогда не проходит nc
.
Фоновый nc
, с другой стороны, дает правильные имена файлов, но они являются пустыми файлами.
#!/bin/bash
DEST=/home/sensors/gps1
[[ -d $DEST ]] || mkdir -p $DEST
while true
do
DESTFILE=$DEST/"gps1-freq-ref-capture-"`date +"%Y-%m-%d-%H%M"`
nc fepts03 20014 > $DESTFILE & # <-- note backgrounding ampersand
NCPID=$!
sleep 60 ; kill $NCPID
done
Но файлы пусты:
$ ls -la
-rw-rw-rw-+ 1 sensors sensors 0 Jul 23 15:00 gps1-freq-ref-capture-2012-07-23-1500
-rw-rw-rw-+ 1 sensors sensors 0 Jul 23 15:01 gps1-freq-ref-capture-2012-07-23-1501
-rw-rw-rw-+ 1 sensors sensors 0 Jul 23 15:02 gps1-freq-ref-capture-2012-07-23-1502
Я подумал, что это консоль stdin/stdout, поэтому я попытался запустить сеанс dtach с теми же результатами: хорошие имена файлов, никаких данных.