如何在启动时运行一个shell脚本

在一个亚马逊Linux实例中,我有两个名为start_my_appstop_my_app脚本, stop_my_app将永远启动并停止(然后运行我的node.js应用程序)。 我使用这些脚本来手动启动和停止我的节点应用程序。 到现在为止还挺好。

我的问题:我也想设置它, start_my_app在系统启动时运行start_my_app 。 我知道我需要在init.d添加一个文件,并且我知道如何将它链接到rc.d的正确目录,但无法弄清楚我需要放入init.d文件中的内容。 我认为它应该只是一行,例如, start_my_app ,但那不适合我。


在放在/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

不要忘记添加该文件的顶部:

#!/bin/sh

为此设置一个crontab

#crontab -e
@reboot  /home/user/test.sh

每次启动后它都会运行测试脚本。


一个简单的方法是在/etc/rc.local添加一行:

/PATH/TO/MY_APP &

或者如果你想以root身份运行该命令:

su - USER_FOOBAR -c /PATH/TO/MY_APP &

(尾随符号背景进程并允许rc.local继续执行)

如果你想要一个完整的初始化脚本,debian distro有一个模板文件,所以:

cp /etc/init.d/skeleton /etc/init.d/your_app

并适应一下。

链接地址: http://www.djcxy.com/p/90029.html

上一篇: How to run a shell script at startup

下一篇: How to run process as background and never die?