文章目录

  • 前言
  • 一、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=centos开机自动启动python项目 centos7开机自动启动_运维ORACLE_HOME

centos开机自动启动python项目 centos7开机自动启动_启动项_02

2、修改配置文件/etc/oratab

vi /etc/oratab

将最后一行,最后一个N,改成Y

centos开机自动启动python项目 centos7开机自动启动_nginx_03

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	表示多用户命令行状态