无法在Linux上运行启动脚本

时间:2014-12-10 19:46:19

标签: linux tomcat startup registerstartupscript

我正在使用Linux的亚马逊风味

uname -a
Linux mydomain.org 3.19.25-82.99.amzn1.x86_64 #1 SMP Wed Dec 3 21:29:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

我想在系统重启时运行以下脚本......

ls -al /home/davea/install/apache-tomcat-6.0.35/bin/startup.sh
-rwxr-xr-x 1 davea mycompany 2023 Nov 28  2011 /home/davea/install/apache-tomcat-6.0.35/bin/startup.sh

所以我创建了这个文件,

-rwxr-xr-x 1 root root 73 Dec 10 19:29 /etc/init.d/start_tomcat

带有

#!/bin/sh

sh /home/davea/install/apache-tomcat-6.0.35/bin/startup.sh

但是,当我重启系统时,不会调用此脚本。我遗漏了哪些步骤?我可以在登录时在命令行运行脚本。

编辑:另外,我在/etc/rc.d中创建了这个符号链接...

ls -al /etc/rc.d/start_tomcat
lrwxrwxrwx 1 root root 24 Dec 10 19:29 /etc/rc.d/start_tomcat -> /etc/init.d/start_tomcat

仍然没有运气。

2 个答案:

答案 0 :(得分:0)

您必须将init.d下的启动脚本添加到默认运行级别。

sudo update-rc.d /etc/init.d/start_tomcat defaults

哪个应该在相应的/etc/rc?.d文件夹下为您的脚本创建符号链接。

答案 1 :(得分:0)

这取决于正在使用的启动程序。假设您有权这样做,并且如果star up程序是chkconfig程序,那么etc / init.d / start脚本必须遵循,因为您需要这样的头字段,如:

   # chkconfig: <levels> <start> <stop>
   # description: <some description>

对于其他程序,例如systemctl(redhat / fedora),您需要在以下文件夹中创建一个带有指令的文件:

  /etc/systemd/system/

您通常使用以下条目创建名为serviceName.service的文件:

[Unit]
Description=MyApp

[Service]

ExecStart=/path/to/myService/executable.sh

[Install]
WantedBy=multi-user.target

然后运行:

sudo systemctl enable /etc/systemd/system/hello.service
sudo systemctl start hello.service

如果这是LSB(基于Linux标准的)OS / Startup,您应该遵循以下教程:

https://wiki.debian.org/LSBInitScripts