Sponsored Content
Top Forums Shell Programming and Scripting Logrotate.d for every httpd instance for loop? Post 302968166 by Don Cragun on Friday 4th of March 2016 04:28:09 PM
Old 03-04-2016
Quote:
Originally Posted by xgringo
Maybe from this you can tell what I'm attempting at. I'm trying to get a list of all the jvm's running on webservers and then create a logrotated file for each one. However if the file already exist in /etc/logrotated/ I don't want to over write it, want to skip the existing. Then inside the file I'm trying to replace for each one the hostname inside the file.

Code:
ls -d /apps/apahce/*httpd* >/usr/local/scripts/jvmlist.txt 
jvmlist=`/usr/local/scripts/jvmlist.txt`
clear
for name in $jvmlist
  do
     
	if [ ! -f /etc/logrotated/$name cp /usr/local/scripts/examplescript.txt ]; then cp /usr/local/scripts/examplescript.txt /usr/local/scripts/stage/$name
	 
	cd /usr/local/scripts/stage/
	
	sed -i 's/examplehost/$name/g' /usr/local/scripts/stage/$name

There are several problems here:
  1. A for loop requires a do and a done. You have no done.
  2. An if statement requires a then and a fi. You have no fi.
  3. Shell variables are not expanded inside single quotes. And, since $name will expand to a string containing slash characters (/), you can't use slash as the separator in the sed substitute command. Use double quotes instead of single quotes around your sed program and use vertical bar (AKA pipe symbol) or some other character that won't appear in any expansion of $name instead of slash.
  4. Your for loop will execute once (with $name expanding to the name of the file that contains the names you want to process); not once for each file you want to process (with $name expanding to the name of a file you want to process). And, there is no need for a temporary file here. And, if you're going to define a variable specifying the name of your temporary file, define that variable before you have the name hardcoded into other commands and use the variable name consistently.
  5. Do you really have a directory named /apps/apahce? Or should it be /apps/apache?
  6. The three arguments /etc/logrotated/$name cp /usr/local/scripts/examplescript.txt cannot match the name of a regular file because the test -f (AKA [ -f ... ] command in your if statement expects one operand; not three.
Making lots and lots of wild assumptions, maybe something more like:
Code:
ls -d /apps/apache/*httpd* | while read -r name
do	if [ ! -f "/usr/local/scripts/stage$name" ]
	then	sed 's|examplehost|$name|g' /usr/local/scripts/examplescript.txt > "/usr/local/scripts/stage$name"
	fi
done

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

replace first instance(not first instance in line)

Alright, I think I know what I am doing with sed(which probably means I don't). But I cant figure out how to replace just the first occurance of a string. I have tried sed, ed, and grep but can't seem to figure it out. If you have any suggestions I am open to anything! (3 Replies)
Discussion started by: IronHorse7
3 Replies

2. Shell Programming and Scripting

[PHP] endless loop mimics a cron. Make sure only one instance is running

Hi, PHP user here. I'm using an endless loop to perform to mimic a cron. The script does something every 20 minutes. It sleep()s in the meantime. I have various checks that ensure that only instance can run, including a "gentleman agreement" locked file. However, I'd like to make sure... (2 Replies)
Discussion started by: jjshell
2 Replies

3. UNIX for Advanced & Expert Users

logrotate with /etc/logrotate.conf file

Hi there, I want to rotate the logfiles which are located in /var/log/jboss/tomcat* so I have created a file named as 'tomat' in /etc/logrotate.d/tomcat with the following content. # cat /etc/logrotate.d/tomcat /var/log/jboss/tomcat_access_log*.log { daily nocreate ... (2 Replies)
Discussion started by: skmdu
2 Replies

4. Red Hat

logrotate httpd logfiles

Hi, I need to logrotate logs in directories in /var/log/httpd/. There are 4 directories in /var/log/httpd/... these directories are /var/log/httpd/access/ /var/log/httpd/debug/ /var/log/httpd/error/ /var/log/httpd/required/ Each of the access, required, error and debug directories have around... (1 Reply)
Discussion started by: renuka
1 Replies

5. Linux

LogRotate

Hi I am trying to rotate specific log by using logrotate function in unix I have made following entry in the /etc/logrotate.conf file /var/log/testlog/debug_log { daily rotate 7 create compress } But only issue is that my other logs like /var/log/messages,... (2 Replies)
Discussion started by: SiddhV
2 Replies

6. Red Hat

Logrotate on RHEL 5

Hi All, Can any one let me me know if i run /usr/sbin/logrotate /etc/logrotate.conf will it read the whole /var/log/messages or it just see the time stamp of message file & then rotate the logs. Just wants to know is logrotation based on messages file contents or messages file time stamp. ... (1 Reply)
Discussion started by: ajaincv
1 Replies

7. Shell Programming and Scripting

Logrotate - I am not able to rotate files using logrotate

I have written script which is working in Home directory perfectly and also compressing log files and rotating correctly. But, when i try to run script for /var/log/ i am able to get compressed log files but not able to get rotation of compressed log files. Please suggest. I am using below command... (5 Replies)
Discussion started by: VSom007
5 Replies

8. AIX

Logrotate - /etc/logrotate.conf does't exist

Hi Admins. I have installed logrotate rpm on Aix 6.1. After the installation of rpm, I don't find /etc/logrotate.conf file and /etc/logrotate.d dir . The config file is located in /opt/freeware/etc/logrotate.conf. When I ran logrotate -v /opt/freeware/etc/logrotate.conf I get below... (2 Replies)
Discussion started by: snchaudhari2
2 Replies

9. UNIX for Dummies Questions & Answers

Logrotate configuration

Hi all, i would like to have a configuration on log rotate that will gzip my log files with date pattern %Y-%m-%d move these files to an olddir, but i want to avoid that the logrotate removes my files from old dir newer than 180 days i applyied this config #logrotate config to compress files... (3 Replies)
Discussion started by: charli1
3 Replies

10. Shell Programming and Scripting

Loop to run commands - after the previous instance completed

Hi All, I am trying to call a shell script in a loop. I want my first instance to complete, and then the 2nd instance of the command to start - and so on. eg. I am running this script 30 times. The wrapper script needs business date, from_time,to_time & server_name as inputs. script_name... (2 Replies)
Discussion started by: neil.k
2 Replies
All times are GMT -4. The time now is 02:34 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy