Day 10
本文最后更新于84 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

Linux 服务管理(systemd / daemon / service)


今日目标

今天学完你要掌握:

1、什么是 service(服务)
2、什么是 daemon(守护进程)
3、什么是 systemd
4、systemctl 常见命令
5、如何设置开机自启
6、如何查看服务日志
7、如何自己理解一个服务的生命周期

今天最重要的一句话:

服务 = 在后台长期稳定运行、提供功能的程序。


第一部分:什么是服务

比如:

你敲:

nginx

程序启动了。

它在后台持续运行。

监听:

80
443

等请求进来。

这就是服务。


再比如:

MySQL:

监听:

3306

长期运行。

等程序连接。

也是服务。


Redis:

监听:

6379

也是服务。


SSH:

监听:

22

让你远程登录。

也是服务。


所以服务本质:

长期运行 + 对外提供能力


常见服务

nginx       Web服务
mysqld 数据库
redis 缓存
sshd 远程连接
docker 容器服务
kubelet K8s节点服务
cron 定时任务

第二部分:什么是 daemon

daemon(读作:低门)

中文:

守护进程

理解:

后台默默工作的进程。

你看不到界面。

一直运行。


例如:

nginx worker
mysqld
dockerd
sshd

都是 daemon。


特点:

长期运行
后台运行
通常监听端口
系统启动时自动启动
负责提供稳定服务

关系

程序:

nginx(二进制程序)

启动后:

变成进程:

nginx master
nginx worker

作为后台服务运行。

这就是 daemon。


第三部分:什么是 systemd

以前 Linux 服务管理很乱。

后来统一成:

systemd systemd。

可以理解成:

Linux 的总管家

负责:

启动服务
停止服务
开机自启
重启服务
查看状态
查看日志
管理依赖
管理资源限制

一句话:

systemd = Linux 服务总控中心


第四部分:systemctl(超级高频)

管理服务命令:

systemctl

以后天天用。


查看状态

查看 Nginx Nginx:

systemctl status nginx

看:

是否运行
启动时间
PID
日志
是否开机自启

看 Docker Docker:

systemctl status docker

看 SSH:

systemctl status sshd

启动

sudo systemctl start nginx

停止

sudo systemctl stop nginx

重启

sudo systemctl restart nginx

重载配置

sudo systemctl reload nginx

区别:

restart = 停掉再启动
reload = 不停服务,重新加载配置

生产环境更常用 reload(如果服务支持)。


查看是否开机自启

systemctl is-enabled nginx

输出:

enabled

说明开机启动。

如果:

disabled

不开机启动。


设置开机启动

sudo systemctl enable nginx

取消开机启动

sudo systemctl disable nginx

查看所有服务

systemctl list-units --type=service

看看系统都有哪些服务。


第五部分:service 文件(重点)

systemd 怎么知道怎么启动 nginx?

因为有:

service 文件。

一般在:

/usr/lib/systemd/system/
/etc/systemd/system/

比如:

nginx.service
docker.service
sshd.service

看看:

cat /usr/lib/systemd/system/nginx.service

会看到:

[Unit]
Description=nginx

[Service]
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill ...

[Install]
WantedBy=multi-user.target

里面定义:

怎么启动
怎么停止
怎么重载
开机什么时候启动

这非常重要。

以后自己写服务也会用。


第六部分:查看日志(结合 Day6)

查看某服务日志:

看 Nginx:

journalctl -u nginx

实时看:

journalctl -u nginx -f

最近 50 行:

journalctl -u nginx -n 50

如果服务启动失败:

第一时间:

journalctl -u 服务名

第七部分:Day10 实操

今天直接敲:

systemctl status sshd
systemctl status nginx
systemctl status docker

systemctl is-enabled sshd

systemctl list-units --type=service | head

journalctl -u sshd -n 20

如果有 nginx:

sudo systemctl restart nginx
sudo systemctl reload nginx
journalctl -u nginx -n 50

查看 service 文件:

cat /usr/lib/systemd/system/sshd.service

或者:

cat /etc/systemd/system/*.service

第八部分:大厂面试题

1)systemd 是什么?

答:

Linux 的系统和服务管理器,负责管理系统服务生命周期。


2)restart 和 reload 区别?

答:

restart 重启进程
reload 重新加载配置,不中断服务

3)怎么设置开机自启?

systemctl enable 服务名

4)服务启动失败怎么查?

顺序:

status
journalctl
配置检查
端口冲突
权限问题
依赖服务问题

5)daemon 是什么?

答:

在后台长期运行、持续提供服务的进程。

补充:排错部分

我会先通过 systemctl status 查看服务状态和报错信息;

然后通过 journalctl 或 error.log 查看详细日志;

接着检查端口是否被占用;

再检查配置文件是否正确;

之后检查文件权限;

确认服务是否正常监听;

最后再排查防火墙、安全组和网络问题。
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇