Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Plugin] File Activity – See What’s Keeping Your Unraid Disks Busy

Featured Replies

  • Author
Just now, Niklas said:

"Advertising". Ok.

You've posted the link three times on the last page alone with instructions to remove the plugin.

Incidentally, the latest update to this plugin provided a big overhaul to the backend, meaning it now monitors the underlying filesystems (substantially more reliable than inotify), and can report what process is causing the activity.

Edited by EDACerton
Change "this page" to "the last page" since this post ended up on a new one :D

  • Replies 113
  • Views 11.5k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • EDACerton
    EDACerton

    I do plan to add PID reporting soon (to see what process is accessing files), I just haven’t had the time to do it yet.

  • dont display access to folders please. there are a million entries because of folder caching. previously, the plugin only displayed file access. displaying folder access makes the list unnecessarily l

  • Mainfrezzer
    Mainfrezzer

    your log is spammed to hell, holy moly. But youre probably chasing for something that opens folders, for that you need to setup your own inotifywatch

Posted Images

Just now, EDACerton said:

You've posted the link three times on this page alone with instructions to remove the plugin.

Incidentally, the latest update to this plugin provided a big overhaul to the backend, meaning it now monitors the underlying filesystems (substantially more reliable than inotify), and can report what process is causing the activity.

I know. I switch from time to time because I like to try both. Not advertising. What would i gain from that? Some kind of competition? I will keep quiet. Sorry.

What I noticed from the latest version is that almost all activity is by shfs anyways (as I only care for the hdd array) and sometimes it does not show activity at all even if there is. Don't know if it is when changing the settings, rebooting or something.

Edited by Niklas

  • Author
Just now, Niklas said:

I know. I switch from time to time because I like to try both. Not advertising. What would i gain from that? Some kind of competition? I will keep quiet. Sorry.

What I noticed from the latest version is that almost all activity is by shfs anyways and sometimes it does not show activity at all even if there is. Don't know if it is when changing the settings, rebooting or something.

It's frustrating when I'm trying to respond to help a user and someone interjects with "just use this other one instead".

The shfs thing is a limitation of how the array handles file access (essentially, if you access something from /mnt/user, the kernel sees the access as coming from the FUSE filesystem, not from the process that made the request). I'm looking at a way to see though that, but it needs an extra option enabled in the kernel (that isn't currently, but I'm asking about it).

Just now, EDACerton said:

It's frustrating when I'm trying to respond to help a user and someone interjects with "just use this other one instead".

The shfs thing is a limitation of how the array handles file access (essentially, if you access something from /mnt/user, the kernel sees the access as coming from the FUSE filesystem, not from the process that made the request). I'm looking at a way to see though that, but it needs an extra option enabled in the kernel (that isn't currently, but I'm asking about it).


The point was just to try if the "other one" showed the activity, also I gave a suggestion to turn atime off. Unraid tries to do that at mount time but it does not work.

I just have some things I would like to have if to switch fully. Saving of sort order and # of events to show (I always want "All"). And a clear all button easily accessible in the list (I check almost every day and press "clear all" when done or when I active monitor the list). But that's just personal preferences. Knowing what is doing the access more granular would be golden of course.

But the other thing, about the activity not showing up at all is absolutely on me. I should have posted about it but I was thinking about me doing something wrong and it was easy to just switch back. Sorry about that.

Edit: Just do add to this. I can hear the drives spin up in the distance at home. Usually I check file activity to see like "what's going on now?" and the list is just blank sometimes (with this one). When it works I check, see that "ok, that's why" and then clear all. I also use the clear button when I'm doing big operations to see, like the on going progress. ;-)

Edited by Niklas

3 hours ago, EDACerton said:

Are you creating the file on a pool, or on /mnt/diskX, /mnt/user/ ?

I tried both, but neither of those attempts created any log entries.

root@sparky:~# touch /mnt/user/media/test2.txt
root@sparky:~# touch /mnt/disk1/media/test3.txt
root@sparky:~# cat /mnt/user/media/test2.txt
root@sparky:~# cat /mnt/disk1/media/test3.txt

To hopefully log everything I enabled all options and also removed all default exclusions that were configured in the plugin settings and rebooted the whole server - still shows nothing in the logs... One side-note which is probably not related to my issues, but still something that might be relevant for improving the plugin: My Unraid Array is encrypted via LUKS and if I understand the content of fileactivity-watcher.log correct, then the plugin initially fails after a reboot.

root@sparky:~# cat /var/log/fileactivity-watcher.log
{"level":"info","tag":"2026.01.27.0511","revision":"b682105746dbadde8748552c5e3eab1c47752679","git_dirty":"no","time":1769978020,"message":"Build information"}
{"level":"info","time":1769978020,"message":"Starting file activity watcher..."}
{"level":"info","Exclusions":[],"Enable":true,"UnassignedDevices":true,"Cache":true,"SSD":true,"DisplayEvents":1000,"MaxRecords":20000,"time":1769978020,"message":"File Activity Watcher Configuration"}
{"level":"fatal","error":"open /var/local/emhttp/disks.ini: no such file or directory","time":1769978020,"message":"Error loading disks file"}

### I disabled and re-enabled the "Enable File Activity Monitoring" option to hopefully restart the plugin and re-ran the command:

root@sparky:~# cat /var/log/fileactivity-watcher.log
{"level":"info","tag":"2026.01.27.0511","revision":"b682105746dbadde8748552c5e3eab1c47752679","git_dirty":"no","time":1769978629,"message":"Build information"}
{"level":"info","time":1769978629,"message":"Starting file activity watcher..."}
{"level":"info","Exclusions":[],"Enable":true,"UnassignedDevices":true,"Cache":true,"SSD":true,"DisplayEvents":1000,"MaxRecords":20000,"time":1769978629,"message":"File Activity Watcher Configuration"}
{"level":"info","array_disks":2,"pool_disks":1,"time":1769978629,"message":"Disk count"}
{"level":"warn","error":"open /var/state/unassigned.devices/unassigned.devices.json: no such file or directory","time":1769978629,"message":"Error reading unassigned devices file"}
{"level":"info","disk":"disk1","mountpoint":"/mnt/disk1","type":"data","filesystem":"luks:zfs","rotational":true,"time":1769978629,"message":"Watching disk"}
{"level":"info","disk":"disk2","mountpoint":"/mnt/disk2","type":"data","filesystem":"luks:zfs","rotational":true,"time":1769978629,"message":"Watching disk"}
{"level":"info","disk":"cache","mountpoint":"/mnt/cache","type":"cache","filesystem":"luks:zfs","rotational":false,"time":1769978629,"message":"Watching disk"}
{"level":"info","count":3,"time":1769978629,"message":"Watch folders"}
{"level":"info","time":1769978629,"message":"Watcher ready"}
{"level":"info","time":1769978629,"message":"Starting event listener..."}
{"level":"info","current_lines":0,"time":1769978629,"message":"Current activity records"}
{"level":"info","path":"/mnt/disk2","fsid":"0bd9a283d2ee9f00","time":1769978629,"message":"Cached mount fsid"}
{"level":"info","path":"/mnt/cache","fsid":"0e472f0bf4816100","time":1769978629,"message":"Cached mount fsid"}
{"level":"info","path":"/mnt/disk1","fsid":"af6bef5907b23d00","time":1769978629,"message":"Cached mount fsid"}

I'll also attach the diagnostics.zip as @trurl requested, maybe that helps.

sparky-diagnostics-20260201-2154.zip

  • Author
48 minutes ago, sparky2025 said:

I tried both, but neither of those attempts created any log entries.

root@sparky:~# touch /mnt/user/media/test2.txt
root@sparky:~# touch /mnt/disk1/media/test3.txt
root@sparky:~# cat /mnt/user/media/test2.txt
root@sparky:~# cat /mnt/disk1/media/test3.txt

To hopefully log everything I enabled all options and also removed all default exclusions that were configured in the plugin settings and rebooted the whole server - still shows nothing in the logs... One side-note which is probably not related to my issues, but still something that might be relevant for improving the plugin: My Unraid Array is encrypted via LUKS and if I understand the content of fileactivity-watcher.log correct, then the plugin initially fails after a reboot.

root@sparky:~# cat /var/log/fileactivity-watcher.log
{"level":"info","tag":"2026.01.27.0511","revision":"b682105746dbadde8748552c5e3eab1c47752679","git_dirty":"no","time":1769978020,"message":"Build information"}
{"level":"info","time":1769978020,"message":"Starting file activity watcher..."}
{"level":"info","Exclusions":[],"Enable":true,"UnassignedDevices":true,"Cache":true,"SSD":true,"DisplayEvents":1000,"MaxRecords":20000,"time":1769978020,"message":"File Activity Watcher Configuration"}
{"level":"fatal","error":"open /var/local/emhttp/disks.ini: no such file or directory","time":1769978020,"message":"Error loading disks file"}

### I disabled and re-enabled the "Enable File Activity Monitoring" option to hopefully restart the plugin and re-ran the command:

root@sparky:~# cat /var/log/fileactivity-watcher.log
{"level":"info","tag":"2026.01.27.0511","revision":"b682105746dbadde8748552c5e3eab1c47752679","git_dirty":"no","time":1769978629,"message":"Build information"}
{"level":"info","time":1769978629,"message":"Starting file activity watcher..."}
{"level":"info","Exclusions":[],"Enable":true,"UnassignedDevices":true,"Cache":true,"SSD":true,"DisplayEvents":1000,"MaxRecords":20000,"time":1769978629,"message":"File Activity Watcher Configuration"}
{"level":"info","array_disks":2,"pool_disks":1,"time":1769978629,"message":"Disk count"}
{"level":"warn","error":"open /var/state/unassigned.devices/unassigned.devices.json: no such file or directory","time":1769978629,"message":"Error reading unassigned devices file"}
{"level":"info","disk":"disk1","mountpoint":"/mnt/disk1","type":"data","filesystem":"luks:zfs","rotational":true,"time":1769978629,"message":"Watching disk"}
{"level":"info","disk":"disk2","mountpoint":"/mnt/disk2","type":"data","filesystem":"luks:zfs","rotational":true,"time":1769978629,"message":"Watching disk"}
{"level":"info","disk":"cache","mountpoint":"/mnt/cache","type":"cache","filesystem":"luks:zfs","rotational":false,"time":1769978629,"message":"Watching disk"}
{"level":"info","count":3,"time":1769978629,"message":"Watch folders"}
{"level":"info","time":1769978629,"message":"Watcher ready"}
{"level":"info","time":1769978629,"message":"Starting event listener..."}
{"level":"info","current_lines":0,"time":1769978629,"message":"Current activity records"}
{"level":"info","path":"/mnt/disk2","fsid":"0bd9a283d2ee9f00","time":1769978629,"message":"Cached mount fsid"}
{"level":"info","path":"/mnt/cache","fsid":"0e472f0bf4816100","time":1769978629,"message":"Cached mount fsid"}
{"level":"info","path":"/mnt/disk1","fsid":"af6bef5907b23d00","time":1769978629,"message":"Cached mount fsid"}

I'll also attach the diagnostics.zip as @trurl requested, maybe that helps.

sparky-diagnostics-20260201-2154.zip

The "failure after reboot" is normal and not a big deal -- the service restarts itself after the disks mount/array starts.

As for the issue you're seeing -- I did a similar test on my test system (XFS-backed array and ZFS-backed pool) and I can see the activity. BUT... ZFS can do some weird things with file access (like storing small/empty files in metadata and not creating a full file).

It's possible that there's something odd with ZFS in the array. I'll have to check on that part.

Hi, just installed the plugin to troubleshoot some disks that are always spinning, the plugin Drive Standby Monitor reports some disks around 0.55% (basically on h24) 😢

The plugin seems to work fine and indeed I can see a lot of files being accessed on those disks confirming the data from the other plugin, however the process being reported is always PID 1881561 process path /usr/libexec/unraid/shfs

While some paths are immediately recognizable to me because they are exclusive for certain containers, other files remains a mystery. Is there any margin of improvement on the subject or is an Unraid limitation to expose the real process/container accessing a file?

I have my suspects on some other containers. For now, the only strategy I can think of is to try to stop them all and turning them on one by one while observing in real time the File Activity plugin.

  • 1 month later...

Hello! I'm trying to use the plugin for the same purpose as everyone here - to check why I have activity on my HDDs. Because I think I mostly shouldn't. I don't have any movers, caches or somesuch. I just have a ZFS pool of two disks in mirrored configuration, some nested datasets there, and one separate SSD drive. All the docker data lives on that ssd, but I'm still getting something on HDD.

File Activity doesn't show anything at all. Here's the watcher log:

{"level":"info","tag":"2026.03.20.0234","revision":"79e08a25a73a7e7603875d5b9d97b39713430880","git_dirty":"no","time":1774812086,"message":"Build information"}
{"level":"info","time":1774812086,"message":"Starting file activity watcher..."}
{"level":"info","Exclusions":[],"Enable":true,"UnassignedDevices":true,"Cache":true,"SSD":true,"DisplayEvents":1000,"MaxRecords":20000,"time":1774812086,"message":"File Activity Watcher Configuration"}
{"level":"fatal","error":"open /var/local/emhttp/disks.ini: no such file or directory","time":1774812086,"message":"Error loading disks file"}

And here's the other log:

2026/03/29 21:21:26 migrate-config.php: No config migration needed, old config file not found or new config already exists.
2026/03/29 21:21:26 rc.file.activity: Updating file activity configuration.

Both "Share activity" and "Disk activity" tabs say there's nothing to show. Am I doing something wrong?

I'm having the same issue

this plugin used to work

I only noticed today as i needed to see why my disks were spinning

there is no activity listed at all

I ten tried to create folders and add files

I also tried outside of fuse (user) and went from disk1 to disk2

Ok, I have just conducted some tests

the last time i needed this was around December, so the issue could have started any time after

I have found interesting things

  • disabling and enabling does not help

  • removing all exclusions that were there by default does not help

  • loading defaults (which returns exclusions and disables the service) works once you enable once more

    However if you reboot, the issues start all over again

  • disabling and enabling again does not help

  • loading defaults (which returns exclusions and disables the service) works once more

    Rebooting breaks it again

I can reproduce this consistantly

There has to be something happening where its not correctly loading at startup

possibly corrupting the settings as it ONLY works after loading defaults

is there a way to roll back to an older version?

42 minutes ago, charettepa said:

<...>

  • loading defaults (which returns exclusions and disables the service) works once more

    Rebooting breaks it again

I can reproduce this consistantly

There has to be something happening where its not correctly loading at startup

possibly corrupting the settings as it ONLY works after loading defaults

<...>

I tried that but no dice. However after doing that (loading defaults, then enabling the service) I see a little bit more life in the logs. E.g. my arrays are being acknowledged. No activity being recorded though:

{"level":"info","tag":"2026.03.20.0234","revision":"79e08a25a73a7e7603875d5b9d97b39713430880","git_dirty":"no","time":1774880692,"message":"Build information"}
{"level":"info","time":1774880692,"message":"Starting file activity watcher..."}
{"level":"info","Exclusions":["(?i)appdata","(?i)docker","(?i)system","(?i)syslogs"],"Enable":true,"UnassignedDevices":true,"Cache":true,"SSD":true,"DisplayEvents":1000,"MaxRecords":20000,"time":1774880692,"message":"File Activity Watcher Configuration"}
{"level":"info","array_disks":0,"pool_disks":2,"time":1774880692,"message":"Disk count"}
{"level":"warn","error":"open /var/state/unassigned.devices/unassigned.devices.json: no such file or directory","time":1774880692,"message":"Error reading unassigned devices file"}
{"level":"info","disk":"hdd","mountpoint":"/mnt/hdd","type":"cache","filesystem":"zfs","rotational":true,"time":1774880692,"message":"Watching disk"}
{"level":"info","disk":"nvme-ssd","mountpoint":"/mnt/nvme-ssd","type":"cache","filesystem":"zfs","rotational":false,"time":1774880692,"message":"Watching disk"}
{"level":"info","count":2,"time":1774880692,"message":"Watch folders"}
{"level":"info","time":1774880692,"message":"Watcher ready"}
{"level":"info","time":1774880692,"message":"Starting event listener..."}
{"level":"info","filter":"(?i)appdata","time":1774880692,"message":"Adding exclusion filter"}
{"level":"info","filter":"(?i)docker","time":1774880692,"message":"Adding exclusion filter"}
{"level":"info","filter":"(?i)system","time":1774880692,"message":"Adding exclusion filter"}
{"level":"info","filter":"(?i)syslogs","time":1774880692,"message":"Adding exclusion filter"}
{"level":"info","current_lines":0,"time":1774880692,"message":"Current activity records"}
{"level":"info","path":"/mnt/hdd","fsid":"c36c687f6c3c6100","time":1774880692,"message":"Cached mount fsid"}
{"level":"info","path":"/mnt/nvme-ssd","fsid":"552a0201ccd60f00","time":1774880692,"message":"Cached mount fsid"}

@EDACerton

any idea what could be causing this requirement to load defaults after reboot?

as well as if its possible to use an older build?

yeah i think after upgrade to 7.x i stopped seeing any activity logged. i re-installed it, but no cigar.

ok, i tried all sort of options.

1. there's an error in unmarshalling unassigned devices, but i dont think its a problem really. maybe improper handling of 0 device list. {"level":"warn","error":"json: cannot unmarshal array into Go value of type map[string]disks.UDInfo","time":1775227519,"message":"Error parsing unassigned devices JSON"}

  1. i was finaly able to get it to log something, anything, by disabling all filters and enabling all sources, and the only logs i could see were coming from my docker overlay volume fs. thats it.

Edited by hollowimage

Same here, this isn't logging anything at all even with cache enabled and no exclusions.

  • 2 weeks later...
  • Author

Sorry for the delay, I’ve been extra busy with real-life stuff. I’m also hoping that LT will add a new kernel flag in 7.3 that will let me do even better with what the plugin can report.

Any thoughts on why it does not work after reboot

however, if you then reset defaults, which stops it, then start it

it works again until next reboot?

  • Author
On 4/13/2026 at 10:09 PM, charettepa said:

Any thoughts on why it does not work after reboot

however, if you then reset defaults, which stops it, then start it

it works again until next reboot?

I'm not sure. I've tried doing reboots on my test systems and haven't seen that behavior.

What would be helpful would be a plugin diagnostics package from a server right as it's having the problem, that way I might be able to see what about the setup might be causing the issue.

On 4/19/2026 at 12:05 PM, EDACerton said:

I'm not sure. I've tried doing reboots on my test systems and haven't seen that behavior.

What would be helpful would be a plugin diagnostics package from a server right as it's having the problem, that way I might be able to see what about the setup might be causing the issue.

ok,

i can reboot the system, perform an action on HDD, check the plugin to verify no activity seen, then reset the plugin defaults, then start it as its off after reset, then perform action on HDD, then verify the plugin that will show activity, then grab the diagnostics

where can i send the file to?

  • Author
5 hours ago, charettepa said:

ok,

i can reboot the system, perform an action on HDD, check the plugin to verify no activity seen, then reset the plugin defaults, then start it as its off after reset, then perform action on HDD, then verify the plugin that will show activity, then grab the diagnostics

where can i send the file to?

If you install Plugin Diagnostics from CA, File Activity should show up, you can use the "Upload" button there and it will give you a code to post.

@EDACerton

I have rebooted in order to replicate the issue

confirmed that nothing was logging

downloaded the log as well as uploaded (52c7806dcb1790b7341ac6c2851b2a0d)

the bottom of the watcher file indicates that the disks file cannot be found

{"level":"fatal","error":"open /var/local/emhttp/disks.ini: no such file or directory","time":1776777253,"message":"Error loading disks file"}

-

i then reset the app to default, and started, (as its stopped when reset)

performed a file activity, which was registered, then grabbed those logs as well

downloaded the log as well as uploaded (9205ed5a146bb37dd853ae9464790df2)

this one does not show that error

-

i then rebooted once more

confirming the files are present

however the log once again says the file "disks.ini" is missing

downloaded the log as well as uploaded (4aa91abd6fcd6afbe0206219468ba3cf)

-

here is the log after reset and start

downloaded the log as well as uploaded (6c3238097824ee8fc2f70b6411a15ada)

-

I suspect, the plugin is starting too quickly at system startup

and the disks.ini file is either locked by the system or does not exist yet

I now believe that delaying the startup of the plugin MAY fix this issue

or perhaps a conditional statement to only start once disks.ini is present

Edited by charettepa

@EDACerton

have the diag files and/or additional details been helpful?

^same -- how can i help? i dont think i've seen this plugin work at all since ive upgraded to 7+

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.