分类目录归档:Linux

systemd 配置目录介绍

systemd 配置目录详解

主要配置目录

1. /etc/systemd/system/ (用户自定义配置)

  • 用途: 存放用户和系统管理员创建的服务单元
  • 优先级: 最高(会覆盖 /usr/lib/systemd/system/ 中的同名文件)
  • 典型应用:
    • 自定义服务配置
    • 服务覆盖配置(override)
    • 服务的符号链接
# 查看目录内容示例
ls -la /etc/systemd/system/

2. /usr/lib/systemd/system/ (系统默认配置)

  • 用途: 软件包安装时提供的默认服务单元文件
  • 管理方式: 由包管理器(apt/yum/dnf)维护
  • 注意: 不应直接修改此目录的文件
# 查看已安装服务的默认配置
ls -la /usr/lib/systemd/system/

3. /run/systemd/system/ (运行时配置)

  • 用途: 运行时动态生成的单元文件
  • 特点: 系统重启后内容会丢失
  • 优先级: 高于 /etc/systemd/system/

配置文件类型

服务单元(.service

定义系统服务的行为:

[Unit]
Description=My Application Service
After=network.target

[Service]
Type=simple
User=www-data
ExecStart=/usr/bin/php /var/www/html/artisan queue:work
Restart=always

[Install]
WantedBy=multi-user.target

路径监控单元(.path

监控文件或目录变化:

[Unit]
Description=Watch config file changes

[Path]
PathChanged=/var/www/html/config.php
Unit=myapp.service

[Install]
WantedBy=multi-user.target

定时器单元(.timer

定时任务(类似 cron):

[Unit]
Description=Run backup daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

目标单元(.target

分组管理服务(类似运行级别):

  • multi-user.target – 多用户文本模式
  • graphical.target – 图形界面模式
  • network.target – 网络就绪

常用管理命令

# 重载 systemd 配置(修改配置后必须执行)
sudo systemctl daemon-reload

# 启用服务(开机启动)
sudo systemctl enable myapp.service

# 启动服务
sudo systemctl start myapp.service

# 停止服务
sudo systemctl stop myapp.service

# 重启服务
sudo systemctl restart myapp.service

# 查看服务状态
sudo systemctl status myapp.service

# 查看服务日志
sudo journalctl -u myapp.service -f

# 禁用服务
sudo systemctl disable myapp.service

# 列出所有失败的服务
sudo systemctl --failed

# 查看服务依赖关系
systemctl list-dependencies myapp.service

# 查看启用的所有服务
systemctl list-unit-files --type=service --state=enabled

配置优先级顺序

/run/systemd/system/     (最高优先级)
    ↓
/etc/systemd/system/     (用户配置,推荐修改此处)
    ↓
/usr/lib/systemd/system/ (最低优先级,软件包默认配置)

实际应用场景

场景 1:创建自定义服务

# 1. 创建服务文件
sudo vim /etc/systemd/system/myapp.service

# 2. 重载配置
sudo systemctl daemon-reload

# 3. 启用并启动服务
sudo systemctl enable --now myapp.service

场景 2:覆盖现有服务配置

# 创建覆盖配置(不修改原文件)
sudo systemctl edit nginx

# 这会在 /etc/systemd/system/nginx.service.d/override.conf
# 添加自定义配置片段

场景 3:调试服务配置

# 测试服务配置是否正确
systemd-analyze verify /etc/systemd/system/myapp.service

# 查看服务启动时间分析
systemd-analyze blame

结合您的 WordPress 项目

基于您的项目结构,如果要为 WordPress 或相关服务创建 systemd 配置:

示例:WordPress Cron 服务

# /etc/systemd/system/wp-cron.service
[Unit]
Description=WordPress Cron Handler
After=network.target mysql.service

[Service]
Type=oneshot
User=www-data
WorkingDirectory=/var/www/html
ExecStart=/usr/bin/php wp-cron.php

[Install]
WantedBy=multi-user.target

示例:监控配置文件变化

# /etc/systemd/system/wp-config-monitor.path
[Unit]
Description=Monitor wp-config.php changes

[Path]
PathChanged=/var/www/html/wp-config.php
Unit=php-fpm.service

[Install]
WantedBy=multi-user.target

需要我帮您创建具体的 systemd 配置文件吗?

.sql.gz 直接解压导入MySQL,不创建临时sql文件

可以通过管道命令实现不生成临时文件的直接导入,具体操作如下:

  1. Linux/macOS系统
    使用gzip解压管道配合mysql命令:
   zcat 文件名.sql.gz | mysql -u用户名 -p 数据库名

或使用gunzip命令:

   gunzip -c 文件名.sql.gz | mysql -u用户名 -p 数据库名

执行后会提示输入密码,输入正确密码即可开始导入。

  1. Windows系统
    需安装gzip工具(如7-Zip或Git Bash),然后执行:
   gzip -dc 文件名.sql.gz | mysql -u用户名 -p 数据库名

若使用PowerShell:

   Get-Content 文件名.sql.gz | gunzip | mysql -u用户名 -p 数据库名

注意需提前配置好MySQL环境变量。

  1. 注意事项
  • 确保.gz文件完整且未损坏。
  • 大文件导入时建议添加--max_allowed_packet参数调整包大小:
    bash zcat 大文件.sql.gz | mysql -u用户名 -p --max_allowed_packet=512M 数据库名
  • 若需指定字符集,可在命令中添加--default-character-set=utf8mb4

引用链接:
1.Horain云–搭建邮件服务器 – HoRain云小助手
2.mysql怎么导入sql.gz文件 – ZOL问答
3.windows mysql 怎么导入gz文件 – 51CTO博客
4.如何将sql文件导入mysql – 腾讯云
5.将.sql文件导入到MySQL数据库具体步骤 – 脚本之家
6.MySQL数据库中直接导入sql文件操作方法 – CSDN博客
7.mysql导入sql.g z文件,sqlite迁移mysql(导入导出数据)-CSDN博客 – CSDN博客
8.快速轻松地将SQL文件导入MySQL数据库:一步步指南 – 腾讯云
9.使用php 将 .sql.gz 文件导入 mysql – 慕课网
10.mysql gz 文件导入 mysql导入文件命令_mob6454cc7945bd的技术博客_51CTO博客 – 51CTO博客
11.MySQL客户端命令一节将.sql文件导入MySQL – CSDN博客
12.如何将外部.sql文件导入到本地mysql数据库中,命令窗口实现 – CSDN博客
13.mysql 导入gz – 51CTO博客
14.Linux MySQL实用技巧:SQL文件导入解决方案 (linux mysql如何导入sql文件) – 树叶云
15.如何把sql文件导入mysql – PHP中文网
16.怎样把一个 sql 的文件导入 mysql 数据库中? – 乱指琴魔舞
17.SQL文件导入MySQL数据库的详细指南 – 阿里云开发者社区
18.mysql怎么导入sql文件-mysql导入sql文件的方法 – 华军软件园
19.MySQL gz文件备份导入多个数据库 – 51CTO博客
20.sql文件如何导入到mysql – php中文网
21.mysql怎么导入sql文件?3种方法快速实现 – 思至创研
22.sql文件怎么导入mysql – php中文网
23.mysql怎么导入sql文件,提供三种方式,总有一种适合你! – 十宴
24.MySQL数据库的导入方法 – 博客园
25.如何将sql文件导入mysql数据库 – php中文网
26.如何导入导出MySQL数据库—-*.sql文件操作 – 博客园
27.sql文件如何导入到mysql数据库 – 腾讯云
28.将sql文件导入mysql—sql文件导入mysql – 树叶云
29.MySQL中怎么导入SQL文件? – 网联职教先锋

Linux普通分区挂载

在Linux中挂载新硬盘是一个常见的操作,可以让你的系统识别并使用这个硬盘。下面是一步步指导如何挂载新硬盘:

  1. 查找新硬盘

首先,你需要找到新硬盘的标识。可以使用lsblk或fdisk -l命令来查看所有可用的存储设备。

lsblk

或者

sudo fdisk -l

这些命令会列出所有存储设备,包括分区和未分区的硬盘。注意新硬盘的名称,比如/dev/sdb。

  1. 创建分区(如果需要)

如果你还没有为硬盘创建分区,你需要先创建一个。使用fdisk或gparted工具来创建分区。这里以fdisk为例:

sudo fdisk /dev/sdb

在fdisk提示符下,输入n来创建一个新分区,然后按照提示操作(选择分区类型、分区大小等)。创建分区后,输入w保存更改并退出。

  1. 格式化分区(如果需要)

如果你需要给这个分区一个文件系统,可以使用mkfs命令。例如,如果你想创建一个ext4文件系统:

sudo mkfs.ext4 /dev/sdb1

  1. 创建挂载点

选择一个目录作为挂载点。例如,你可以创建一个名为/mnt/newdisk的目录:

sudo mkdir /mnt/newdisk

  1. 挂载硬盘

使用mount命令将新硬盘挂载到刚才创建的挂载点:

sudo mount /dev/sdb1 /mnt/newdisk

  1. 验证挂载

使用df -h或查看挂载点内容来验证硬盘是否成功挂载:

df -h

或者

ls /mnt/newdisk

  1. 持久化挂载(可选)

如果你希望在每次重启后自动挂载硬盘,你可以编辑/etc/fstab文件:

sudo nano /etc/fstab

在文件的末尾添加一行,指定挂载信息,例如:

/dev/sdb1 /mnt/newdisk ext4 defaults 0 0

保存并关闭文件。之后,每次启动系统时,系统会自动挂载这个硬盘。

  1. 使用UUID而非设备名(推荐)

为了防止设备名称改变导致挂载失败,最好使用UUID而不是设备名。首先,查找UUID:

sudo blkid /dev/sdb1

注意输出的UUID值。然后编辑/etc/fstab,使用UUID代替设备名:

UUID=your-uuid-here /mnt/newdisk ext4 defaults 0 0

这样即使硬盘设备名改变,系统也能正确挂载。

sed

sed 是一种流编辑器,用于对输入流(文件或管道)进行基本的文本转换。它是 Unix/Linux 系统下的一个非常强大的文本处理工具。以下是 sed 的一些常见用法:

  • 替换文本
  sed 's/旧字符串/新字符串/' 文件名

这会将文件中的第一个匹配到的“旧字符串”替换为“新字符串”。

  • 替换所有匹配项
  sed 's/旧字符串/新字符串/g' 文件名

这会将文件中所有匹配到的“旧字符串”替换为“新字符串”。

  • 在特定行替换
  sed '2s/旧字符串/新字符串/' 文件名

这只会替换第 2 行中的第一个匹配项。

  • 删除行
  sed '2d' 文件名

这会删除第 2 行。

  • 打印特定行
  sed -n '2p' 文件名

这只会打印第 2 行。

  • 保存更改到文件
  sed -i 's/旧字符串/新字符串/g' 文件名

这会直接修改原文件内容。

如果你有具体的 sed 使用场景或问题,请提供更多信息,我可以给出更详细的帮助。

Linux swap使用率为0

Linux 中 Swap 交换分区设置教程,以及 Swap 大小与内存的关系 – 知乎

系统配置:Linux有一个swappiness参数,决定了系统使用swap的频率。默认值通常为60,值越低,越不容易使用swap。可以通过以下命令查看当前值:

cat /proc/sys/vm/swappiness

如果你希望系统更倾向于使用swap,可以将其设置为一个更高的值,例如:

sudo sysctl vm.swappiness=80
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/sunyuhua_keyboard/article/details/14248714

nginx restart failed:nginx: [alert] OPENSSL_init_ssl() failed (SSL: error:12800067:DSO support routines::could not load the shared library:filename(/snap/certbot/4325/usr/lib/x86_64-linux-gnu/ossl-modules/fips.so): /snap/certbot/4325/usr/lib/x86_64-linux-gnu/ossl-modules/fips.so: cannot open shared object file: No such file or directory error:12800067:DSO support routines::could not load the shared library error:07880025:common libcrypto routines::reason(37):name=fips error:0700006D:configuration file routines::module initialization error:module=providers, value=provider_sect retcode=-1 ) 解决办法

nginx restart failed:
nginx: [alert] OPENSSL_init_ssl() failed (SSL: error:12800067:DSO support routines::could not load the shared library:filename(/snap/certbot/4325/usr/lib/x86_64-linux-gnu/ossl-modules/fips.so): /snap/certbot/4325/usr/lib/x86_64-linux-gnu/ossl-modules/fips.so: cannot open shared object file: No such file or directory error:12800067:DSO support routines::could not load the shared library error:07880025:common libcrypto routines::reason(37):name=fips error:0700006D:configuration file routines::module initialization error:module=providers, value=provider_sect retcode=-1 )

解决办法:

nginx restart failed:
nginx: [alert] OPENSSL_init_ssl() failed (SSL: error:12800067:DSO support routines::could not load the shared library:filename(/snap/certbot/4325/usr/lib/x86_64-linux-gnu/ossl-modules/fips.so): /snap/certbot/4325/usr/lib/x86_64-linux-gnu/ossl-modules/fips.so: cannot open shared object file: No such file or directory error:12800067:DSO support routines::could not load the shared library error:07880025:common libcrypto routines::reason(37):name=fips error:0700006D:configuration file routines::module initialization error:module=providers, value=provider_sect retcode=-1      )

Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
[root@ooops ~]# find / -name fips.so
/usr/lib64/ossl-modules/fips.so
[root@ooops ~]# mount --bind /usr/lib64/ossl-modules/ /snap/certbot/4325/usr/lib/x86_64-linux-gnu/ossl-modules/

4325注意替换为你的id