vijrox vijrox - 1 year ago 54
Linux Question

ls not updating to reflect new files?

I am running a program that creates a bunch of files in a certain directory, and I want to watch the files get created.

I open two terminal windows and cd one of them (call it terminal A) to the directory of the program (so I can run it) and the other (terminal B) to the directory where the output files get written (this output directory starts out empty). When I

a file in the output directory from terminal A then
in terminal B, the new file appears -- all this behaves normally.

However, after I run the program in terminal A, none of the new files show up when I do
in terminal B. Strangely enough, if I do
cd .
in terminal B, the new files now get listed.

What is causing this behavior, and can I get around it?

Edit: Information about what is writing the files.

  • Some are being written by calls to
    in Python 2, using OpenCV.

  • Some are being written by an
    in C++.

Answer Source

This sequence of events seems to reproduce the issue.

Your program in terminal A probably deletes terminal B's current directory and then recreates it with the same name, so ls doesn't work since that particular directory that was originally cd'd to by terminal B doesn't exist anymore. However, cd . brings you to the (now) re-created directory, at which point ls works again.