2

I want to display text output on the console that is always displayed on a small screen on my Raspberry Pi.

The following code works for showing that text output:

cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py > /dev/tty1

Now I want to capture the output in parallel with seeing it on the screen - I have tried 'tee' but that does not show text on the screen and also does not capture it to file:

cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py | tee /dev/tty1 /tmp/capture.txt

How can I redirect the output of my script to /dev/tty1 so I can see it on my screen but also capture the output to file?

UPDATE 1:

Per the answer below - I tried using 'script' - unfortunately it did not work:

script -c "cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py > /dev/tty1" /home/pi/python_test_scripts_linux/report.html

UPDATE 2:

I also tried to 'tail' the output of the file that I redirected the output to into /dev/tty1, but it also did not work:

sudo tail -F /home/pi/python_test_scripts_linux/report.html > /dev/tty1 &
cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py > /home/pi/python_test_scripts_linux/report.html 
  • Weird. Does tee /tmp/capture.txt >/dev/tty1 work? – dhag Mar 17 '15 at 17:00
  • Nope :( , this doesn't work either: /home/pi/python_test_scripts_linux/test_wrapper.py | tee /tmp/capture.txt > /dev/tty1 – PhilBot Mar 17 '15 at 17:07
  • Ok - so where is your output going then? Are you not writing to stdout? Do you open() a descriptor in your script and write to it? tee will only tee its stdin. If you can figure out where you are writing then you can dup it. What is up with all of the sudo nice stuff? You can just tail /dev/vcs1 if you must, but you're doing some weird stuff. Can you drop all of the sudo stuff and still print? – mikeserv Mar 17 '15 at 20:26
  • Have you tried redirecting the standard output? .../test_wrapper.py 1>/dev/tty1 1>/path/to/file – YoMismo Mar 18 '15 at 14:14
1

If you want to save the output of a command, use the script command

script -c "your command" /tmp/capture.txt

The output will be sent to the tty and also to capture.txt

If tty1 is not the console that you are running from, you could run a

tail -F /tmp/capture.txt 

from that tty in order to get the results there as well.

  • Hi Robert - thanks for the input. I tried launching this over an SSH terminal: script -c "cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py > /dev/tty1" /home/pi/python_test_scripts_linux/report.html – PhilBot Mar 17 '15 at 19:54
  • However, the text that is redirected to /dev/tty1 does not get captured in the /tmp/capture.txt file. Only errors if I kill the process. Any other ideas? – PhilBot Mar 17 '15 at 19:55
  • Don't redirect to /dev/tty, redirect to /tmp/capture. Then try tail -F /tmp/capture > /dev/tty1 & . Start the tail first in background. and kill when done. – Robert Jacobs Mar 17 '15 at 19:59
  • thanks for the suggestion but it had the same effect. /dev/tty1 must be special? – PhilBot Mar 17 '15 at 20:10
  • Check to see if you have permission to write to the tty. "ls -l /dev/tty1". Fix permission if required. – Robert Jacobs Mar 20 '15 at 18:29
1

Thanks for the input, it did not work for Python scripts because it was buffering the output.

This allows it to work with tee:

python -u ./myscript.py | tee /dev/tty1 /tmp/a.txt

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.