分页: 1 / 1
用tar.gz的包装了tomcat如何设置自动启动
发表于 : 2007-12-08 20:45
由 cmwfox
用tar.gz的包装了tomcat如何设置自动启动
/usr/local/apache-tomcat-5.5.20/bin/startup.sh 可以启动,下次重启机就不行了。
在/etc/rc.local中和 /etc/init.d/rc.local中加入了上面的命令也不行,
请大家说细一些
我安装的是ubuntu server 7.04 没有桌面
用以下两种方法都试了也不成:
1、sudo cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
2、sudo chmod +x mysql
3、sudo sysv-rc-conf
(运行服务管理工具,没有sysv-rc-conf的可以马上安装一个,apt-get install sysv-rc-conf,关于sysc-rc-conf的使用可以参考<Ubuntu7.04下使用sysv-rc-conf管理服务>)
4、运行sysv-rc-conf后找到mysql,并为它设置一个运行级别,本人设了2345。
另一种自动启动
cd /home/cmwfox/mysql-5.0.45
cp support-files/mysql.server /etc/init.d/mysqld
cd /etc/init.d
update-rc.d mysqld defaults
发表于 : 2007-12-08 21:19
由 bones7456
代码: 全选
sudo ln -s /usr/local/apache-tomcat-5.5.20/bin/startup.sh /etc/rc2.d/S99tomcat
这样试试
发表于 : 2007-12-08 21:31
由 cmwfox
sudo ln -s /usr/local/apache-tomcat-5.5.20/bin/startup.sh /etc/rc2.d/S99tomcat
大哥你这办法不行啊.
发表于 : 2007-12-08 21:34
由 bones7456
为什么?难道你的runlevel不是2? 输个runlevel,看看输出。
发表于 : 2007-12-08 21:48
由 cmwfox
bones7456 写了:为什么?难道你的runlevel不是2? 输个runlevel,看看输出。
是2的
root@ubuntu:~# runlevel
N 2
root@ubuntu:/etc/rc2.d# ls
README S11klogd S20makedev S89atd S99fetchmail S99rmnologin
S10sysklogd S16ssh S20rsync S89cron S99rc.local S99tomcat
root@ubuntu:/etc/rc2.d#
但启机就是不动行tomcat
发表于 : 2007-12-10 17:38
由 cmwfox
还有朋友知到吗。
发表于 : 2007-12-11 19:47
由 cmwfox
?/??
[分享]这个问题我刚刚搞定。
发表于 : 2008-01-17 12:42
由 自由狼-台风
这个问题我刚刚搞定。不过我的系统服务是SysV风格的,强行弄成BSD风格比较别扭。如果一定要用BSD风格,可以在“/etc/rc.d/rc.local”里添加一行“/etc/rc.d/init.d/tfw_tomcat start”。但BSD风格我不清楚如何控制服务停止。
我的SysV服务脚本“/etc/rc.d/init.d/tfw_tomcat”内容:
代码: 全选
#! /bin/sh
# chkconfig: 35 96 04
# description: Apache-Tomcat service script.
# Version:
# 2008-01-17-01
# By:
# Typhoon.Free.Wolf.
# Service name.
SVC_NAME="Apache-Tomcat"
# Lock file.
LOCK_FILE="/var/lock/subsys/tfw_tomcat"
# Installation prefix.
APP_HOME="/opt/prog/c/Apache/Tomcat"
# The process name to monitor.
APP_PROC="java"
# Authorize user.
APP_USER="typhoon"
SLEEP_START=5
SLEEP_STOP=$SLEEP_START
# Importing functions.
囗囗囗_func=0
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
囗囗囗_func=1
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
囗囗囗_func=1
fi
# Templete.
# Return:
# 囗囗囗_PROC_ON means process is there.
# 囗囗囗_PROC_OFF means process not exists.
# Other means error.
囗囗囗_PROC_ON=1
囗囗囗_PROC_OFF=0
probe() {
srch_rst=$(ps -A|grep $APP_PROC|awk '{print $4}')
for rst in $srch_rst ; do
if [ $APP_PROC = $rst ] ; then
return $囗囗囗_PROC_ON
fi
done
return $囗囗囗_PROC_OFF
}
# Templete.
# Shows OK.
# Return:
echo_ok() {
case $囗囗囗_func in
1)
echo_success
echo ""
;;
*)
echo ""
echo " [ OK ]"
;;
esac
}
# Templete.
# Shows Passed.
# Return:
echo_pass() {
case $囗囗囗_func in
1)
echo_passed
echo ""
;;
*)
echo ""
echo " [PASSED]"
;;
esac
}
# Templete.
# Shows Failed.
# Return:
echo_bad() {
case $囗囗囗_func in
1)
echo_failure
echo ""
;;
*)
echo ""
echo " [FAILED]"
;;
esac
}
# Templete.
# Start section.
# Return:
_start() {
probe
proc=$?
echo ""
echo "Starting $SVC_NAME..."
if (touch $LOCK_FILE) ; then
echo_ok
else
echo_bad
fi
}
start() {
probe
proc=$?
echo ""
echo "Starting $SVC_NAME..."
if [ $囗囗囗_PROC_OFF = $proc ] ; then
if (su - $APP_USER -c "$APP_HOME/bin/startup.sh") ; then
sleep $SLEEP_START
if (touch $LOCK_FILE) ; then
echo_ok
else
echo_pass
echo ""
fi
else
echo_bad
fi
elif [ $囗囗囗_PROC_ON = $proc ] ; then
if (touch $LOCK_FILE) ; then
echo_passed
echo ""
else
echo_bad
fi
fi
}
# Templete.
# Stop section.
# Return:
_stop() {
probe
proc=$?
echo ""
echo "Stopping $SVC_NAME..."
if (rm -Rf $LOCK_FILE) ; then
echo_ok
else
echo_bad
fi
}
stop() {
probe
proc=$?
echo ""
echo "Stopping $SVC_NAME..."
if [ $囗囗囗_PROC_OFF = $proc ] ; then
if (rm -Rf $LOCK_FILE) ; then
echo_passed
echo ""
else
echo_bad
fi
elif [ $囗囗囗_PROC_ON = $proc ] ; then
if (su - $APP_USER -c "$APP_HOME/bin/shutdown.sh") ; then
sleep $SLEEP_STOP
if (rm -Rf $LOCK_FILE) ; then
echo_ok
else
echo_pass
echo ""
fi
else
echo_bad
fi
fi
}
# Parse command line parameters.
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
发表于 : 2008-01-17 12:56
由 自由狼-台风
“# chkconfig: 35 96 04”行含义:
·这行是给“/sbin/chkconfig”准备的说明依,“/sbin/chkconfig”赖这行。。
·在切换向运行级别3和5启动本服务,而如果可能,在切换向其他运行级别时关闭本服务。
·本服务在关闭队列中的序号为94,“/sbin/chkconfig”会在相应级别的“/etc/rc.d/rcN.d”(N=0/1/2/4/6)里创建指向本脚本的链接“K94tfw_tomcat”。
·本服务在启动队列中的序号为04,“/sbin/chkconfig”会在相应级别(3、5)的“/etc/rc.d/rcN.d”(N=3/5)里创建指向本脚本的链接“S04tfw_tomcat”。
·实际上,链接中的序号可以自己指定,本行的序号用于自动创建链接。
“# description: Apache-Tomcat service script.”行含义:
·注释,具体用途尚不明确,但“/sbin/chkconfig”也依赖这行。
如果你没有“/sbin/chkconfig”这个工具,手工创建链接也是可以的。如果修改了脚本名,请也修改“$LOCK_FILE”的值。
发表于 : 2008-01-18 9:14
由 自由狼-台风
再附上自编PostgreSQL的服务脚本:
代码: 全选
#! /bin/sh
# chkconfig: 35 98 02
# description: PostgreSQL RDBMS start/stop script.
# Version:
# 2008-01-17-01
# By:
# Typhoon.Free.Wolf.
# Service name.
SVC_NAME="PostgreSQL"
# Lock file.
LOCK_FILE="/var/lock/subsys/tfw_pgsql"
# Installation prefix.
APP_HOME="/opt/prog/m/PostgreSQL.MagicLinux-2.0"
# The process name to monitor.
APP_PROC="postmaster"
# Authorize user.
APP_USER="typhoon"
# Database directory.
PGDATA="/opt/prog/m/PostgreSQL-Database"
# Log file.
LOG_FILE="$PGDATA/server.log"
# A very command at start.
#CMD_START="su - $APP_USER -c \"$APP_HOME/bin/pg_ctl start -w -l $LOG_FILE\""
#CMD_START="su - typhoon -c \'/opt/prog/m/PostgreSQL.MagicLinux-2.0/bin/pg_ctl start -w -l /opt/prog/m/PostgreSQL-Database/server.log\'"
# A very command for stop.
#CMD_STOP="su - $APP_USER -c \"$APP_HOME/bin/pg_ctl stop -m fast\""
# Importing functions.
囗囗囗_func=0
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
囗囗囗_func=1
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
囗囗囗_func=1
fi
#echo "SVC_NAME=$SVC_NAME"
#echo "LOCK_FILE=$LOCK_FILE"
#echo "APP_HOME=$APP_HOME"
#echo "APP_PROC=$APP_PROC"
#echo "PGDATA=$PGDATA"
#echo "LOG_FILE=$LOG_FILE"
#echo "APP_USER=$APP_USER"
#echo "CMD_START=$CMD_START"
#echo "CMD_STOP=$CMD_STOP"
#echo "囗囗囗_func=$囗囗囗_func"
#'/myops/exec/pause'
# Templete.
# Return:
# 囗囗囗_PROC_ON means process is there.
# 囗囗囗_PROC_OFF means process not exists.
# Other means error.
囗囗囗_PROC_ON=1
囗囗囗_PROC_OFF=0
probe() {
srch_rst=$(ps -A|grep $APP_PROC|awk '{print $4}')
for rst in $srch_rst ; do
if [ $APP_PROC = $rst ] ; then
return $囗囗囗_PROC_ON
fi
done
return $囗囗囗_PROC_OFF
}
# Templete.
# Shows OK.
# Return:
echo_ok() {
case $囗囗囗_func in
1)
echo_success
echo ""
;;
*)
echo ""
echo " [ OK ]"
;;
esac
}
# Templete.
# Shows Passed.
# Return:
echo_pass() {
case $囗囗囗_func in
1)
echo_passed
echo ""
;;
*)
echo ""
echo " [PASSED]"
;;
esac
}
# Templete.
# Shows Failed.
# Return:
echo_bad() {
case $囗囗囗_func in
1)
echo_failure
echo ""
;;
*)
echo ""
echo " [FAILED]"
;;
esac
}
# Templete.
# Start section.
# Return:
_start() {
probe
proc=$?
echo ""
echo "Starting $SVC_NAME..."
if (touch $LOCK_FILE) ; then
echo_ok
else
echo_bad
fi
}
start() {
probe
proc=$?
echo ""
echo "Starting $SVC_NAME..."
if [ $囗囗囗_PROC_OFF = $proc ] ; then
if (su - $APP_USER -c "$APP_HOME/bin/pg_ctl start -w -l $LOG_FILE") ; then
if (touch $LOCK_FILE) ; then
echo_ok
else
echo_pass
echo ""
fi
else
echo_bad
fi
elif [ $囗囗囗_PROC_ON = $proc ] ; then
if (touch $LOCK_FILE) ; then
echo_passed
echo ""
else
echo_bad
fi
fi
}
# Templete.
# Stop section.
# Return:
_stop() {
probe
proc=$?
echo ""
echo "Stopping $SVC_NAME..."
if (rm -Rf $LOCK_FILE) ; then
echo_ok
else
echo_bad
fi
}
stop() {
probe
proc=$?
echo ""
echo "Stopping $SVC_NAME..."
if [ $囗囗囗_PROC_OFF = $proc ] ; then
if (rm -Rf $LOCK_FILE) ; then
echo_passed
echo ""
else
echo_bad
fi
elif [ $囗囗囗_PROC_ON = $proc ] ; then
if (su - $APP_USER -c "$APP_HOME/bin/pg_ctl stop -m fast") ; then
if (rm -Rf $LOCK_FILE) ; then
echo_ok
else
echo_pass
echo ""
fi
else
echo_bad
fi
fi
}
reload() {
probe
proc=$?
if [ $囗囗囗_PROC_ON = $proc ] ; then
echo ""
echo "Reloading $SVC_NAME..."
if (su - $APP_USER -c "$APP_HOME/bin/pg_ctl reload") ; then
if (rm -f $LOCK_FILE) ; then
echo_ok
else
echo_pass
fi
else
echo_bad
fi
fi
}
status() {
probe
proc=$?
echo ""
echo "Checking $SVC_NAME..."
su - $APP_USER -c "$APP_HOME/bin/pg_ctl status -D '$PGDATA'"
}
# Parse command line parameters.
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
status)
status
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
;;
esac
exit 0
发表于 : 2008-01-18 9:15
由 自由狼-台风
最后,Apache-Httpd的服务脚本:
代码: 全选
#! /bin/sh
# chkconfig: 35 94 06
# description: Apache-Httpd service script.
# Version:
# 2008-01-17-01
# By:
# Typhoon.Free.Wolf.
# Service name.
SVC_NAME="Apache-Tomcat"
# Lock file.
LOCK_FILE="/var/lock/subsys/tfw_httpd"
# Installation prefix.
APP_HOME="/opt/prog/c/Apache/Httpd"
# The process name to monitor.
APP_PROC="httpd"
# Authorize user.
APP_USER="root"
SLEEP_START=0
SLEEP_STOP=$SLEEP_START
# Importing functions.
囗囗囗_func=0
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
囗囗囗_func=1
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
囗囗囗_func=1
fi
# Templete.
# Return:
# 囗囗囗_PROC_ON means process is there.
# 囗囗囗_PROC_OFF means process not exists.
# Other means error.
囗囗囗_PROC_ON=1
囗囗囗_PROC_OFF=0
probe() {
srch_rst=$(ps -A|grep $APP_PROC|awk '{print $4}')
for rst in $srch_rst ; do
if [ $APP_PROC = $rst ] ; then
return $囗囗囗_PROC_ON
fi
done
return $囗囗囗_PROC_OFF
}
# Templete.
# Shows OK.
# Return:
echo_ok() {
case $囗囗囗_func in
1)
echo_success
echo ""
;;
*)
echo ""
echo " [ OK ]"
;;
esac
}
# Templete.
# Shows Passed.
# Return:
echo_pass() {
case $囗囗囗_func in
1)
echo_passed
echo ""
;;
*)
echo ""
echo " [PASSED]"
;;
esac
}
# Templete.
# Shows Failed.
# Return:
echo_bad() {
case $囗囗囗_func in
1)
echo_failure
echo ""
;;
*)
echo ""
echo " [FAILED]"
;;
esac
}
# Templete.
# Start section.
# Return:
_start() {
probe
proc=$?
echo ""
echo "Starting $SVC_NAME..."
if (touch $LOCK_FILE) ; then
echo_ok
else
echo_bad
fi
}
start() {
probe
proc=$?
echo ""
echo "Starting $SVC_NAME..."
if [ $囗囗囗_PROC_OFF = $proc ] ; then
if ($APP_HOME/bin/apachectl start) ; then
sleep $SLEEP_START
if (touch $LOCK_FILE) ; then
echo_ok
else
echo_pass
echo ""
fi
else
echo_bad
fi
elif [ $囗囗囗_PROC_ON = $proc ] ; then
if (touch $LOCK_FILE) ; then
echo_passed
echo ""
else
echo_bad
fi
fi
}
# Templete.
# Stop section.
# Return:
_stop() {
probe
proc=$?
echo ""
echo "Stopping $SVC_NAME..."
if (rm -Rf $LOCK_FILE) ; then
echo_ok
else
echo_bad
fi
}
stop() {
probe
proc=$?
echo ""
echo "Stopping $SVC_NAME..."
if [ $囗囗囗_PROC_OFF = $proc ] ; then
if (rm -Rf $LOCK_FILE) ; then
echo_passed
echo ""
else
echo_bad
fi
elif [ $囗囗囗_PROC_ON = $proc ] ; then
if ($APP_HOME/bin/apachectl stop) ; then
sleep $SLEEP_STOP
if (rm -Rf $LOCK_FILE) ; then
echo_ok
else
echo_pass
echo ""
fi
else
echo_bad
fi
fi
}
# Parse command line parameters.
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
发表于 : 2008-01-18 9:19
由 自由狼-台风
[center]鸣谢[/center]
ChinaUnixer:achlice
QQ(Name):路要一个人走
QQ(Name):小二
QQ(Name):消失在风中[]
发表于 : 2008-01-18 15:04
由 自由狼-台风
目前看来,“/etc/rc.d/rc”在切换运行级别时会运行,并检查“/var/lock/subsys/”,当 “/var/lock/subsys/”下有与某服务脚本同名的文件时,一旦切换向该服务“off”的级别,“/etc/rc.d/rc”会自动以 “stop”参数调用服务脚本。
发表于 : 2008-01-20 8:47
由 cmwfox
谢谢大家,问题是解决了,不过有些东西还是不太明了,^_^官方应该有些正试的文档。