I’m trying to run a java app that creates settings/configuration files, but I’m not sure where and how exactly it’s creating those said files. For that I was thinking perhaps I could log any filesystem changes in a dragnet way (as in, log the entire filesystem). Would anyone know how to do that without much hassle? Tried inotifywatch but it did not seem to want to log the entire filesystem (or it took it too much to establish watchers, probably because the wide area of search)

Or is there perhaps a better way to determine where the java app or the java environment saves those configuration files? Thank you.

    • WozenfeldDistrict@reddthat.comOP
      link
      fedilink
      arrow-up
      7
      ·
      11 months ago

      Thanks for the help! With the -ff option in strace I was able to tell it to branch out to all the sub-processes that are launched. Due to this, I don’t think lsof is going to be useful in my case, at least not without pulling my hair out, haha.

      Fortunately I was able to find exactly what I needed with strace, even though it was a bit like finding the needle in the haystack.

  • pnutzh4x0r@lemmy.ndlug.org
    link
    fedilink
    English
    arrow-up
    9
    ·
    11 months ago

    You can use strace to track all open system calls, which should give you an idea of what files are being opened.

    To do this, you just need to put strace before the command you normally run. It would be something like this:

    strace java ...
    
    • WozenfeldDistrict@reddthat.comOP
      link
      fedilink
      arrow-up
      3
      ·
      11 months ago

      Thanks for the help! With the -ff option in strace I was able to tell it to branch out to all the sub-processes that are launched (I wasn’t sure about that since I’m not a java developer, and it’s not an app made by me).

      Fortunately I was able to find exactly what I needed with strace, even though it was a bit like finding the needle in the haystack.

  • lloram239@feddit.de
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    11 months ago

    fatrace will show all file access on a file system (if using btrfs subvolumes, mount your filesystem somewhere else and run fatrace on that, it doesn’t work on subvolumes).

    strace will show you what files a process is accessing, run strace -vff -o /tmp/log.txt or otherwise it will only track the main process, not the fork()s, grep for open in the results.

    lsof will show currently open file handles, useful sometimes, but won’t help much if it’s just opening a file and closing again.