如何在启动时运行 shell 脚本

新手上路,请多包涵

Amazon S3 Linux 实例上,我有两个脚本,分别称为 start_my_appstop_my_app 永远 启动和停止(依次运行我的 Node.js 应用程序)。我使用这些脚本手动启动和停止我的 Node.js 应用程序。到目前为止,一切都很好。

我的问题:我还想设置它,以便在系统启动时运行 start_my_app 。我知道我需要在 init.d 中添加一个文件,并且我知道如何将其符号链接到 rc.d 中的正确目录,但我无法弄清楚实际上需要进入什么我放在 init.d 中的文件。我认为它应该只是一行,例如 start_my_app ,但这对我不起作用。

原文由 meetamit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 608
2 个回答

您放入的文件 /etc/init.d/ 必须设置为可执行文件:

 chmod +x /etc/init.d/start_my_app

正如@meetamit 所指出的,如果它仍然无法运行,您可能必须在 /etc/rc.d/

 ln -s /etc/init.d/start_my_app /etc/rc.d/

请注意,在最新版本的 Debian 上,这将不起作用,因为您的脚本必须符合 LSB(至少提供以下操作:启动、停止、重新启动、强制重新加载和状态): https://wiki .debian.org/LSBInitScripts

请注意,您应该始终在脚本中使用文件的绝对路径而不是相对路径,这可能会解决意想不到的问题:

 /var/myscripts/start_my_app

最后,确保在文件顶部包含 shebang:

 #!/bin/sh

原文由 Jonathan Muller 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题