Can anyone help me please, I have a code which will retain number of files maximum of 3 and will remove the one on top (using head -1 command). See code below:
#!/usr/bin/sh
num_of_files=`ls /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | wc -l`
if [ $num_of_files -gt 3 ]
then
remove=`ls -lrt /home/user/USER_LOGS/ | grep UserActivity | grep UMB00 | head -1 | awk '{print $8}' | rm \`xargs\``
$remove
fi
The code is located on the same directory /home/nsadm/USER_LOGS/. It functions well trying to give the output that I want, however when I already went out of the sub-directory USER_LOGS hitting the command cd which by default will bring me to /home/nsadm/, then I tried to run the script as /home/nsadm/USER_LOGS/remover.sh, the script didn't work.
I hope anyone can suggest what to do because I'm planning to place this script in CRON. By the way, I've also tried to run the script as root user because only root user can deploy entries in CRON, so as per login default directory is /root (for root user), then I ran the script /home/nsadm/USER_LOGS/remover.sh, again it didn't work.
Here's the error that I've got:
rm: cannot remove `UMB00_UserActivity_20120103_094606.log': No such file or directory
I've tried your suggestion but running like /home/nsadm/USER_LOGS/remover.sh won't remove the file, I've checked and verified that the files are still 4 and that the first file which is supposed to be deleted was not removed. Please see below:
nssh# /home/nsadm/USER_LOGS/remover.sh
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
Hi jayan_jay,
I've also tried below but it's not working. Thanks..
Guys,
Maybe you can suggest another script either perl/shell which will serve as watcher to maintain only 3 files within the directory and it will be placed in the CRON so that everyday whenever a new file will be created, the 3-day old log will be removed. I appreciate even if I will not use my script, and will you use the one that you'll suggest.
And, place this script in a different directory, because when number of files are counted using wc -l , the file containing below script too will be counted, right?
I've tried what you've suggested but still it's not functioning
Please see below:
nssh# /home/user/remover.sh
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
rm: cannot remove `UMB00_UserActivity_20120103_094701.log': No such file or directory
..................................................................................................................
..................................................................................................................
Note that this is already under the directory /home/user/ and not /home/user/USER_LOGS/ anymore.
BTW, Can you suggest a watcher script that will perform same function? or maybe deleting/removing files that are already 3-day old? Let's say I have particular directory handling all the files (e.g /home/nsadm/USER_LOGS/), then the script will watch this directory and limit the files for today, yesterday and the other day (3 files).
I didn't yet tried the above command because I'm confuse of how to put that in my script? Will I include it the this script, on what part? Please advise.