启动时以管理权限启动 tomcat

Saj*_*ani 23 startup init

我需要在登录系统之前运行一个进程。如何像服务一样运行它?我如何在 Linux 中制作服务?

在 Ubuntu 和 Fedora 中?服务是定制的tomcat

wor*_*ude 23

未登录系统登录系统之前(即“启动时”)运行服务,您需要创建一个启动脚本并将其添加到启动序列中。
服务脚本由三部分组成:启动、停止和重启。
服务脚本的基本结构是:

#!/bin/bash
#
RETVAL=0;

start() {
echo “Starting <Service>”
}

stop() {
echo “Stopping <Service>”
}

restart() {
stop
start
}

case “$1? in
start)
  start
;;
stop)
  stop
;;
restart)
  restart
;;
*)

echo $”Usage: $0 {start|stop|restart}”
exit 1
esac

exit $RETVAL  
Run Code Online (Sandbox Code Playgroud)

根据自己的喜好调整脚本后,只需将其放在 /etc/init.d/ 中,
然后将其添加到系统服务启动过程中(在 Fedora 上,我不是 Ubuntu 用户,>D):

chkconfig -add <ServiceName>  
Run Code Online (Sandbox Code Playgroud)

服务将被添加到系统启动过程中,您将不必再次手动启动它。

干杯!

  • 请注意,虽然启动、停止和重新启动通常对于简单的 init 脚本就足够了。您可能还想包含一个“状态”操作,这在 Debian 和其他发行版中很容易,这些发行版在其 init-functions 包中包含 status_of_proc()。管理良好的软件包将包括 LSB 所需的所有功能 (http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html)。在 Ubuntu 中随 tomcat 分发的 init 脚本包含所有这些操作,可能只是使用它。 (2认同)

小智 19

根据 init 系统,您可以以不同的方式创建 init 脚本。Fedora 为您提供了 upstart 和 systemd 供您选择,当然还有 SysV 兼容性。

暴发户

并且您的 Tomcat 应该在系统启动时启动。

系统化

  • 在中创建服务定义 /etc/systemd/system/custom-tomcat.service
  • 放进去:

    [Service]
    ExecStart=/path/to/your/tomcat --and --parameters
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    Run Code Online (Sandbox Code Playgroud)

并使用systemctl enable custom-tomcat.service. 它将在每次正常启动时启动。

当然,这两个 init 系统还有更多配置选项,您可以在他们的文档中查看这些选项。


xen*_*ide 7

Tomcat 是一项相当普遍的服务,我建议您查看发行版提供的 init 脚本。它可能适用于您自定义的二进制文件,几乎不需要调整。


Mic*_*zek 6

如果您有cron守护进程,预定义的 cron 时间挂钩之一是@reboot,它会在系统启动时自然运行。运行crontab -e以编辑您的crontab文件,并添加一行:

@reboot /your/command/here
Run Code Online (Sandbox Code Playgroud)


fsc*_*itt 6

为了在计算机启动后但在用户登录之前简单地运行脚本,您可以简单地编辑脚本 /etc/rc.local 来解决这个任务。