开机自启动设置 开机自启动( 二 )


$chkconfig –level 5 testchkconfig on # 表示指定服务在运行级别5图形模式的状态下开机启动服务 。
$chkconfig –level 5 testchkconfig off # 表示指定服务在运行级别5图形模式的状态下开机不启动服务 。复制代码三. 自定义systemd service方式
CentOS7的systemd服务脚本存放在:/usr/lib/systemd/system(系统级)/usr/lib/systemd/user(用户级)下,以.service结尾 。这里以nginx为例
1、在/usr/lib/systemd/system目录下创建nginx.service文件
[devuser@test-server-1 ~]$ sudo vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx server
Documentation=http://nginx.org/en/docs/
# 依赖服务,仅当依赖的服务启动之后再启动自定义的服务
After=network.target remote-fs.target nss-lookup.target
[Service]
# 启动类型,包括simple、forking、oneshot、notify、dbus
Type=forking
# pid文件路径
PIDFile=/var/run/nginx.pid
# 启动前执行的操作
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
# 启动命令
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 重载命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload
# 停止命令
ExecStop=/usr/local/nginx/sbin/nginx -s stop
# 是否给服务分配独立的临时空间
PrivateTmp=true
[Install]
# 服务安装的用户模式,一般使用multi-user即可
WantedBy=multi-user.target复制代码
其中Service部分的Type包括如下几种类型:
simple:表示ExecStart启动的进程是该服务的主进程 。如果它需要为其他进程提供服务,那么必须在该服务启动之前先建立好通信渠道,比如套接字,以加快后续单元的启动速度 。forking:表示ExecStart进程将会在启动时使用fork()函数,这是传统Unix系统的做法,也就是说这个进程将由systemd进程fork出来,然后当该进程都准备就绪时,systemd进程退出,而fork出来的进程作为服务的主进程继续运行,对于此类型的进程,建议设置PIDFile选项,以帮助systemd准确定位该服务的主进程 。oneshot:该进程会在systemd启动后续单元之前退出,适用于仅需要执行一次的程序 。比如清理磁盘,你只需要执行一次,不需要一直在后台运行这个程序 。notify:与simple类似,不同之处在于该进程会在启动完成之后通过sd_notify之类的接口发送一个通知消息 。systemd在启动后续单元之前,必须确保该进程已经成功地发送了一个消息 。dbus:该进程需要在D-Bus上获得一个由BusName指定的名称,systemd将会在启动后续单元之前,首先确保该进程已经成功获取了指定D-Bus名称 。
2、 开启开机自启动
[devuser@test-server-1 ~]$ sudo systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.复制代码
以上两步,就将nginx服务配置成了在操作系统启动时自动启动 。
其它命令参考
$sudo systemctl start nginx.service # 启动
$sudo systemctl restart nginx.service # 重启
$sudo systemctl reload nginx.service # 重载
$sudo systemctl stop nginx.service # 停止
$sudo systemctl status nginx.service # 查看服务状态
$sudo systemctl cat nginx.service # 查看服务配置
$systemctl list-unit-files |grep nginx # 查看服务enabled状态
$sudo systemctl disable nginx.service # 关闭开机自启动
$sudo journalctl -f -u nginx.service # 查看日志
$sudo systemctl daemon-reload # 配置修改后,重新加载复制代码
根据以上配置,通过start启动nginx服务时,报PID file /var/run/nginx.pid not readable (yet?) after start.的错误,启动失败,日志如下
[devuser@test-server-1 ~]$ sudo journalctl -f -u nginx.service

推荐阅读