I have a program that scans and updates its results to std out every second. I would like to capture its output for further processing, but there is a catch. I would like to capture a snapshot after about 15 seconds as the results become more accurate and close the program.
Obviously I can simply use > temp_file which I can use by grabbing the last n lines, and close the program after 15 seconds but surely there is a better way?
Just looking for a general idea to get me in the right direction.
TLDR: Is there a way to capture the std out of a program directly before it closes?
Last edited by Riker1204; 03-11-2017 at 06:31 PM..
I have a program that scans and updates its results to std out every second. I would like to capture its output for further processing, but there is a catch. I would like to capture a snapshot after about 15 seconds as the results become more accurate and close the program.
Obviously I can simply use > temp_file which I can use by grabbing the last n lines, and close the program after 15 seconds but surely there is a better way?
Just looking for a general idea to get me in the right direction.
TLDR: Is there a way to capture the std out of a program directly before it closes?
Thank you for the input, but this will still capture output from beginning to end of execution.
Is there a way to dynamically change a File Descriptor after 15 seconds, say std out to > /dev/null for first 15s then std out to > FILE && close program?
Last edited by Riker1204; 03-12-2017 at 01:45 AM..
Reason: clarity
In bash you could have process substitution manage a named pipe for you. Below I duplicate this with exec onto file descriptor 7.
You can then simply read and discard from this file descriptor for 15 seconds,. If you can be sure of a maximum amount of data going to be sent (eg here we are limited to 10000 characters) you can simplify this to a single read statement:
or without a size limit just read lines for 16 seconds, keeping the last read:
Edit: Solution using coprocesses (required bash4). we run the process, discard first 10,000 characters or 15 seconds of input and then read the next line. This will also kills the process once we have the required result:
This could also be coded using named pipes in other shell versions if needed.
Last edited by Chubler_XL; 03-12-2017 at 08:28 PM..
These 2 Users Gave Thanks to Chubler_XL For This Post:
Hi guys, i have a new problem, even in scripting on KSH.
Given a string by standard INPUT (keyboard), i need to replace each character i print with this one '#' .
It's to camouflage password while digiting on command line.
For example:
----------------------------------
prompt$ ... (3 Replies)
I'm Using this script to find the time of a file. I'm very much new to PERL
and found this script posted by some one on this forum.
It runs perfectly fine, just that it gives me following errors with the
accurate output as well. I jus want the output to be stored in another file
so that i can... (0 Replies)
Hi,
I'm having trouble compling the following code in Sun C++ (under sun studio 10). I found that it is issue with libCstd library. It can be resolved if i used stdport lib. However, i have no choice but to use libCstd. Does anyone know what can be done to resolve the issue? :confused:
... (0 Replies)
I am working on a script that lists files in a directory with a few file attributes depending on what option the user specifies at the command prompt. The script uses Getopt::Std and takes two switches.
The first switch allows the user to specify a directory, the second switch gives a long... (3 Replies)
Some background on what I am trying to accomplish - Accreditation/Certification for DoD (Unix/Linux) system: I am trying to improve the process for capturing key system information in preparation for performing a formal security review of a Unix or Linux system. This is in addition to the SRR... (1 Reply)
Hello Friends,
Can some one help me how to redirect output of a file to both a file and std output? All the help would be greatly appreciated.
Regards
Sridhar (1 Reply)
Hi,
I use the following command
make all > output-`date +%F-%H-%M-%S`.txt 2>&1
to invoke a MAKE process that takes some weeks to complete. The ouput is redirected to a text file. Now I prefix the above command with time to get time needed for completion of the MAKE process
time make... (2 Replies)
i have a teat file having data like
one 12/3
two 23/09
three 12/12
now from another script i want to read one line at a time ,cut field one and two in two separate variable ,compare field1 with another variable
but outside the loop .If i found a match i want to take from user the value... (2 Replies)
Hello all
Im using CC: Sun C++ 5.6 2004/07/15 and using the -library=stlport4 when linkning im getting
The fallowing error :
Undefined first referenced
symbol in file
std::ostream &std::ostream::operator<<(std::ios_base&(*)(std::ios_base&))... (0 Replies)
Hi
I want both standard output and standard error of my command cmd to go to the same file log.txt. please let me know the best commandline to do this.
Thanks (2 Replies)