systemctl
Summary
# 基本用法
systemctl list-unit-files --type service # 查看全部服务
systemctl status name.service # 查看服务状态
systemctl start name.service # 启动服务
systemctl stop name.service # 停止服务
systemctl restart name.service # 重启服务
systemctl enable name.service # 增加开机启动
systemctl disable name.service # 删除开机启动
# 任务的几种状态,未开启,正在启动,已启动
Active: inactive (dead)
Active: activating (auto-restart) (Result: exit-code) since 五 2019-11-15 13:46:29 CST; 4s ago
Active: active (running) since 五 2019-11-15 13:50:39 CST; 2h 35min ago
Status
[root@drools-service ~]# systemctl status postgresql-11 -l
● postgresql-11.service - PostgreSQL 11 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-04-14 13:13:21 CST; 1 months 18 days ago
Docs: https://www.postgresql.org/docs/11/static/
Main PID: 11627 (postmaster)
CGroup: /system.slice/postgresql-11.service
├─ 533 postgres: postgres fss400 175.31.201.131(63442) idle
├─ 534 postgres: postgres fss400 175.31.201.131(63444) idle
Apr 14 13:13:20 drools-service systemd[1]: Starting PostgreSQL 11 database server...
Apr 14 13:13:20 drools-service postmaster[11627]: 2020-04-14 13:13:20.991 CST [11627] LOG: listening on IPv4 address "0.0.0.0", port 5432
Apr 14 13:13:20 drools-service postmaster[11627]: 2020-04-14 13:13:20.991 CST [11627] LOG: listening on IPv6 address "::", port 5432
Apr 14 13:13:20 drools-service postmaster[11627]: 2020-04-14 13:13:20.993 CST [11627] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Apr 14 13:13:20 drools-service postmaster[11627]: 2020-04-14 13:13:20.996 CST [11627] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
Apr 14 13:13:21 drools-service postmaster[11627]: 2020-04-14 13:13:21.029 CST [11627] LOG: redirecting log output to logging collector process
Apr 14 13:13:21 drools-service postmaster[11627]: 2020-04-14 13:13:21.029 CST [11627] HINT: Future log output will appear in directory "log".
Apr 14 13:13:21 drools-service systemd[1]: Started PostgreSQL 11 database server.
- Loaded:配置文件的位置,是否设置为开机启动,厂商预设的是开机不启动。
- Active:表示正在运行,以及运行的多长时间。
- Docs:官方文档位置。
- Main PID:主进程ID。
- CGroup:所有的子进程
- 日志:最下面的是一些日志。
Systemd
- 在/usr/lib/systemd/system目录下新建 tomcat9.service 文件,添加如下配置信息。
[Unit]
Description=Apache Tomcat 9
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/opt/tomcat-9-loansms-3/tomcat.pid
ExecStart=/opt/tomcat-9-loansms-3/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
# User=tomcat 注意单独使用tomcat用户启动的情况
# Group=tomcat 注意单独使用tomcat用户启动的情况
[Install]
WantedBy=multi-user.target
- Unit 中的 Description 字段是当前服务的基本描述。
- Unit 中的 After 字段是当前服用所依赖的前置服务。
- Service 中的 Type 字段表示启动类型。
- simple(默认值):ExecStart字段启动的进程为主进程
- forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
- oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
- dbus:类似于simple,但会等待 D-Bus 信号后启动
- notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
- idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合
- Service 中的 ExecStart 字段定义启动时执行的命令。
Install 配置
- 定义如何安装这个配置文件。
- Install 中的 WantedBy 字段表示该服务所在的 Target,Target 是一个服务组。
WantedBy=multi-user.target
指的是默认 Target 也是最常用的 Target,这个组里面的服务都将开机启动。
systemctl get-default
multi-user.target
- 执行
systemctl enable sshd.service
命令时,sshd.service
的一个符号链接,就会放在/usr/lib/systemd/system/multi-user.target.wants目录中。
Reference
https://www.freedesktop.org/software/systemd/man/bootup.html#System%20Manager%20Bootup
本文来自博客园,作者:duchaoqun,转载请注明原文链接:https://www.cnblogs.com/duchaoqun/p/13031713.html