Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I have an hourly hour-long crontab job running with some mtr (traceroute) output every 10 minutes (that is going to go for over an hour prior to it being emailed back to me), and I want to see the current progress thus far.

On Linux, I have used lsof -n | fgrep cron (lsof is similar to BSD's fstat), and it seems like I might have found the file, but it is annotated as having been deleted (a standard practice for temporary files is to be deleted right after opening):

COMMAND     PID       USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
...
cron      21742       root    5u      REG      202,0      7255      66310 /tmp/tmpfSuELzy (deleted)

And cannot be accesses by its prior name anymore:

# stat /tmp/tmpfSuELzy
stat: cannot stat `/tmp/tmpfSuELzy': No such file or directory

How do I access such a deleted file that is still open?

share|improve this question
add comment

1 Answer 1

up vote 5 down vote accepted

The file can be access through the /proc filesystem: you already know the PID and the FD from the lsof output.

cat /proc/21742/fd/5
share|improve this answer
    
These are symbolic links to the file... does it still work when the file is deleted? –  Bonsi Scott Jan 19 '13 at 11:09
2  
@BonsiScott: Every files in /proc is fake. For /proc/*/fd/ files, When calling stat on them, they tell you it's a symbolic link, when you call readlink on them, they return whatever they want (in this case, an absolute path to the file that was opened), and when you call open and read on them, you get access to a somewhat real file with content. The same holds true for many files in /proc. For example, most dynamically generated files have a file size of zero, yet they have contents. –  BatchyX Jan 19 '13 at 14:55
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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