当前位置: 首页 > article >正文

Linux学习笔记11 系统启动初始化,服务和进程管理(下)

前文

前文介绍了系统启动初始化程序,介绍了systemd的基础知识。这里主要看一下我们systemd的单元管理和常用的命令以及示例。

Linux学习笔记10 系统启动初始化,服务和进程管理(上)-CSDN博客

systemd单元管理

启动服务

这很常用:

sudo systemctl start mysql

等同于:

sudo systemctl start mysql.service

还可以启动其他单元:

sudo systemctl start a.timer 

但是启动非服务类型的单元,后缀不能省略。

停止服务

sudo systemctl stop mysql

停止非服务类型的单元,后缀不能省略。 

重启服务

sudo systemctl restart mysql

重新启动非服务类型的单元,后缀不能省略。

重新加载配置

这也很常用:

sudo systemctl reload mysql

这里要搞清楚这里是让服务自己相关的配置文件重载,而不是重载这个服务单元在systemd的配置文件。

比如nginx如果使用relaod就会重新加载nginx.conf这一系列文件。

查看服务状态

sudo systemctl status mysql

该命令可以接收多个单元或者通配符。

配置服务自启动

我们说过enable和disable就是在两个目录下的文件之间建立符号链接。

关于符号链接的解释:Linux学习笔记9 文件系统的基础_文件系统 用户节点-CSDN博客

设置服务自启动就是要使用enable命令。

当运行 systemctl enable [service] 命令时,systemd 会做以下几件事情:
在相应的启动目标目录下(例如 multi-user.target.wants/ 或 graphical.target.wants/)创建一个指向服务单元文件的符号链接。
这个符号链接的名称与服务单元文件的名称相同。

当系统启动时,systemd 会激活指定的启动目标。激活启动目标时,systemd 会检查目标目录下的所有符号链接,并启动它们指向的服务单元。因此,通过创建符号链接,服务就被配置为在系统启动时自动启动。

sudo systemctl enable nginx

可以使用:

sudo systemctl cat nginx

 查看配置文件知道该服务会在什么情况下自动启动。

ubuntu@VM-12-3-ubuntu:~$ sudo systemctl cat nginx
# /lib/systemd/system/nginx.service
# Stop dance for nginx
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

[Install]
WantedBy=multi-user.target

这里可以看到,在install区段,指定了在多用户目标中会被需要,所以一旦启用该配置,就会被添加到这个目标的依赖中,这样启动时就会带着nginx一起启动了。

禁止自启

sudo systemctl disable nginx

和上面相反,删除符号链接。 

重新加载单元文件

注意,这和重新加载服务自己要用的配置文件不同。

sudo systemctl daemon-reload

这条命令会重新运行所有的生成器程序,重新加载所有的单元文件并重新创建依赖树。和nginx自己的配置文件:nginx.conf没有半点关系。而是重新加载修改过的单元文件。

显示服务属性

systemctl show nginx

这是一部分输出,可以看到输出了这个服务的一系列属性,可以指定输出的哦。

systemctl show nginx --property=MemoryCurrent

设置属性

systemctl set-property nginx MemoryLimit=1000M

修改了nginx能占用的最大内存空间。

注意这个属性其实对应的是单元文件内容的一部分奥。

修改这里的属性会导致单元文件一起修改。 

差不多就这么多。

还有systemd的其他模块。我们之后再学习。


http://www.kler.cn/a/421438.html

相关文章:

  • JavaScript中的 closest 方法详解
  • C语言实例_22之计算阶乘n!
  • vue2+cesium初始化地图
  • 单机环境下Caffeine和Redis两级缓存的实现与问题解决
  • ElasticSearch学习篇19_《检索技术核心20讲》搜推广系统设计思想
  • 实时数据开发 | Flink的数据分区策略--物理分区操作
  • vue3-Import declaration conflicts with local declaration of dayjs
  • SQL面试题——腾讯SQL面试题 连续5天涨幅超过5%的股票
  • mysql的索引在什么情况下会失效?
  • Idea 2024.3 突然出现点击run 运行没有反应,且没有任何提示。
  • 【数据事务】.NET开源 ORM 框架 SqlSugar 系列
  • openEuler 22.03 使用cephadm安装部署ceph集群
  • Go快速入门
  • JAVA设计模式,动态代理模式
  • 【Java基础面试题011】什么是Java中的自动装箱和拆箱?
  • 基于Java Springboot高校社团微信小程序
  • Nginx负载均衡综合实验
  • 【开源】A059-基于SpringBoot的社区养老服务系统的设计与实现
  • flutter Owner和Binding学习
  • 计费结算系统的架构设计思路
  • SpringBoot+MyBatis整合ClickHouse实践
  • Robot Screw Theory (Product of Exponentials)机器人螺旋理论(指数积)
  • 鸿蒙Next学习-webview原生与JS交互通信
  • 你听说过MIPS吗?它和ARM有何区别?
  • 2023年第十四届蓝桥杯Scratch国赛真题—推箱子
  • 如何解决 java.rmi.AlreadyBoundException: 已绑定异常问题?亲测有效的解决方法!