背景:
五六年前的时候,我在工作中发版项目,需要先打包,后部署到tomcat上,之后在linux中启动服务,当时记得命令是service xxx restart 启动。后来换几次工作都不需要自己来部署项目,或者是有自动化的部署工具,没用过原生的启动命令,最近接手的项目刚好又涉及到tomcat部署发版,但发现命令用的sh startup.sh,而不是记忆中的service xxx restart,所以搜了一下原因,整理一下
工具:
XShell
步骤:
- 上传文件
(Xftp操作)
- 返回根目录
cd /opt/apache-tomcat-9.0.90
- 停止服务
./bin/shutdown.sh
- 确认停止
ps -ef | grep tomcat
- 强制停止
kill -9 <PID>
- 启动服务
sh startup.sh
- 查看日志
tail -f logs/catalina.out
记忆中为什么有service xx restart
记忆中的 service xx restart 是 Linux 系统中用于重启指定服务的传统命令1, 2, 3。
它属于 SysVinit 服务管理体系,在现代主流的 Linux 发行版(如 CentOS 7+、Ubuntu 16.04+)中,虽然为了兼容性仍然可以使用,但已被 systemctl 命令取代2, 3。
新旧命令对比
| 特性 | service xx restart(旧) |
systemctl restart xx(新) |
|---|---|---|
| 所属体系 | SysVinit2, 3 | systemd2 |
| 当前状态 | 兼容模式,逐渐淘汰3 | 现代 Linux 标准命令2 |
| 功能 | 重启指定服务1, 2, 3 | 重启指定服务2, 7 |
| 适用系统 | CentOS 6及更早版本2 | CentOS 7+、Ubuntu 16.04+2 |
-
优先使用
systemctl在你当前的服务器环境中,建议直接使用
systemctl restart xx。它是 systemd 体系下的标准命令,功能更强大,与系统服务管理深度集成2。 -
虽然
service tomcat restart或systemctl restart tomcat可以重启 Tomcat,但对于 Tomcat 应用更新,仍强烈建议优先使用其自带的./bin/shutdown.sh和./bin/startup.sh脚本