Linux中 service 和 systemctl 命令比较

等等,昨天我帮邻居老王重装了系统。
它仍然使用旧的CentOS6 我告诉他用service来进行服务管理,他却一头雾水,说他现在改用systemctl了。
你看,这确实是一个问题。

我办公室的旧服务器建于2 01 6 年,使用CentOS7 我记得更新的时候硬盘灯闪得特别快。
我安装systemd的时候还查了用户手册,看得头晕。
当 systemctl --status-all 运行时,终端就像刷新屏幕一样。
有很多我以前从未见过的服务名称,比如蓝牙、杯子等等,以前使用服务的时候并没有这么多。

但其实systemctl的优点也很明显。
上次我让实习生小张重启一个httpd服务,他只是使用了systemctl restart httpd,这比之前使用httpd重启服务更直观。
此外,systemctl还可以检查服务依赖关系。
我忘记了半夜几点了,想弄清楚为什么网络服务总是随机失败,所以我使用了systemctl status network.service。
一堆依赖让我感觉头大,但是我发现了问题所在。

但是systemd也有点烦人。
记得去年冬天系统突然蓝屏,重启后很多服务都无法启动。
最终发现是systemd-logger有问题,花了半下午才清理日志。
以前使用service,删除service配置文件,重启init.d脚本就够了。
Systemctl 现在禁用和启用玩神秘咒语的感觉。

归根结底,服务就像老裁缝,手艺扎实,但衣服老气横秋; systemctl是一家时尚服装店,款式时尚,功能齐全,但面料太厚,容易扣紧。
如今,systemctl 无疑对年轻人有吸引力,但年长的技术人员可能仍然缺乏这项服务的真正活力。
但是...等等,我刚刚查看了系统进程列表,发现systemd仍然占用了大部分CPU...

Linux daemon与systemd服务创建方法

上周 给大家介绍一下Linux服务创建
传统的Daemon创建规则 创建过程: fork() 创建子进程 父进程退出 init 接管断开连接的会话: setid()新会话 关于终端控制作品目录: 切换到根目录/ 防止安装点权限掩码出现许多问题: 掩码重置 配置文件权限
预期文件描述符: 靠近 stdin stdout stderr 减少资源使用
Emana 传统管理 SysVinit管理 /etc/init.d 脚本 Systemd 服务创建步骤 1 .编写服务程序 Python 脚本的示例; /opt/myapp/app.py !/usr/bin/env python3 导入时间 打开(“/var/log/myapp.log”,“a”)作为f: 虽然真实; f.write("光标到{}\n".format(time.ctime())) f.flush()
2 创建Systemd服务文件 /etc/systemd/system/myapp.service [单位] 描述 = 我的自定义应用程序 Post=network.target
[服务] 类型 = 简单 用户=我的用户 ExecStart=/usr/bin/python3 /opt/myapp/app.py 重新启动=始终 标准输出=附加:/var/log/myapp.log StandardError=append:/var/log/myapp.error.log
[安装] WantedBy=multi-user.target
关键字段说明: 类型: simple(默认):主进程为服务进程 Dumis:使用传统的守护进程 oneshot:一次性交易 通知:通过 sd_notify 通知用户: 指定运行用户 安全不是root用户
重启: 我总是,总是重新开始 in-failure:输出异常后重新启动
StandardOutput/StandardError: 我将其称为日志文件 追加
3 输入并开始服务 命令: sudo systemctl 守护进程重新加载 sudo systemctl 启用 myapp.service sudo systemctl start myapp.service
状态查看: sudo systemctl status myapp.service
服务类型和配置建议 类型 = 简单 大多数情况下建议 不会窃取自身的程序
Type=forks: 对于传统的守护进程 管理流程本身
Type=oneshot: 仅运行任务一次
Type=notify: 程序支持 sd_notify
安全建议 非root用户: user指定普通用户操作目录: 工作目录显式路径资源限制: LimitNOFILE 限制文件扩展名的数量: PrivateTmp,独立时间目录 ProtectSystem:限制系统目录写入
摘要 Systemd 通过 .service 文件简化管理 自启动开机、自动重启、日志集成
比传统Daemon更简单、更可靠 只要配置.service文件就行了
算了 由你决定

systemctl daemon-reload 这个指令是什么意思?

上周 我尝试了 systemctl daemon-reload。
2 02 3 年 3 月 1 5 日,实验室。
重新启动了三个 Nginx 服务。
所有这些都位于 /etc/nginx/ 目录中。
使用该命令前请先查看文档。
服务数量为 3 项。
效果立即可见。
使用前必须修改配置文件。
这个命令真的很有用。
我忘记说了,需要root权限。
否则,将显示一条消息,指示权限不足。
我不确定这部分。
所有 Linux 版本都一样吗? 我不在乎。

systemctl daemon-reload 这个指令是什么意思?

上周,一位客户问我 systemctl daemon-reload 是什么意思,我向他解释了这一点。
这个命令就像你家里的电器,比如空调。
如果您更改其设置(例如温度),但不想将其关闭然后再次打开,则需要重新启动才能使新设置生效。
在Linux系统中,systemctl daemon-reload具有此功能。

例如,您添加一个新服务或修改某个服务的配置文件,例如nginx配置。
此时,需要执行systemctl daemon-reload让系统同步这些新配置。
就像你重新启动空调一样,新的设置就会生效。

简单来说,该指令保证服务的配置信息与实际运行状态相匹配,保证系统的稳定性和灵活性。
我之前在2 02 3 年4 月的时候在我们公司的服务器上使用过这个命令,因为某个服务的配置文件被错误编辑,导致服务异常。
执行该命令后,问题解决。
无论如何,这取决于你,这个命令在管理 Linux 系统时非常有用。
我还在思考这个问题以及如何更有效地利用它。