在一个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,但这对我来说并不管用。


当前回答

使用Python 3微服务或shell;使用Ubuntu Server 18.04 (Bionic Beaver)或Ubuntu 19.10 (Eoan Ermine)或Ubuntu 18.10 (Cosmic Cuttlefish)我总是喜欢这些步骤,而且它也总是有效:

Creating a microservice called p example "brain_microservice1.service" in my case: $ nano /lib/systemd/system/brain_microservice1.service Inside this new service that you are in: [Unit] Description=brain_microservice_1 After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices /microservice_1.py -k start -DFOREGROUND ExecStop=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices/microservice_1.py -k graceful-stop ExecReload=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices/microservice_1.py -k graceful PrivateTmp=true LimitNOFILE=infinity KillMode=mixed Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target Give the permissions: $ chmod -X /lib/systemd/system/brain_microservice* $ chmod -R 775 /lib/systemd/system/brain_microservice* Give the execution permission then: $ systemctl daemon-reload Enable then, this will make then always start on startup $ systemctl enable brain_microservice1.service Then you can test it; $ sudo reboot now Finish = SUCCESS!!

这可以用相同的主体脚本来运行shell, react…数据库启动脚本…任何类型的OS代码…希望这能帮助你…

...

其他回答

Debian 9参见https://askubuntu.com/questions/228304/how-do-i-run-a-script-at-start-up。它帮助了我。Debian 9的简短版本: 在/etc/rc.local中添加命令(以root用户)

/path_to_file/filename.sh ||  exit 1   # Added by me
exit 0

可能,/path_to_file/filename.sh应该是可执行的(我认为是这样)。

另一种选择是在crontab中使用@reboot命令。

不是每个版本的cron都支持这一点,但如果您的实例基于Amazon Linux AMI,那么它就可以工作。

这是我在Red Hat Linux系统上执行的方法。

把你的脚本放在/etc/init.D,由根用户和可执行程序拥有。在脚本的顶部,您可以给出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

这表示脚本必须在级别3、4和5上运行,启动/停止的优先级是99和10。

然后,作为root用户,你可以使用chkconfig在启动时启用或禁用脚本:

chkconfig --list apex
chkconfig --add apex

您可以使用服务启动/停止顶点。

编辑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

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

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

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