支持start,stop,restart的运行脚本
程序员文章站
2024-01-01 23:38:10
...
linux下的运行脚本,支持start,stop,restart
使用说明;
1:
run.sh start
run.sh stop
run.sh restart
2:
修改最大内存memlimit=512
项目名称:projectname=processServer
启动的类名:com.ifeng.ipicture.ProcessServer
run.sh
#!/bin/sh #memory limit memlimit=512M projectname=processServer ulimit -SHn 51200 dir=`dirname $0` pidfile=pid cd $dir CP=.:config/ for file in lib/*; do CP=${CP}:$file; done retval=0 # start the server start(){ printf "Starting the server of $projectname\n" if [ -f "$pidfile" ] ; then pid=`cat "$pidfile"` printf 'Existing process: %d\n' "$pid" retval=1 else java -Xms512M \ -Xmx"$memlimit" \ -XX:+UseParallelGC \ -XX:+AggressiveOpts \ -XX:+UseFastAccessorMethods \ -Xloggc:logs/gc`date +%Y%m%d%H%M%S`.log \ -cp $CP com.ifeng.ipicture.ProcessServer >>logs/log.log & echo $! >"$pidfile" if [ "$?" -eq 0 ] ; then printf 'Done\n' else printf 'The server could not started\n' retval=1 fi fi } # stop the server stop(){ printf "Stopping the server of $projectname\n" if [ -f "$pidfile" ] ; then pid=`cat "$pidfile"` printf "Sending the terminal signal to the process: %s\n" "$pid" PROCESSPID=`ps -ef|awk '{print $2}'|grep "$pid"` if [[ $PROCESSPID -ne "$pidfile" ]] ; then rm -f "$pidfile"; printf 'Done\n' fi kill -TERM "$pid" c=0 while true ; do sleep 0.1 PROCESSPID=`ps -ef|awk '{print $2}'|grep "$pid"` if [[ $PROCESSPID -eq "$pidfile" ]] ; then c=`expr $c + 1` if [ "$c" -ge 100 ] ; then printf 'Hanging process: %d\n' "$pid" retval=1 break fi else printf 'Done\n' rm -f "$pidfile"; break fi done else printf 'No process found\n' retval=1 fi } # dispatch the command case "$1" in start) start ;; stop) stop ;; restart) stop start ;; hup) hup ;; *) printf 'Usage: %s {start|stop|restart}\n' exit 1 ;; esac # exit exit "$retval" # END OF FILEcho $CP