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 touch
a file in the output directory from terminal A then ls
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 ls
in terminal B. Strangely enough, if I do cd .
then ls
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.
cv2.imwrite(...)
in Python 2, using OpenCV.ofstream
in C++.Here's a breakdown of this command: -type f: locates all files in the directory. “%t %p\n”: prints a new line for each file where %t is the file's last modification time and %p is the filename path.
Type the ls -S (the S is uppercase) command to list files or directories and sort by size in descending order (biggest to smallest).
ls -F gives a full listing, indicating what type files are by putting a slash after directories and a star after executable files (programs you can run). ls -l gives a long listing of all files.
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.
This will happen if your second directory gets deleted and recreated.
Even if directory is deleted, but some process has it as current directory, file descriptor for it will remain open, and ls
will show old content.
Executing cd .
will force to close descriptor for now non-existent directory and reopen it again, now showing new content.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With