this post was submitted on 06 Aug 2023
22 points (92.3% liked)

Linux

48895 readers
913 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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.

top 6 comments
sorted by: hot top controversial new old
[–] jsveiga 13 points 1 year ago (1 children)

I'd try:

lsof (shows processes x open files)

or

strace (shows system calls, including file access)

Check the answers for this question:

https://unix.stackexchange.com/questions/58887/how-do-i-monitor-opened-files-of-a-process-in-realtime

[–] [email protected] 5 points 1 year 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.

[–] [email protected] 8 points 1 year ago (1 children)

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 ...
[–] [email protected] 3 points 1 year 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.

[–] [email protected] 4 points 1 year ago

I see you've already got your problem solved, but FYI someone made whatfiles for this purpose.