Estoy almacenando la salida de un programa de esta manera:
./programOutputtingTextToStandartOut > program.log
Si el disco se llena, la salida deja de escribirse, incluso si el programa sigue ejecutándose. ¿Hay alguna manera de configurar esto para que cuando aparezca espacio libre en el disco, la escritura en el archivo se restaure automáticamente, sin tener que reiniciar el programa?
ACTUALIZAR
Agregar un programa de muestraOutputtingTextToStandartOut.
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
string textLine = "Some text";
ostream* out = &cout;
while (true) {
(*out) << textLine << endl << flush;
usleep(500000);
}
}
Respuestas:
En lugar de redirigir la salida a nivel de consola, sugiero que use el programa en sí para administrar el registro, por lo que en ese caso, puede verificar el espacio en disco en cada N operaciones. Si el espacio en disco es inferior al valor mínimo suscrito, detenga el registro. Una vez que caiga por debajo del umbral inferior, vuelva a crear el archivo de registro y continúe el registro. Aunque se requiere cierto grado de código, sería la mejor manera posible de controlar el registro.
fuente
./programOutputtingTextToStandartOut | logger > program.log
donde registrador es esto:#!/bin/bash while read line; do echo $line; done
echo
puede ser demasiado lento si se emite mucho texto ...