在一个Amazon S3 Linux实例中,我有两个名为start_my_app和stop_my_app的脚本,它们永远地启动和停止(反过来运行我的Node.js应用程序)。我使用这些脚本手动启动和停止我的Node.js应用程序。到目前为止一切顺利。

我的问题是:我还想设置它,以便在系统启动时运行start_my_app。我知道我需要在init中添加一个文件。d和我知道如何符号链接到rc内的适当目录。d,但是我不知道我放在init。d中的文件里到底需要什么。我认为它应该只有一行,比如start_my_app,但这对我来说并不管用。


当前回答

使用sudo输入cron:

Sudo crontab -e

添加一个在启动时运行的命令,在这种情况下是一个脚本:

@reboot sh /home/user/test.sh

拯救策略:

按ESC然后:x保存并退出,或者按ESC然后ZZ(也就是shift+ ZZ)

测试测试:

运行不带cron的测试脚本,以确保它实际工作。 确保您将命令保存在cron中,使用sudo crontab -e 重启服务器以确认一切正常sudo @reboot

其他回答

编辑rc。本地文件使用nano或gedit编辑器,并添加您的脚本在其中。文件路径可以是“/etc/rc”Local或/etc/rc.d/rc. Local。

sudo nano /etc/rc.local

编辑如下:

#!/bin/sh
/path-to-your-script/your-scipt-name.sh

一旦完成按ctrl+o更新,再按ctrl+x。

使文件可执行。

sudo chmod 755 /etc/rc.local

然后在引导期间启动rc-local服务以运行脚本。

sudo systemctl start rc-local

你可以这样做:

chmod +x PATH_TO_YOUR_SCRIPT/start_my_app 

然后使用下面的命令

update-rc.d start_my_app defaults 100

请参阅有关Cyberciti的本页。

无痛,最简单,最普遍的方法是简单 使用~执行它。Bash_profile或~。概要文件(如果没有bash_profile文件)。

只需在文件底部添加执行命令,它将在系统启动时执行。

下面有一个例子; ~ \ \ sound_fixer.sh桌面

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

在卢本图,我不得不处理相反的情况。Skype启动后开始运行,我发现在~/。配置/自动启动/ skypeforlinux.desktop文件文件内容如下:

[Desktop Entry]
Name=Skype for Linux
Comment=Skype Internet Telephony
Exec=/usr/bin/skypeforlinux
Icon=skypeforlinux
Terminal=false
Type=Application
StartupNotify=false
X-GNOME-Autostart-enabled=true

删除这个文件对我有帮助。