systemd简介
systemd是Linux系统的一组基本构建块
它提供了一个系统和服务管理器
它作为PID 1 运行并启动系统的其余部分进程
控制systemd的主要命令是systemctl
systemd命令
[root@web1 ~]# systemctl #列出所有启动的服务
[root@web1 ~]# systemctl status <服务名称> #查看服务状态
[root@web1 ~]# systemctl start <服务名称> #启动服务状态
[root@web1 ~]# systemctl stop <服务名称> #关闭服务状态
[root@web1 ~]# systemctl restart <服务名称> #重启服务状态
[root@web1 ~]# systemctl enable <服务名称> #设置开机自启
[root@web1 ~]# systemctl enable --now <服务名称> #设置开机自启并启动
[root@web1 ~]# systemctl disable <服务名称> #禁止开机自启
[root@web1 ~]# systemctl is-active <服务名称> #查看是否激活
[root@web1 ~]# systemctl is-enabled <服务名称> #查看是否开机自启
[root@web1 ~]# systemctl reboot #重启计算机
[root@web1 ~]# systemctl poweroff #关闭计算机
Unit文件
systemd管理服务时会读取对应的配置文件也就是Unit文件
读取Unit文件的目录(优先级由高到低)
/etc/systemd/system (设置了开机自启的Unit文件)
/usr/lib/systemd/system (所有已经安装软件的Unit文件)
Unit文件案例
[Unit]
Description=Command Scheduler
[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill-HUP $MAINPID
killMode=precess
[Install]
WantedBy=multi-user.target
Unit语法描述
Unit语法描述systemd案例
编写Unit文件,使systemctl命令控制nginx
编写Unit文件
[root@web1 ~]# cd /usr/lib/systemd/system
[root@web1 ~]# cp httpd.service nginx.service //拷贝模板
[root@web1 ~]# vim nginx.service //修改
[Service]
Type=forking //nginx是多进程类型程序,要设置为forking
ExecStart=/usr/local/nginx/sbin/nginx //当执行了systemctl start nginx之后执行的命令
ExecReload=/usr/local/nginx/sbin/nginx -s reload //当执行了systemctl reload nginx之后执行的命令
ExecStop=/bin/kill -s QUIT $MAINPID //当执行了systemctl stop nginx之后执行的命令,这里是用kill命令发送退出信号给nginx的进程号,相当于停止nginx服务,-s QUIT是发送退出信号,使nginx优雅关闭(处理完客户请求才退出),$MAINPID是变量,里面存了nginx的进程号
[Install]
WantedBy=multi-user.target //支持开机自启
激活Unit文件
[root@web1 ~]# systemctl daemon-reload //激活刚才的test.service文件,但有时可能不好使,可以重启系统
然后重启服务之后可以用systemctl等命令控制nginx
提示:必须要提前先安装好nginx服务,并且没有其他服务占用80端口!
网友评论