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


当前回答

这是我在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

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

其他回答

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

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

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

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应该是可执行的(我认为是这样)。

首先创建你的启动脚本@ /home/user/startup.sh,并使其可执行

chmod +x /home/user/startup.sh

然后为它设置crontab:

$ crontab -e
@reboot  /home/user/startup.sh

现在你的startup.sh脚本将在每次启动时运行。

这里有一个更简单的方法!

首先:编写一个shell脚本并将其保存为.sh 这里有一个例子

#!/bin/bash
Icoff='/home/akbar/keyboardONOFF/icon/Dt6hQ.png'
id=13
fconfig=".keyboard"
echo "disabled" > $fconfig
xinput float $id
notify-send -i $Icoff "Internal Keyboard disabled";

这个脚本将在启动时禁用内部键盘。

第二步:打开应用程序“启动应用程序首选项”

在这里输入图像描述

在这里输入图像描述

第三:单击“添加”。 第四:在NAME部分给出一个名字。 第五:在命令部分浏览到你的.sh。 第六:编辑你的命令部分:

bash <space> path/to/file/<filename>.sh <space> --start

第七步:点击添加。完成了!

现在重新启动你的电脑来确认。

干杯!