5

I’m sorry if this question is really stupid, but this is basically what I have been thinking about constantly. Suppose I run:

: cat ./somefile.txt

A few hundred times a second. How much faster is my hard drive going to die?

Giacomo1968
  • 53,069
  • 19
  • 162
  • 212
Blub
  • 458
  • 1
  • 6
  • 18
  • Why would you call cat a few hundred times a second to begin with? Are you trying to parse something? – JustXanny Jul 07 '11 at 13:22
  • 4
    FWIW, running `: cat somefile.txt` does *not* run `cat`. The `:` built-in does nothing at all. – u1686_grawity Jul 07 '11 at 13:50
  • `: cat somefile.txt > otherfile.txt` creates otherfile. – Blub Jul 07 '11 at 13:58
  • 38
    It's usually a wasted effort -- they never come until they hear the can opener. – Daniel R Hicks Jul 07 '11 at 17:46
  • @Blub, actually your command does very little `: cat somefile.txt > otherfile.txt` will not copy the contents of `somefile.txt` to `otherfile.txt`; `otherfile.txt` will be present after the command, but will be empty (even if it originally had contents). `: \`cat somefile.txt > otherfile.txt\` ` will copy the contents of `somefile.txt` to `otherfile.txt` without displaying the output. See: http://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html and http://stackoverflow.com/questions/3224878/what-is-the-purpose-of-the-colon-gnu-bash-builtin – dr jimbob Jul 07 '11 at 18:28
  • Depending on the file, it is also possible that somefile.txt is cached by the OS. This way when you do cat, there is no hard drive access at all (it is taken from your RAM), so you will not change the life span of the hard drive. – earlNameless Jul 20 '11 at 19:19

3 Answers3

20

Seven. But seriously, it's hard enough to know how long a disk will last while idling let alone under heavy load. There's no answer other than to say it will probably wear the disk faster.

The better argument against this is it would generally be quite slow. Why would you need to hammer the disk like that?

If you're looking to find out when something changes, perhaps look at inotify which is a kernel-based file event system that can call some code when something happens, negating the need to hammer the disk.

There are wrappers like pyinotify to make things easier.

Oli
  • 381
  • 3
  • 13
19

It may have no effect at all, depending on the size of somefile.txt - if it's small enough for the kernel to cache it in RAM, the file will only be read once from disk and subsequent iterations will retrieve it from the cache.

Even if running that command repeatedly does have an effect on your drive's lifetime, it will be due to the file being read repeatedly. Whether you use cat or some other program to read it is completely irrelevant.

Dave Sherohman
  • 5,383
  • 1
  • 23
  • 31
  • 1
    I guess nowadays there are very few files you would want to `cat` large enough not to be cached completely. So indeed, only the first time the disk is going to feel it. – Joey Jul 07 '11 at 14:28
3

This reminds me of that study Google did about Harddrives. Since they go through a lot of harddrives, they did an informal study to see if there was any significant correlation between the lifetime of a HD and a list of factors that include temperature, power cycles, activity levels, etc. The only significant factor they found was age, I believe. The study is called "Failure Trends in..." something something.

I wouldn't worry too much about HD usage eating your drive.

surfasb
  • 22,452
  • 5
  • 52
  • 77
  • Do you mean [this study](https://static.googleusercontent.com/media/research.google.com/en//archive/disk_failures.pdf)? Quote (emphasis mine): »*One of our key findings has been the lack of a consistent pattern of higher failure rates for higher temperature drives or for those drives at **higher utilization levels**. Such correlations have been repeatedly highlighted by previous studies, but we are unable to confirm them by observing our population. Although **our data do not allow us to conclude that there is no such correlation**, it provides strong evidence*« – Socowi Mar 18 '21 at 10:09