[Rd] tempdir() may be deleted during long-running R session

Mikko Korpela mikko.korpela at helsinki.fi
Fri Apr 21 12:49:33 CEST 2017


Temporary files not accessed for a long time are automatically removed 
in some Linux distributions and probably other operating systems too, 
depending on system configuration. This may affect the per-session 
temporary directory, the path of which is returned by tempdir(). I think 
it would be nice if R automatically tried to recreate a missing 
tempdir() but this could have some performance implications.

I ran the same test (below) on R 3.3.3 patched, R 3.4.0 beta, and 
R-devel, all at r72499 (2017-04-09) and compiled by myself. The results 
from the test were practically identical on all of those versions, the 
test platform being Ubuntu 14.04.5 LTS. This system is configured for a 
/tmp cleanup threshold of 7 days of inactivity (which is the default). 
After a wait of roughly 10 days, the R temporary directory had been 
deleted by an automatic cleanup procedure, and a call to `?` failed. 
This StackExchange question has some answers about the Ubuntu /tmp 
cleanup practice: https://askubuntu.com/q/20783

a <- print(tempdir())
# [1] "/tmp/user/1069138/RtmpGc9M5z"
dir.exists(a) # TRUE
# [1] TRUE
Sys.time()
# [1] "2017-04-10 16:00:30 EEST"
## Wait for one week (Ubuntu 14.04.5 LTS)
print(Sys.time()); ?regex
# [1] "2017-04-20 14:17:29 EEST"
# Error in file(out, "wt") : cannot open the connection
# In addition: Warning message:
# In file(out, "wt") :
#   cannot open file '/tmp/user/1069138/RtmpGc9M5z/Rtxt3dbb65870ad4': No 
such file or directory
b <- print(tempdir())
# [1] "/tmp/user/1069138/RtmpGc9M5z"
identical(a, b)
# [1] TRUE
dir.exists(b)
# [1] FALSE

-- 
Mikko Korpela
Department of Geosciences and Geography
University of Helsinki



More information about the R-devel mailing list