Tuesday, February 22, 2022

[SOLVED] bash redirect output to file but result is incomplete

Issue

The question of redirecting output of a command was already asked many times, however I am having a strange behavior. I am using a bash shell (debian) with version 4.3.30(1)-release and tried to redirect output to a file, however not everything are logged in the file. The bin file that I tries to run is sauce-connectv4.4.1 for linux (client of saucelabs that is publicly available in internet)

If I run

#sudo ./bin/sc --doctor

it showed me a complete lines
it prints :

INFO: resolved to '23.42.27.27'
INFO: resolving 'g2.symcb.com' using
DNS server '10.0.0.5'... (followed by other line)
INFO: 'google.com' is not in hosts file
INFO: URL https://google.com can be reached

However, if I redirect the same command to a file with the following command

#sudo ./bin/sc --doctor > alloutput.txt 2>&1

and do

#cat alloutput.txt

the same command output is logged, but deprecated as following:

INFO: resolved to '23.42.2me@mymachine:/opt/$

It has incomplete line, and the next lines that follows are not even logged (missing).

I have tried with >> for appending, it has the same problem. Using command &> alloutput.txt also is not printing the whole stuff. Can anyone point out how to get all lines of the above command to be logged completely to the text file?

UPDATE

In the end I manage to use the native binary logging by using --log alloutput.txt where it completely provide me with the correct output. However I let this issue open as I am still wondering why one misses some information/lines by doing an output redirection


Solution

That is a funny problem, I've never seen that happening before. I am going to go out on a limb here and suggest this, see how it works:

 sudo ./bin/sc --doctor 2>&1 | tee -a alloutput.txt


Answered By - Jamil Said
Answer Checked By - Willingham (WPSolving Volunteer)