1 使用rc.local启动
1.1 实现原理1.2 将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下面来1.3 修改文件/etc/systemd/system/rc-local.service1.4 创建/etc/rc.local脚本文件,并写入要运行的程序1.5 启动rc-local.service服务 2 使用/etc/init.d/启动
2.1 在/etc/init.d/下新建脚本xxx 或者 xxx.sh2.2 设置文件权限2.3 将脚本添加到启动脚本 3 重启系统并检查操作
因业务要求,需要在Ubuntu启动时将docker容器和java进程一起启动,在这里学习配置下。
ubuntu18.04不再使用 inited 管理系统,改用 systemd。但是个人认为开机启动的rc.local更加好用,所以可以自己配置rc.local
1 使用rc.local启动 1.1 实现原理systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。一般系统安装完 /lib/systemd/system/ 下会有 rc-local.service 文件,即我们需要的配置文件。
1.2 将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下面来ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service1.3 修改文件/etc/systemd/system/rc-local.service
如果文件存在本身是没有[Install]项的,需要自己添加进去
#### 文件中本身就有的 [Unit] Description=/etc/rc.local Compatibility documentation=man:systemd-rc-local-generator(8) ConditionFileIsExecutable=/etc/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no #### 需要自己添加 [Install] WantedBy=multi-user.target Alias=rc-local.service1.4 创建/etc/rc.local脚本文件,并写入要运行的程序
#!/bin/bash source /etc/profile docker start redis-v8 sleep 2 docker start zookeeper sleep 5 docker start kafka sleep 10 voice.sh echo "voice start"
voice.sh脚本如下:
#! /bin/bash
source /etc/profile
cd $CONFIG_HOME/..
log_dir=$CONFIG_HOME/logs
log_time=`date +"%Y%m%d%H"`
v_log=${log_dir}/voice_alllog_${log_time}.log
v_error_log=${log_dir}/voice_alllog_${log_time}.error
{
nohup java -server -Xms2048m -Xmx4096m -XX:+HeapDumponOutOfMemoryError -XX:HeapDumpPath=$CONFIG_HOME/ -Duser.timezone=GMT+08 -Dspring.profiles.active=dev -Dfile.encoding=utf-8 -jar -agentlib:jdwp=tra
nsport=dt_socket,server=y,suspend=n,address=5006 voice.jar &
} 1>>$v_log 2>>$v_error_log
1.5 启动rc-local.service服务
给rc.local执行的权限
sudo chmod +x /etc/rc.local
启用服务
sudo systemctl enable rc-local
启动服务
sudo systemctl start rc-local.service sudo systemctl status rc-local.service2 使用/etc/init.d/启动 2.1 在/etc/init.d/下新建脚本xxx 或者 xxx.sh
#! /bin/bash # command content exit 02.2 设置文件权限
chmod 755 xxx2.3 将脚本添加到启动脚本
update-rc.d xxx defaults 90 # 移除开机脚本 update-rc.d -f xxx remove3 重启系统并检查操作
重启后,检查docker容器 docker ps,容器都正常启动
fff0318ef0b8 nginx:latest "/docker-entrypoint.…" 2 weeks ago Up 12 minutes 0.0.0.0:7064->7064/tcp, 80/tcp, 0.0.0.0:7897->7897/tcp
nginx-test1d15f405cc24c avie/wurstmeister/kafka "start-kafka.sh" 2 weeks ago Up 3 seconds 0.0.0.0:9092->9092/tcp
kafkab68be9b6a540 avie/zookeeper "/docker-entrypoint.…" 2 weeks ago Up 12 minutes 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp
zookeeper10310cb0cb26 mysql8:v8 "docker-entrypoint.s…" 2 weeks ago Up 12 minutes 33060/tcp, 0.0.0.0:3308->3306/tcp
mysql-v81103e736172e avie-redis:v8 "docker-entrypoint.s…" 2 weeks ago Up 12 minutes 0.0.0.0:6379->6379/tcp
redis-v8



