Centos7自启动
几种方式
一、服务的方式自启动
- /etc/init.d下相关程序的启动脚本
- ln -s /etc/init.d/服务名
- /etc/rc.d/rc3.d/S100服务名
- //S:开机自启动 100:启动顺序
二、systemctl
- 系统services服务配置目录: /etc/systemd/system
- 一般只放系统核心基础服务配置
- 自定义配置目录: /usr/lib/systemd/system/
- 存放自定义应用注册类服务和第三方服务类配置
1. 配置文件(XXXX.service 权限:754)
[Unit] # 启动顺序与依赖关系
Description="run test service" # 服务描述
Requires= # 强依赖关系,该服务失败或停止,test也必须退出
Wants=redis.service # test和Redis存在”弱依赖“关系,Redis启动失败或停止运行,不影响test
Before=
After=redis.service # 在redis.service之后启动
[Service] # 启动行为
Type=forking # 优先使用forking方式: (遵循传统Unix做法,设置PIDFile=选项,
# 帮助systemd准确定位该服务的主进程)
# simple(默认值):ExecStart字段启动的进程为主进程
# forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
# oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
# dbus:类似于simple,但会等待 D-Bus 信号后启动
# notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
# idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合
PIDFile=/var/run/app-run.pid # 设置应用进程的PID(缺省)
User=csapal
Group=csapal
TimeoutSec=30s
RestartSec=10s
Restart=always # no(默认值):退出后不会重启
# on-success:只有正常退出时(退出状态码为0),才会重启
# on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
# on-abnormal:只有被信号终止和超时,才会重启
# on-abort:只有在收到没有捕捉到的信号终止时,才会重启
# on-watchdog:超时退出,才会重启
# always:不管是什么退出原因,总是重启
Environment="/etc/csapal/systemd_env" # 环境变量设置,可设置多个Environment=项
# 备注:Environment或 EnvironmentFile引用文件皆可
ExecStart=/data/auto_run.sh start # 定义启动进程时执行的命令或文件
ExecReload= # 重启服务时执行的命令或文件
ExecStop= # 停止服务时执行的命令或文件
DefaultTimeoutStartSec=30 # 服务启动允许的最大时长,超时时间(默认无单位:秒)
# 单位:"ms"(毫秒), "s"(秒), "min"(分钟),
# "h"(小时), "d"(天), "w"(周)
Slice=csapal.slice
PrivateTmp=True # 是否分配独立的临时空间(缺省)
[Install]
WantedBy=multi-user.target
2. 基本操作
- 启动:systemctl start redis.service
- 停止:systemctl stop redis.service
- 停止不下来时,可以杀,systemctl kill redis.service
- 重启:systemctl restart redis.service
- 查看状态: systemctl status redis.service
- 设置服务开机自启动:systemctl enable redis.service
- 禁用服务:systemctl disable redis.service
- 屏蔽服务:ln -s ‘/dev/null’ ‘/etc/systemd/system/httpd.service’
- 取消屏蔽服务: rm ‘/etc/systemd/system/httpd.service’
- 列出所有运行单位:systemctl list-units
- 列出所有可用单位: sysytemctl list-units-files
- 列出所有失败单元: systemctl --failed
- 检查是否可用:systemctl is-enabled redis.service
- 查询日志: journalctl -ex redis.service
三、定时启动脚本
crontab