View Full Version : Process management in linux-shell?
shamuk80
11th March 2008, 13:09
Hi all,
I am facing a problem that may be handeled by a single command. There are lots of stale ftp processes running on servers that have nothing to do.
These processes are run for the time but didnt kill themselves and i have to delete them manually.
do have any idea to fix this problem?I mean the process should be run for a define period of time or we can set something upon its status so that it should be killed automatically.
Many thanks.
Sam
falko
12th March 2008, 20:18
Which FTP server and Linux distribution are you using?
shamuk80
14th March 2008, 11:45
Which FTP server and Linux distribution are you using?
I am using RHEL4 and RHEL5. Actually, we are running a script for tomcat, which is being called after 4 mins in cron job
the entry in the crontab is as
0,4,8,12,16,20,24,28,32,36,40,44,48,52,56 * * * * /opt/tomcat/batch/newAutoFtp/newAutoFtp.sh >/dev/null 2>&1
the actuall script is
# cat /opt/tomcat/batch/newAutoFtp/newAutoFtp.sh
/usr/java/java/bin/java -classpath /newAutoFtp/:$CLASSPATH:/usr/java/java/jre/lib/ext/mssqlserver.jar:/usr/java/java/jre/lib/ext/msutil.jar:/usr/java/java/jre/lib/ext/msbase.jar::/opt/tomcat/shared/lib/destiny.jar:/opt/tomcat/shared/lib/mail.jar:/opt/tomcat/shared/lib/log4j.jar:/opt/tomcat/shared/lib/activation.jar:/opt/tomcat/shared/lib/commons-net.jar:/opt/tomcat/shared/lib/commons-httpclient.jar:/opt/tomcat/batch/classes com.destiny.bin.FTPUploader 0
when its called after performing jobs (an sometimes not) it is not being killed automatically and I have to kill this process manually. Each day i have to kill this manually.
# ps ax | grep /bin/baash
19717 ? S 0:00 /bin/bash -c /opt/tomcat/batch/newAutoFtp/newAutoFtp.sh >/dev/null 2>&1
hundreds of above stale processes are needed to be killed automatically.
then i made some changes in the above script with thinking that to get this child process and killed it manually after an hour.
# cat /opt/tomcat/batch/newAutoFtp/newAutoFtp.sh
runtime=${1:-1h}
mypid=$$
/usr/java/java/bin/java -classpath /newAutoFtp/:$CLASSPATH:/usr/java/java/jre/lib/ext/mssqlserver.jar:/usr/java/java/jre/lib/ext/msutil.jar:/usr/java/java/jre/lib/ext/msbase.jar::/opt/tomcat/shared/lib/destiny.jar:/opt/tomcat/shared/lib/mail.jar:/opt/tomcat/shared/lib/log4j.jar:/opt/tomcat/shared/lib/activation.jar:/opt/tomcat/shared/lib/commons-net.jar:/opt/tomcat/shared/lib/commons-httpclient.jar:/opt/tomcat/batch/classes com.destiny.bin.FTPUploader 0 &
commandpid=$!
sleep $runtime
kill -s SIGTERM $commandpid
I am not good in scripting but a bit programming knowledge. its working fine but i think there must be some good way to handle this. Is there any way we can get status that the ( /usr/java/java/bin/java -classpath /newAutoFtp/:$CLASSPATH:/usr/java/java/jre/lib/ext/mssqlserver.jar:/usr/java/java/jre/lib/ext/msutil.jar:/usr/java/java/jre/lib/ext/msbase.jar::/opt/tomcat/shared/lib/destiny.jar:/opt/tomcat/shared/lib/mail.jar:/opt/tomcat/shared/lib/log4j.jar:/opt/tomcat/shared/lib/activation.jar:/opt/tomcat/shared/lib/commons-net.jar:/opt/tomcat/shared/lib/commons-httpclient.jar:/opt/tomcat/batch/classes com.destiny.bin.FTPUploader 0 ) can give us the status that its working or not? I am killing this after 1 hour time but normally it takes 3-4 mins to run properly.
can you suggest any thing?
Many thanks and sory my english is not so good :-)
Cheers
falko
15th March 2008, 18:44
You can check the output of ps aux if the script is still running, maybe combined with grep:
ps aux | grep process
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.