20

What software can I use to take screenshots with a set interval? I'd like to take screenshots every 2 second or so. Command-line and GUI are both ok.

I'd prefer software that can also resize and compress each screenshot.

1
  • 2
    Good luck spying. Jun 28, 2011 at 20:03

5 Answers 5

25

Install scrot and then run this:

while true; do scrot & sleep 2; done
5
  • wouldn't that take 2 seconds + time scrot takes to run? Jun 28, 2011 at 16:31
  • 1
    This seems to take a screenshot every 2,5 seconds on my system. I'd like something more precise. Jun 28, 2011 at 16:37
  • 8
    @Seppo: use while true; do scrot & sleep 2; done. It'll background scrot (it runs scrot, but does not block until scrot is done)
    – Lekensteyn
    Jun 28, 2011 at 16:50
  • 2
    Thanks Lekensteyn, I edited my answer based on that. I didn't think a few milliseconds would make a difference but it takes 1/2 and would take even longer on a slower disk. Therei0s a risk here that on a very slow disk with a proper 2-second gap, it would be constantly writing to disk or worse still, it would fill up all the buffers until the system ground to a halt. @Seppo make sure whatever you're doing has enough time to write to disk.
    – Oli
    Jun 28, 2011 at 21:15
  • When scrot takes a screenshot, its sound beeb, how silent this?
    – Fakhamatia
    Jan 21, 2020 at 17:11
9
watch -n2 scrot

or

while true; do scrot -d2; done
4
while true; do import -window root /path/to/where/you/want/to/save/`date`.png; done
1
  • 1
    You will need to install imagemagick for this to work. You can add a sleep command to the script to make it take the screen-shot every 2 seconds, as the question asks. Sep 13, 2011 at 16:40
1

As per an edit to your question:

import threading
    import os

    def capture(i):
        i += 1
        threading.Timer(2.0, capture, [i]).start()
        fill = str(i).zfill(5)
        os.system("scrot scrot-%s.jpg" % fill)
        os.system("streamer -o streamer-%s.jpeg -s 320x240 -j 100" % fill)

    capture(0)
1

If you want to control the number of screenshots and/or maybe their names, you could do:

for i in {1..10};do
    scrot $i'.png' && sleep 1;
done

Cheers!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .