liunx自动启动脚本问题
如果你的脚本文件是在Windows环境下创建或编辑的,那么它可能使用了Windows的换行符和回车符(CRLF)。在Linux环境下,这可能会导致问题。你可以使用dos2unix
工具来转换文件的换行符。
首先,你需要安装dos2unix
。在Ubuntu或Debian等基于Debian的Linux发行版中,你可以使用以下命令安装:
sudo apt-get install dos2unix
在Fedora或CentOS等基于RPM的Linux发行版中,你可以使用以下命令安装:
sudo yum install dos2unix
安装完成后,你可以使用dos2unix
命令来转换你的脚本文件。例如,如果你的脚本文件名为autostart.sh
,你可以使用以下命令进行转换:
dos2unix autostart.sh
这将会把autostart.sh
文件中的CRLF换行符转换为LF换行符,使其在Linux环境下可以正常运行。
如果你的脚本文件包含了非ASCII字符,你可以使用文本编辑器(如Notepad++或Sublime Text等)来保存文件,并确保文件的编码格式为UTF-8。在保存时,选择"UTF-8"作为编码格式即可。
要将这些命令编写为一个Shell脚本,你可以按照以下步骤进行:
-
打开文本编辑器,创建一个新的文件,例如
start_project.sh
。 -
在文件中添加以下内容:
bashCopy Code#!/bin/bash # 启动 Redis 服务器 redis-server & # 启动 emqx /usr/local/project/emqx4.2.3/emqx/bin/emqx start # 启动 MySQL 服务 service mysql start # 启动 Java 程序 /usr/local/project/privalizationPrj/start java -jar /usr/local/project/privalizationPrj/privatization.jar --server.port=9901 --face.off=/usr/local/fea/feature & # 启动 imageWeb /usr/local/project/privalizationPrj/imageWeb
-
保存文件并关闭文本编辑器。
-
授予脚本执行权限。在终端中执行以下命令:
bashCopy Codechmod +x start_project.sh
现在,你可以通过运行./start_project.sh
来执行该脚本,它将按顺序执行脚本中的所有命令。请确保在执行脚本之前已经正确安装和配置了Redis、EMQX、MySQL等依赖,并且脚本中的路径和命令是正确的。
在CentOS 7上,你可以使用systemd
来设置开机自启动。
以下是在CentOS 7上设置开机自启动的步骤:
-
创建一个新的
service
单元文件。使用root权限打开一个文本编辑器,例如vi
或nano
:bashCopy Codesudo nano /etc/systemd/system/start_project.service
-
在打开的文件中,添加以下内容:
plaintextCopy Code[Unit] Description=Start Project Service After=network.target [Service] ExecStart=/usr/local/bin/start_project.sh [Install] WantedBy=multi-user.target
-
保存文件并关闭编辑器。
-
设置文件权限:
bashCopy Codesudo chmod 644 /etc/systemd/system/start_project.service
-
重新加载
systemd
配置:bashCopy Codesudo systemctl daemon-reload
-
启用服务,使其在启动时自动运行:
bashCopy Codesudo systemctl enable start_project.service
现在,当你的CentOS 7系统启动时,start_project.sh
脚本将会自动执行。请确保脚本路径和文件名正确,并且有足够的权限来执行脚本。如果你的脚本需要在网络启动后执行,请相应地调整After=network.target
为适当的依赖项。