很多用源码编译安装和一些用tar包直接解压缩的java程序都没有init脚本,不能像httpd或者nginx这种服务直接使用service httpd start,也不能使用/etc/init.d/httpd start 来启动。对于这种情况,我们可以自己写一个init脚本,并将命令用chkconfig --add 命令将该服务器加入自启动。
下面我们以tomcat为例来演示这一过程:
一、创建Tomcat init 脚本,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#!/bin/bash
#tomcat:Start/Stop/Restart tomcat
#chkconfig:234 20 80
#description: Apache Tomcat init script
export
JAVA_HOME=
/usr/local/jdk1
.8.0_66
export
JRE_HOME=$JAVA_HOME
/jre
export
CLASSPATH=.:$JAVA_HOME
/lib
:$JRE_HOME
/lib
export
PATH=$PATH:$JAVA_HOME
/bin
TOMCAT_BIN=
/usr/local/apache-tomcat-8
.0.29
/bin
TOMCAT_HOME=
/usr/local/apache-tomcat-8
.0.29
TOMCAT_USER=root
TOMCAT_PID(){
echo
`
ps
-ef |
grep
$TOMCAT_HOME |
grep
-
v
grep
|
tr
-s
" "
|
cut
-d
" "
-f2`
}
start(){
pid=$(TOMCAT_PID)
if
[ -n
"$pid"
]
then
echo
-e
"\e[00;31mTomcat is already running (pid: $pid)\e[00m"
else
#start tomcat
echo
-e
"\e[00;32mStarting tomcat\e[00m"
/bin/su
$TOMCAT_USER -c $TOMCAT_BIN
/startup
.sh
fi
return
0
}
stop(){
pid=$(TOMCAT_PID)
if
[ -n
"$pid"
]
then
echo
-e
"\e[00;31mStoping Tomcat\e[00m"
sh $TOMCAT_BIN
/shutdown
.sh
else
echo
-e
"\e[00;31mTomcat is not running\e[00m"
fi
return
0
}
status(){
pid=$(TOMCAT_PID)
if
[ -n
"$pid"
]
then
echo
-e
"\e[00;32mTomcat is running whit pid: $pid\e[00m"
else
echo
-e
"\e[00;31mTomcat is stopped\e[00m"
fi
return
0
}
case
"$1"
in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep
3
start
;;
status)
status
;;
*)
echo
'Usage: $0 {start|stop|restart|status}'
exit
1
esac
exit
0
|
注意事项:
脚本中需要输出JAVA_HOME 和JRE_HOME等变量。否则执行service tomcat start|stop命令会报错。
二、如何将tomcat服务加入到开机自启动?
1、服务脚本必须在/etc/init.d/目录下,脚本中包含以下两行内容:启动级别和description
1
2
|
#chkconfig:234 20 80
#description: Tomcat is a java Servlet Container
|
2、chkconfig --add service_name 增加服务
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1775824,如需转载请自行联系原作者