Login or Register to Ask a Question and Join Our Community


awk to monitor size in directory


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk to monitor size in directory
# 1  
Old 08-09-2014
awk to monitor size in directory

i'm trying to find the most efficient way to monitor specific files in different directories in one go.

Code:
/var/log/
/var/app/
/var/db/

each one of these directories can have subdirectories which need to be looked into as well.

I want to find any file in this directory that has the name ".gmei" in its filename, and check if the size of the file is at least 9000MB. if it is, spit out the file names.

my initial approach to this was something like this:

Code:
find /directory -name ".gmei" -maxdepth | while read line
do
du -s $line 
calculate the size and alert
done

the problem is i'm almost certain this method wont be efficient.

is there any other way to accomplish this quickly?

Last edited by rbatte1; 08-11-2014 at 09:22 AM..
# 2  
Old 08-09-2014
Doesn't your find version have the -size test?
This User Gave Thanks to RudiC For This Post:
# 3  
Old 08-09-2014
Your specification of 9000Mb is strange. Assuming that you mean 9Gb (as in 9*1024**3 bytes), try:
Code:
find /var/log /var/app /var/db -name '*.gmei*' -size +9G

If the version of find on your system doesn't accept -size +9G, try changing it to -size +9663676416c.

If you meant files with sizes greater than 9,000,000,000 bytes, try:
Code:
find /var/log /var/app /var/db -name '*.gmei*' -size +9000000000c

This User Gave Thanks to Don Cragun For This Post:
# 4  
Old 08-10-2014
worked perfectly. thanks guys!

one last question on this:

Code:
find /var/log -name "*.test*" -exec du -m {} \;

how do i add a second command to the above so it also includes the number of seconds ago that each file was last modified?

something like:

Code:
find /var/log -name "*.test*" -exec du -m {} \; -exec perl -le "print ((stat '${eachFile}')[9])"

Another issue i'm having is, i need to catch files that breach the warning and critical thresholds by issuing only one find command. currently, im running two separate find sessions, one for warning, the other for critical. i'd like to be able to combine them into one.

what im currently doing is:

Code:
warning=`find /var/log -name "*test.log*" -size +20000c -amin -1440 -exec du -m {} \; 2>/dev/null`
critical=`find /var/log -name "*test.log*" -size +60000c -amin -1440 -exec du -m {} \; 2>/dev/null`

any ideas?

Last edited by SkySmart; 08-10-2014 at 10:32 PM..
# 5  
Old 08-10-2014
You'll need to write a script that accepts filenames and deals with them as you require:

Then just call the script from your find command for all files over the warn size, the script can then decide if the file is a warning or a critical and deal as appropriate.

You don't mention your OS so I can't get too specific on how the script will check times and sizes on your OS.
However, on many linux systems you can use something like this:

Code:
read size mtime <<EOF
$(stat -c "%s %Y" filename)
EOF
printf "file: %s is %d bytes, modified %d seconds ago\n" filename $size $(( $(date +%s) - mtime))

# 6  
Old 08-11-2014
This is from man find on my Ubuntu linux system:
Quote:
EXAMPLES
.
.
.
find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and directories into /root/suid.txt and large files into /root/big.txt.
# 7  
Old 08-12-2014
the OS i'm going to be using this on is AIX (5.2) and Linux.

things work fine on linux, but aix is proving to be quite challenging.

Code:
find /tmp -name "*.gmei*" -perm +o=r -size +5000000c -mtime -1 -exec du -m {} \;

the /tmp runs deep with several subdirectories. as a result, the above command can take a long time to complete. which is why i want to be as specific as i can as to the type of file i want find to look for.


can anyone suggest a better idea? what i want to do is find all files that under 12 hours old.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Ls directory size reporting byte size instead of file count

I have been searching both on Unix.com and Google and have not been able to find the answer to my question. I think it is partly because I can't come up with the right search terms. Recently, my virtual server switched storage devices and I think the problem may be related to that change.... (2 Replies)
Discussion started by: jmgibby
2 Replies

2. Shell Programming and Scripting

Script to monitor directory size of specific users

Hi, i am new to shell scripts, i need to write a script that can monitor size of directory of specific users. Please help. Thanks, Nitin (2 Replies)
Discussion started by: nicksrulz
2 Replies

3. Shell Programming and Scripting

Script to monitor for new file with ext .err and size > 0 bytes and perform a action or command

Hi All, I need to create a script to monitor a dir for new files with ext .err and also it should b a non empty files. and perform a action or command . We have a new ETL application that runs on a linux server, every times a etl fails it creates a .err file or updates the existing .err... (4 Replies)
Discussion started by: MAKHAN
4 Replies

4. Shell Programming and Scripting

How to delete some of the files in the directory, if the directory size limits the specified size

To find the whole size of a particular directory i use "du -sk /dirname".. but after finding the direcory's size how do i make conditions like if the size of the dir is more than 1 GB i hav to delete some of the files inside the dir (0 Replies)
Discussion started by: shaal89
0 Replies

5. Solaris

Directory size larger than file system size?

Hi, We currently have an Oracle database running and it is creating lots of processes in the /proc directory that are 1000M in size. The size of the /proc directory is now reading 26T. How can this be if the root file system is only 13GB? I have seen this before we an Oracle temp file... (6 Replies)
Discussion started by: sparcman
6 Replies

6. AIX

monitor directory events

I'm am looking for a cheap way to trigger a script when a new file is written in a specific directory. AIX 5.3. It is a production system, so no kernel patching (i.e. inotify). Filemon and audtiing are too expensive. Thanks in advance. (2 Replies)
Discussion started by: pbillast
2 Replies

7. Shell Programming and Scripting

monitor size of file in realtime

How would one monitor the size of a file in realtime, then when it reaches a certain size (like 10megs), gzip, append timestamp to filename and scp to another box? regards (7 Replies)
Discussion started by: hazno
7 Replies

8. Shell Programming and Scripting

script to monitor directory

What is the best way for a script to run to monitor a directory for the presence of files and then perform a function afterwords? I was hoping to have it continually run and sleep until it detects that files are present in the directory, then break out of the loop and go on to the next step. ... (17 Replies)
Discussion started by: nulinux
17 Replies

9. UNIX for Advanced & Expert Users

monitor jvm heap size

I'm running websphere 4.5 on AIX 5 with java 1.3 and would like to find out the following: How much memory is allocated to each JVM, and how much of the allocated heap size is actually being used by a specific JVM? (0 Replies)
Discussion started by: rein
0 Replies
Login or Register to Ask a Question

Featured Tech Videos