mee*_*mit 344 linux init.d node.js forever
在亚马逊linux实例上,我有两个调用的脚本start_my_app
,stop_my_app
它们永远启动和停止(这反过来运行我的node.js应用程序).我使用这些脚本手动启动和停止我的节点应用程序.到现在为止还挺好.
我的问题:我也想设置它,以便start_my_app
在系统启动时运行.我知道我需要在里面添加一个文件init.d
,我知道如何将它符号链接到其中的正确目录rc.d
,但无法弄清楚我放入的文件中究竟需要的内容init.d
.我认为它应该只是一行,比如start_my_app
,但这对我来说并不适用.
小智 307
为此设置一个crontab
#crontab -e
@reboot /home/user/test.sh
Run Code Online (Sandbox Code Playgroud)
每次启动后,它都会运行测试脚本.
Jon*_*ler 279
在您输入的文件中,/etc/init.d/
您必须将其设置为可执行文件:
chmod +x /etc/init.d/start_my_app
Run Code Online (Sandbox Code Playgroud)
感谢@meetamit,如果没有运行,你必须创建一个符号链接 /etc/rc.d/
ln -s /etc/init.d/start_my_app /etc/rc.d/
Run Code Online (Sandbox Code Playgroud)
请注意,在最新的Debian上,这将不起作用,因为您的脚本必须符合LSB(至少提供以下操作:启动,停止,重新启动,强制重新加载和状态): https://wiki.debian .ORG/LSBInitScripts
作为注释,您应该放置脚本的绝对路径而不是相对路径,它可以解决意外问题:
/var/myscripts/start_my_app
Run Code Online (Sandbox Code Playgroud)
并且不要忘记在该文件的顶部添加:
#!/bin/sh
Run Code Online (Sandbox Code Playgroud)
Gil*_*not 121
一个简单的方法是添加一行/etc/rc.local
:
/PATH/TO/MY_APP &
Run Code Online (Sandbox Code Playgroud)
或者如果要以root身份运行命令:
su - USER_FOOBAR -c /PATH/TO/MY_APP &
Run Code Online (Sandbox Code Playgroud)
(尾随&符号表示进程并允许rc.local继续执行)
如果你想要一个完整的init脚本,debian发行版有一个模板文件,所以:
cp /etc/init.d/skeleton /etc/init.d/your_app
Run Code Online (Sandbox Code Playgroud)
并适应它.
Sau*_*ule 33
这是我在红帽系统上的方式
将您的脚本放入/etc/init.d
,由root和可执行文件拥有.在脚本的顶部,您可以为其指定chkconfig
.例如,以下脚本用于以用户oracle启动java应用程序.
脚本的名称是 /etc/init.d/apex
#!/bin/bash
# chkconfig: 345 99 10
# description: auto start apex listener
#
case "$1" in
'start')
su - oracle -c "cd /opt/apex ; java -jar apex.war > logs/apex.log 2>logs/apex_error.log &";;
'stop')
echo "put something to shutdown or kill the process here";;
esac
Run Code Online (Sandbox Code Playgroud)
这表示脚本必须在级别3,4和5运行,并且启动/停止的优先级为99和10.
然后,作为root用户,您可以使用它chkconfig
来启动或禁用启动时的脚本,
chkconfig --list apex
chkconfig --add apex
Run Code Online (Sandbox Code Playgroud)
你可以使用服务启动/停止顶点
小智 17
输入cron
使用sudo
:
sudo crontab -e
添加一个在启动时运行的命令,在本例中是一个脚本:
@reboot sh /home/user/test.sh
保存:
按ESC然后:x保存并退出,或按ESC然后ZZ(即shift + zz)
测试测试:
运行没有cron的测试脚本以确保它确实有效.
确保你在cron中保存了命令,使用 sudo crontab -e
重新启动服务器以确认它一切正常 sudo @reboot
Luc*_*cci 13
只需在你的crontab中添加一行代码..
确保该文件是可执行的:
chmod +x /path_to_you_file/your_file
Run Code Online (Sandbox Code Playgroud)
要编辑crontab文件:
crontab -e
Run Code Online (Sandbox Code Playgroud)
您必须添加的行:
@reboot /path_to_you_file/your_file
Run Code Online (Sandbox Code Playgroud)
那很简单!
使用nano
或gedit
编辑器编辑 rc.local 文件并在其中添加您的脚本。文件路径可以是/etc/rc.local
或/etc/rc.d/rc.local
。
sudo nano /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
这是编辑:
#!/bin/sh
/path-to-your-script/your-scipt-name.sh
Run Code Online (Sandbox Code Playgroud)
一旦完成后,按ctrl+o
来更新,按Enter
然后ctrl+x
。
使文件可执行。
sudo chmod 755 /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
然后启动 rc-local 服务以在引导期间运行脚本。
sudo systemctl start rc-local
Run Code Online (Sandbox Code Playgroud)
小智 5
你能行的 :
chmod +x PATH_TO_YOUR_SCRIPT/start_my_app
Run Code Online (Sandbox Code Playgroud)
然后使用此命令
update-rc.d start_my_app defaults 100
Run Code Online (Sandbox Code Playgroud)
请参阅Cyberciti上的此页面。
关于在启动时启动某些内容的答案有很多,但通常您想稍后启动它,因为您的脚本取决于网络等。用于at
仅添加此延迟,例如:
at now + 1 min -f /path/yourscript
Run Code Online (Sandbox Code Playgroud)
您可以将其添加到 /etc/rc.local 中,也可以添加到cron
以下内容中:
# crontab -e
@reboot at now + 1 min -f /path/yourscript
Run Code Online (Sandbox Code Playgroud)
把 cron 和 at 结合起来是不是很有趣?信息位于手册页中man at
。
至于评论说@reboot可能不会被广泛支持,试试吧。我发现 /etc/rc.local 在支持 systemd 的发行版(例如 ubuntu 和 raspbian)上已经过时。
归档时间: |
|
查看次数: |
920248 次 |
最近记录: |