文章目录
- 前言
- 一、Oracle数据库
- 1、检查配置脚本,并修改
- 2、修改配置文件/etc/oratab
- 3、编辑启动文件
- 二、其他常用中间件(这里举例常见的,都类似)
- 三、手动编写服务,添加为启动项
- 1、[unit]区块:设置管理启动顺序与依赖关系
- 2、[Service]区块:设置启动行为
- 3、[Install]区块:定义如何安装这个配置文件,即怎样做到开机启动
前言
由一次机房意外断电,导致服务器重启,导致虚拟机重启;由于没有配置开机启动,导致所有服务需要启动一遍
一、Oracle数据库
1、检查配置脚本,并修改
使用oracle用户
cd $ORACLE_HOME
然后执行dbstart
dbstart
出现如下:
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /u01/app/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME
说明dbstart没有配置好,需要进行下一步配置,编写dbstart
vi bin/dbstart
全路径是:$ORACLE_HOME/bin/dbstart
把配置文件中的,ORACLE_HOME_LISTNER=ORACLE_HOME
2、修改配置文件/etc/oratab
vi /etc/oratab
将最后一行,最后一个N,改成Y
3、编辑启动文件
vi /etc/rc.d/rc.local
在最后,添加如下信息:
su - oracle -c 'lsnrctl start'
su - oracle -c 'dbstart'
二、其他常用中间件(这里举例常见的,都类似)
以为Nginx为例
systemctl list-unit-files | grep nginx
nginx.service disabled
这里如果显示disabled就说明没有添加启动项,如果显示ensbled,就说明添加到启动项,会开机启动。
执行如下:
systemctl enable nginx
返回信息,说明添加了
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
检查,再次执行
systemctl list-unit-files | grep nginx
这里显示已经是enabled,说明添加成功。
nginx.service enabled
好了,这里要说一下另一种情况
systemctl enable nginx
Failed to execute operation: No such file or directory
这个时候,需要手动添加到启动项
vi /etc/rc.d/rc.local
添加如下信息,在启动系统的时候,启动nginx
/home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf
三、手动编写服务,添加为启动项
这类适合,java进程,或者其他项目进程。
cd /etc/systemd/system
到这个目录,然后编写配置文件
vi test.service
[Unit]
Description="这是一个测试案列"
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/bin/sh /opt/script/start-test.sh
ExecStop=/bin/sh /opt/script/stop-test.sh
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
下面讲一个这个参数
1、[unit]区块:设置管理启动顺序与依赖关系
Description=服务描述
After=定义在某些服务之后启动。例如sshd服务启动必须在network.target sshd-keygen.service服务开启之后才能启动,可以使用如下命令查看sshd服务的配置
2、[Service]区块:设置启动行为
Type=ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行)
ExecStart=定义启动进程时执行的命令
ExecStop=停止服务时执行的命令
KillSignal=停止信号量,值一般为SIGQUIT
TimeoutStopSec=停止超时时间
KillMode=process,只杀主进程
PrivateTmp=true独立空间true或false,即文件系统名字空间的配置将被该命令行启动的进程忽略
3、[Install]区块:定义如何安装这个配置文件,即怎样做到开机启动
这个设置非常重要,如果设置开机自启动,在/etc/systemd/system目录下面的multi-user.target.wants子目录之中机会创建一个服务的软链接
WantedBy字段,表示该服务所在的 Targe,target的含义是服务组,表示一组服务,它可以设置的值如下
multi-user.target 表示多用户命令行状态