首页 > 编程知识 正文

系统服务优化,systemctl命令未找到

时间:2023-05-04 10:00:42 阅读:44580 作者:2340

systemctl系统服务管理systemctl管理单元-unitsystemctl管理serviceservice服务文件基本格式查看引导启动列表取消启动开始服务开始服务结束服务重新加载配置输出服务运行显示进行服务(服务)注销服务(服务)的设备手册页,该服务检测unit设备是否已注销以进行自动启动。 如果由unit提供,请重新加载整个系统配置并扫描对unit文件的更改。 systemctl管理targetmulti-user.target--文本界面的Linux系统临时将图形界面设置为文本界面graphical.target--图形界面切换到stow以显示下次启动时加载的默认target永久设置下次启动时加载的默认target loginctl。 确定当前用户是否具有运行系统的权限。 显示当前用户的系统配置信息。 查看用户的系统权限打开用户的系统权限。 普通用户运行systemd

在RHEL6版本之前,采用的第一个流程都是init。 第一个过程非常重要。 因为第一个进程负责启动所有后续进程,所以后续其他进程能否正常启动取决于系统是否正常运行。

由init进程启动的所有后续进程都是串行启动的,串行启动意味着速度较慢

从Centos7开始,系统默认使用systemctl管理系统服务,第一个过程称为systemd。

与init相比,该过程采用并行启动后续进程,并行启动意味着速度更快

系统管理单位-由单元系统管理的内容不仅是服务,系统管理的单位是单元,服务是单元的一种。

我们侧重于服务和target

系统管理服务

服务文件基本格式服务文件存储在/usr/lib/systemd/system目录中

网络管理器文件示例

查看网络管理器服务文件[ root @ c8~] # cat/usr/lib/systemd/system/network manager.service [ unit ] # 的说明description=networkmanagerdocumentation=man :网络管理器(8)依赖服务Wants=network.target # network-pre.targe启动完成后启动---前置条件after=network-pre.target dbus.service # 启动后启动的unit--后置条件before=network.targetnetworrk类型type=dbusbusname=org.free desktop.network manager #要加载的内容exec rrer busctlcallorg.free desktop.net top networkmanagerorg.free desktop.networkmanagerreloadu0# exec reload=/jmd yet/kill -。 ustart network manager---no-daemon restart=on-failure # nmdoesn ' twantsystemdtokillitschildrenforit #进程中的kill mode capabilityboundingset=cap _ net _ admincap _ DAC _ override cap _ net _ raw cap _ net _ bind _ service cap 系统保护ProtectSystem=true#保护主目录protect home=只读# werequirefiledescriptorsfordhcpetc.when activant # thedefaultlimitof 1024 iseasilyreached.limit nofile=65536 [ install ] # wanted by=multi-user.taarget,定义将服务放入哪个target 服务别名alias=dubs-org.free desktop.network manager.service also=network manager-dispatcher.service # wewantoenabler

online.service has# WantedBy=network-online.target, so enabling it only has an effect if# network-online.target itself is enabled or pulled in by some other unit.Also=NetworkManager-wait-online.service

自定义service文件

服务文件存放在/usr/lib/systemd/system目录

[Unit]# 定义的描述Description=Network Manager[Service]# 类型Type=notify# 需要启动的程序ExecStart=/usr/jmdyet/test.sh &# 服务停止时的命令ExecStop=killall test.sh# 需要加载的内容ExecReload=/jmdyet/kill -HUP $MAINPID[Install]# 如果想要执行enable,必须写Install的内容
查看开机启动列表 # systemctl list-unit-files |grep 系统服务名[root@localhost ~]# systemctl list-unit-files | grep firewalldfirewalld.service disabled
设置开机启动

systemctl在enable、disable、mask子命令里面增加了–now选项,可以激活同时启动服务,激活同时停止服务等。

# 设置开机启动并现在启动## 相当于同时执行了systemctl start 服务名systemctl enable --now firewalld# 查看服务启动状态root@localhost ~]# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 日 2021-09-05 23:12:15 CST; 8s ago Docs: man:firewalld(1) Main PID: 31773 (firewalld) CGroup: /system.slice/firewalld.service └─31773 /usr/jmdyet/python -Es /usr/sjmdyet/firewalld --nofork --nopid9月 05 23:12:14 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...9月 05 23:12:15 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
取消开机启动 # 取消开机启动并现在就停止服务systemctl disable --now firewalld## 查看服务状态是否停止[root@localhost ~]# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)9月 05 23:06:15 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...9月 05 23:06:16 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.9月 05 23:06:31 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...9月 05 23:06:33 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.# 查看启动列表[root@localhost ~]# systemctl list-unit-files |grep firewalldfirewalld.service disabled
开启服务 systemctl start firewall
关闭服务 systemctl stop firewall
重启服务 systemctl restart 服务名
重新加载配置 systemctl reload 服务名
输出服务运行的状态 systemctl status 服务名
检查service是否在启动状态

写脚本是判断服务器是否启动很管用

# systemctl is-active 服务名systemctl is-active NetworkManager# active
检测unit单元是否为自动启动

写脚本时判断服务器是否开机自启很管用

# systemctl is-enabled 服务名systemctl is-enabled firewalld# enabled
注销一个服务(service)

systemctl mask 是注销服务的意思。
注销服务意味着:
该服务在系统重启的时候不会启动
该服务无法进行做systemctl start/stop操作
该服务无法进行systemctl enable/disable操作

systemctl mask firewalld
取消注销服务(service) systemctl unmask firewalld
显示单元的手册页(前提是由unit提供) systemctl help
重新载入整个systemd的系统配置并扫描unit文件的变动 systemctl daemon-reload
systemctl管理target

target是一个box(盒子),装了很多service(服务),可以理解为一组service(服务).
tartget是由服务组成的一类启动目标,systemd可以设置启动目标.
如果systemd指定了一个target作为启动目标,那么下次启动的时候就会启动target里面的所有服务.


multi-user.target–文本界面的Linux系统

tty0 和 tty1 默认是图形界面,临时切换文本界面后,tty0和tty1变成文本界面了


将图形界面临时切换到文本界面 systemctl isolate multi-user.target# 需要等待几分钟
graphical.target–图形化界面的Linux系统
将文本界面临时切换到图形化界面 systemctl isolate graphical.target# 需要等待几分钟
查看下次下次启动时加载的默认target systemctl get-default
永久设置下次启动时加载的默认target # 永久设置图形化界面启动systemctl set-default graphical.target# 永久设置文本界面启动systemctl set-default multi-user.target
loginctl

systemd登录控制管理器


查看当前用户是否拥有执行systemd的权限 # 查看当前用户是否允许执行systemd[cesu-c8 devops ~]$ loginctlSESSION UID USER SEAT TTY 9 0 root # 查看哪些用户可以执行systemd[cesu-c8 devops ~]$ loginctl list-users UID USER 0 root 1001 devops2 users listed.
查看当前用户的systemd配置信息 [cesu-c8 devops ~]$ loginctl show-user
查看用户的systemd的权限 [cesu-c8 devops ~]$ loginctl user-status devops devops (1001) Since: Tue 2021-11-02 19:58:07 CST; 1h 37min ago State: active Sessions: *7
开启用户的systemd权限

如果用户没有systemd权限,需要执行这个命令开启systemd权限,
否则做的systemd操作是不会生效的

loginctl enable-linger
以普通用户执行systemd # 创建普通用户的systemd目录来存放service文件mkdir ~/.config/systemd/user -p# 将service文件拷贝到~/.config/systemd/user目录# 普通用户执行systemd重新加载systemd配置systemctl --user daemon-reload# 普通用户设置service文件开机自启systemctl --user enable --now 文件名.service

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。