linux文件目录:/usr/lib/systemd/system目录作用

本文介绍Systemd在Linux系统中的角色,特别是如何通过systemctl命令管理MySQL服务。文章详细解释了系统和服务单元文件的位置,以及如何使用systemd进行服务的状态查询、启动和停止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

systemd有系统和用户区分:
系统(/user/lib/systemd/system/)
用户(/etc/lib/systemd/user/)
一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

/usr/lib/systemd/system目录自动存放启动文件的配置位置,里面一般包含有XXXXX.service
 当我们利用systemctl查看服务状态时,如下:

[admin@localhost system]$ systemctl status mysqld
● mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-05-17 13:45:54 CST; 7 months 20 days ago
  Process: 4441 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 4425 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 4440 (mysqld_safe)
   Memory: 6.6G
   CGroup: /system.slice/mysqld.service
           ├─4440 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─4702 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysq...

如上出现的/usr/lib/systemd/system/mysqld.service,其实我们用systemctl命令操作mysqld服务其实就是操作mysql.service文件,其实上面命令中的mysqld也可以用mysqld.service,调用该文件即可启动该服务

mysqld.service文件内容:

[admin@localhost system]$ cat mysqld.service
#
# Simple MySQL systemd service file
#
# systemd supports lots of fancy features, look here (and linked docs) for a full list: 
#   http://www.freedesktop.org/software/systemd/man/systemd.exec.html
#
# Note: this file ( /usr/lib/systemd/system/mysql.service )
# will be overwritten on package upgrade, please copy the file to 
#
#  /etc/systemd/system/mysql.service 
#  
# to make needed changes.
# 
# systemd-delta can be used to check differences between the two mysql.service files.
#

[Unit]
Description=MySQL Community Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=mysql.service

[Service]
User=mysql
Group=mysql

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Needed to create system tables etc.
ExecStartPre=/usr/bin/mysql-systemd-start pre

# Start main service
ExecStart=/usr/bin/mysqld_safe --basedir=/usr

# Don't signal startup success before a ping works
ExecStartPost=/usr/bin/mysql-systemd-start post

# Give up if ping don't get an answer
TimeoutSec=600

Restart=always
PrivateTmp=false

具体可参考:
《Linux中systemd的service文件说明》

### etcd 的 systemd 服务文件配置 为了在 `etcd` 中正确配置 `/usr/lib/systemd/system/etcd.service` 文件,可以遵循以下指导: #### 创建或修改服务单元文件 如果要自定义 `etcd` 服务,在 `/etc/systemd/system` 目录下创建或修改相应的服务单元文件是一个推荐的做法。这可以通过复制默认的服务文件并对其进行调整来实现[^2]。 ```bash sudo cp /usr/lib/systemd/system/etcd.service /etc/systemd/system/etcd.service sudo nano /etc/systemd/system/etcd.service ``` #### 编辑服务文件注意事项 当编辑位于 `/usr/lib/systemd/system/` 下的任何 `.service` 文件时,可能会遇到交换文件存在的问题。为了避免这种情况,建议先移除已有的交换文件再进行编辑操作[^3]。 对于因配置错误而导致服务无法启动的情况,务必仔细核对 `/usr/lib/systemd/system/sshd.service` 类似的配置项,确保其格式无误,并参照官方文档或其他正常工作的实例来进行修正[^4]。 针对 `etcd`, 具体的内容应该包括但不限于以下几个部分: - **Unit Section**: 描述该 unit 的基本信息及其与其他 units 的依赖关系。 - **Service Section**: 定义了如何启动、停止以及重启此 service;还指定了执行这些动作所需的命令路径等细节。 - **Install Section**: 控制着这个 service 是否会在某些 targets (比如 multi-user.target 或 graphical.target) 启动时自动激活。 一个典型的 `etcd.service` 文件可能如下所示: ```ini [Unit] Description=Etcd Server Documentation=https://github.com/coreos/etcd After=network-online.target Wants=network-online.target [Service] Type=notify EnvironmentFile=-/etc/default/%n ExecStart=/usr/local/bin/etcd \ --name ${ETCD_NAME} \ --data-dir=${ETCD_DATA_DIR} \ --initial-advertise-peer-urls http://${PRIVATE_IP}:2380 \ --listen-peer-urls http://0.0.0.0:2380 \ --advertise-client-urls http://${PRIVATE_IP}:2379 \ --listen-client-urls http://0.0.0.0:2379 \ --initial-cluster-token etcd-cluster-1 \ --initial-cluster ${INITIAL_CLUSTER} \ --initial-cluster-state new \ --quota-backend-bytes 8589934592 Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target ``` 完成上述更改之后,记得重新加载 systemd 并启用新设置好的服务以便应用最新的改动。 ```bash $ sudo systemctl daemon-reload $ sudo systemctl enable etcd.service ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值