linux 启动文件目录 /usr/lib/systemd/system 简介

文章介绍了systemd的服务管理和mysqld.service文件的详细内容,包括服务的启动、停止以及服务文件中如ExecStart、After等关键配置项的作用,强调了/etc/systemd/system/目录下自定义服务文件的重要性。

systemd有系统和用户区分:
系统(/usr/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 服务文件简介》https://blog.youkuaiyun.com/whatday/article/details/129728334

### 脚本文件和脚本配置文件存放位置 - **脚本文件** - **`/usr/local/bin`**:用于存放用户自定义的可执行脚本,可被系统中所有用户使用。例如将自定义脚本 `myscript.sh` 复制到该目录后,可在终端直接输入脚本名执行。 ```bash cp myscript.sh /usr/local/bin ``` - **`/usr/bin`**:系统级别的可执行文件和脚本存放于此,由系统自带或通过软件包管理器安装,供所有用户使用。 - **`/bin`**:包含系统启动和运行必需的基本命令和脚本,是系统最基础的组成部分。 - **`/root/bin`**:root 用户自定义的脚本通常存放在此,只有 root 用户可访问和使用。 - **脚本配置文件** - **`/etc`**:系统全局配置文件的主要存放目录,许多服务和应用程序的配置文件都在此。如 `/etc/httpd` 是 Apache HTTP 服务器的配置文件目录,`/etc/nginx` 是 Nginx 服务器的配置文件目录。 ```bash ls /etc/httpd ``` - **`~/.config`**:用户级别的配置文件通常存放在这里,每个用户有独立的配置文件,不影响其他用户。一些桌面应用程序的配置文件会存放在此目录。 - **`/var/lib`**:一些应用程序会将运行时需要的配置数据存放在该目录,这些数据可能随应用程序运行而变化。 ### `/usr/lib/systemd/system/目录和/usr/lib/systemd目录介绍` - **`/usr/lib/systemd`**:CentOS 7 的服务 `systemctl` 脚本存放在此目录,有系统 `system` 和用户 `user` 之分,即 `/usr/lib/systemd/system` 和 `/usr/lib/systemd/user` [^1]。 - **`/usr/lib/systemd/system`**:存放真正的系统服务 Unit 配置文件Systemd 默认从 `/etc/systemd/system/` 读取配置文件,但该目录里大部分文件是符号链接,指向 `/usr/lib/systemd/system/`。`systemctl enable` 命令用于在这两个目录之间建立符号链接关系 [^2][^3]。例如: ```bash sudo systemctl enable clamd@scan.service # 等同于 sudo ln -s '/usr/lib/systemd/system/clamd@scan.service' '/etc/systemd/system/multi-user.target.wants/clamd@scan.service' ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值