Ich habe Probleme mit Bash-Hintergründen und der Dateiumleitung.
Ich muss eine Remote-Sensorbox anschließen und den ASCII-Datenstrom von dieser Box auf Datenträgerdateien aufzeichnen. Ich möchte diesen Datenstrom in Segmente von jeweils etwa 10 Minuten mit einem Datums- / Uhrzeitstempel aufteilen, der dem Dateinamen angehängt ist.
Zu diesem Zweck habe ich ein Skript, das einen Dateinamen generiert, mit dem eine Verbindung zur Remote-Box hergestellt wird nc > filename
. (Beachten Sie, dass ich das Timing im angehängten Code auf 1 Minute anstatt auf 10 Minuten eingestellt habe).
Dieses Skript zeichnet erwartungsgemäß Daten im generierten Dateinamen auf:
#!/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
Aber die Hinrichtung kommt nie vorbei nc
.
Im Hintergrund werden nc
die richtigen Dateinamen angezeigt, es handelt sich jedoch um leere Dateien.
#!/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
Aber die Dateien sind leer:
$ 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
Ich dachte, es sei eine stdin / stdout-Konsolensache, also versuchte ich, in einer dtach-Sitzung mit den gleichen Ergebnissen zu laufen: gute Dateinamen, keine Daten.
kill $NCPID
stattdessen verwenden.