250827-ubuntu20.04-跳过磁盘检查-硬盘启动禁用检查-Ubuntu initramfs 文件错误

在 Ubuntu 系统中,磁盘检查(fsck)通常在启动时自动运行,以确保文件系统的完整性。如果你希望取消或调整磁盘检查的行为,可以通过以下几种方法来实现:

1. 修改 /etc/fstab 文件

/etc/fstab 文件定义了文件系统的挂载选项,包括是否在启动时进行磁盘检查。你可以通过修改这个文件来取消磁盘检查。

  1. 打开 /etc/fstab 文件

    1
    sudo vim /etc/fstab
  2. 找到需要修改的文件系统条目: 每一行代表一个文件系统条目,通常包含以下字段:

    1
    <file system> <mount point>   <type>  <options>       <dump>  <pass>

其中 `` 字段(第六个字段)定义了启动时是否进行磁盘检查:

  • 0:不进行磁盘检查。
  • 1:在启动时进行磁盘检查(通常用于根文件系统)。
  • 2:在启动时进行磁盘检查(通常用于其他文件系统)。
  1. **将 字段设置为 `0`**: 将需要取消磁盘检查的文件系统条目的 字段设置为 0。例如:

    1
    UUID=your-uuid /               ext4    errors=remount-ro 0       0
  2. 保存并退出: 保存文件并退出编辑器。

![1756387237402](250827-etc-fstab-ubuntu20-04-跳过磁盘检查-硬盘启动禁用检查-Ubuntu initramfs 文件错误.assets/1756387237402.png)

250827-视频流播放Video-使用 FFmpeg 将视频转码为 H.264 编码格式

使用 FFmpeg 将视频转码为 H.264 编码格式

1
2
3
4
sudo apt-get -y install chromium-codecs-ffmpeg
sudo apt install -y ffmpeg

ffmpeg -i 1.mp4 -vcodec h264 output.mp4

ffmpeg 命令,压缩的参数可以设置

1
2
3
4
5
6
7
8
9
10
11
压缩参数示例
ffmpeg -i 1.mp4 -vcodec h264 -preset veryslow -crf 24 -b:v 500k -acodec aac -b:a 128k -r 15 output1.mp4

这个命令会:

- 使用 H.264 编码器。
- 设置编码预设为 `veryslow` 以获得更好的压缩效果。
- 设置恒定质量因子为 24。
- 设置视频比特率为 500 kbps。
- 使用 AAC 编码音频,音频比特率为 128 kbps。
- 设置帧率为 15 fps。

当然有!在使用 FFmpeg 转码视频时,可以通过设置一些参数来控制视频的压缩程度,从而减小文件大小。以下是一些常用的压缩参数:

1. 控制比特率(-b:v

比特率是控制视频质量的重要参数。较低的比特率会导致文件更小,但可能会牺牲一些质量。

1
ffmpeg -i 1.mp4 -vcodec h264 -b:v 500k output.mp4
  • -b:v:设置视频的比特率。
  • 500k:表示比特率为 500 kbps。

2. 使用两遍编码(-preset-crf

两遍编码可以更好地优化视频质量,同时减小文件大小。

1
ffmpeg -i 1.mp4 -vcodec h264 -preset veryslow -crf 24 output.mp4
  • -preset:设置编码速度和压缩效率。选项包括 ultrafastsuperfastveryfastfasterfastmedium(默认)、slow
    slowerveryslowveryslow 提供最佳压缩效果,但编码速度最慢。
  • -crf:设置恒定质量因子。范围是 0 到 51,其中 0 是无损,23 是默认值,51 是最差质量。通常推荐的范围是 18 到 28,18 是视觉上无损的,28
    是最低质量。

3. 控制音频比特率(-b:a

音频比特率也会影响文件大小。

1
ffmpeg -i 1.mp4 -vcodec h264 -b:v 500k -acodec aac -b:a 128k output.mp4
  • -acodec aac:指定音频编码器为 AAC。
  • -b:a 128k:设置音频比特率为 128 kbps。

4. 调整分辨率(-s-vf scale

降低视频分辨率可以显著减小文件大小。

1
ffmpeg -i 1.mp4 -vcodec h264 -s 640x360 output.mp4

或者使用更灵活的 scale 滤镜:

1
ffmpeg -i 1.mp4 -vcodec h264 -vf scale=640:360 output.mp4
  • -s 640x360:设置视频分辨率为 640x360。
  • -vf scale=640:360:使用 scale 滤镜调整视频分辨率。

5. 帧率(-r

降低帧率也可以减小文件大小。

1
ffmpeg -i 1.mp4 -vcodec h264 -r 15 output.mp4
  • -r 15:设置帧率为 15 fps。

6. 去除音频(-an

如果不需要音频,可以去除音频轨道,进一步减小文件大小。

1
ffmpeg -i 1.mp4 -vcodec h264 -an output.mp4
  • -an:去除音频。

综合示例

以下是一个综合示例,使用了多种参数来压缩视频:

1
ffmpeg -i 1.mp4 -vcodec h264 -preset veryslow -crf 24 -b:v 500k -acodec aac -b:a 128k -vf scale=640:360 -r 15 output1.mp4

这个命令会:

  • 使用 H.264 编码器。
  • 设置编码预设为 veryslow 以获得更好的压缩效果。
  • 设置恒定质量因子为 24。
  • 设置视频比特率为 500 kbps。
  • 使用 AAC 编码音频,音频比特率为 128 kbps。
  • 将视频分辨率调整为 640x360。
  • 设置帧率为 15 fps。

通过调整这些参数,你可以根据需要平衡视频质量和文件大小。

250823-(Permission denied)SELinux和AppArmor是Linux系统中的安全模块,它们可以限制文件的执行权限,即使你以root用户身份运行

SELinux和AppArmor是Linux系统中的安全模块,它们可以限制文件的执行权限,即使你以root用户身份运行

1
setenforce 0 # 临时解决

以下是一些解决SELinux或AppArmor限制root用户执行权限的方法:

SELinux

  • 临时关闭SELinux:可以使用setenforce 0
    命令临时将SELinux设置为宽容模式(Permissive),这样可以测试是否是SELinux导致的权限问题。如果关闭SELinux后问题解决,说明是SELinux策略限制了执行。
  • 查看SELinux状态:使用命令查看SELinux的当前状态。
  • 调整SELinux策略:如果需要长期解决,可以修改SELinux策略,允许特定文件或服务的执行。这需要一定的SELinux知识,可以通过工具来生成允许执行的策略。

AppArmor

  • 查看AppArmor状态:使用命令查看AppArmor是否启用。
  • 禁用AppArmor限制:对于AppArmor,可以使用aa-disable /path/to/your/script命令禁用对特定文件的限制。
  • 调整AppArmor配置:如果需要更细致的控制,可以编辑AppArmor的配置文件,位于目录下。根据需要修改配置文件,然后使用命令重新加载配置。

注意事项

  • 安全性:禁用SELinux或AppArmor会降低系统的安全性,因此只应在确定需要时进行,并且了解其潜在风险。
  • 长期解决方案:如果临时关闭SELinux或AppArmor后问题解决,建议不要长期保持关闭状态,而是应该修改相应的安全策略,以允许合法的执行,同时保持系统的安全性。

通过上述方法,你可以解决SELinux或AppArmor限制root用户执行权限的问题。如果问题仍然存在,可能需要进一步检查系统的其他配置或日志文件以获取更多信息。

yum-localinstall-使用 yum 的 localinstall 选项-本地安装rpm

使用 yumlocalinstall 选项

如果你不想手动列出所有依赖项,可以使用 yumlocalinstall 选项,它会自动解析并安装所需的依赖项:

1
yum localinstall -y wgcloud-client-1.0.0-1.x86_64.rpm

这个命令会自动下载并安装所有缺失的依赖项,然后安装 wgcloud-client

yum localinstall -y wgcloud-client-1.0.0-1.x86_64.rpm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
yum localinstall -y wgcloud-client-1.0.0-1.x86_64.rpm
Last metadata expiration check: 0:25:58 ago on Wed Aug 20 15:13:53 2025.
Dependencies resolved.
=================================================================================================================================================
Package Architecture Version Repository Size
=================================================================================================================================================
Installing:
wgcloud-client x86_64 1.0.0-1 @commandline 164 M
Installing dependencies:
alsa-lib x86_64 1.2.13-2.el9 appstream 506 k
cairo x86_64 1.17.4-7.el9 appstream 659 k
cairo-gobject x86_64 1.17.4-7.el9 appstream 18 k
dejavu-sans-fonts noarch 2.37-18.el9 baseos 1.3 M
fontconfig x86_64 2.14.0-2.el9_1 appstream 274 k
fonts-filesystem noarch 1:2.0.5-7.el9.1 baseos 9.0 k
fribidi x86_64 1.0.10-6.el9.2 appstream 84 k
gdk-pixbuf2 x86_64 2.42.6-6.el9_6 appstream 465 k
langpacks-core-font-en noarch 3.0-16.el9 appstream 9.5 k
libX11 x86_64 1.7.0-11.el9 appstream 645 k
libX11-common noarch 1.7.0-11.el9 appstream 151 k
libX11-xcb x86_64 1.7.0-11.el9 appstream 10 k
libXau x86_64 1.0.9-8.el9 appstream 30 k
libXext x86_64 1.3.4-8.el9 appstream 39 k
libXfixes x86_64 5.0.3-16.el9 appstream 19 k
libXft x86_64 2.3.3-8.el9 appstream 61 k
libXi x86_64 1.7.10-8.el9 appstream 39 k
libXrender x86_64 0.9.10-16.el9 appstream 27 k
libXtst x86_64 1.2.3-16.el9 appstream 20 k
libXxf86vm x86_64 1.1.4-18.el9 appstream 18 k
libdatrie x86_64 0.2.13-4.el9 appstream 32 k
libglvnd x86_64 1:1.3.4-1.el9 appstream 133 k
libglvnd-glx x86_64 1:1.3.4-1.el9 appstream 140 k
libjpeg-turbo x86_64 2.0.90-7.el9 appstream 174 k
libthai x86_64 0.1.28-8.el9 appstream 208 k
libwayland-server x86_64 1.21.0-1.el9 appstream 41 k
libxcb x86_64 1.13.1-9.el9 appstream 224 k
libxshmfence x86_64 1.3-10.el9 appstream 12 k
llvm-libs x86_64 19.1.7-1.el9 appstream 57 M
mesa-dri-drivers x86_64 24.2.8-2.el9_6 appstream 9.4 M
mesa-filesystem x86_64 24.2.8-2.el9_6 appstream 11 k
mesa-libGL x86_64 24.2.8-2.el9_6 appstream 169 k
mesa-libgbm x86_64 24.2.8-2.el9_6 appstream 36 k
mesa-libglapi x86_64 24.2.8-2.el9_6 appstream 44 k
pango x86_64 1.48.7-3.el9 appstream 297 k
pixman x86_64 0.40.0-6.el9_3 appstream 269 k
xml-common noarch 0.6.3-58.el9 appstream 31 k

Transaction Summary
=================================================================================================================================================
Install 38 Packages

Total size: 236 M
Total download size: 57 M
Installed size: 607 M
Downloading Packages:
[SKIPPED] dejavu-sans-fonts-2.37-18.el9.noarch.rpm: Already downloaded
[SKIPPED] fonts-filesystem-2.0.5-7.el9.1.noarch.rpm: Already downloaded
[SKIPPED] libXxf86vm-1.1.4-18.el9.x86_64.rpm: Already downloaded
[SKIPPED] libthai-0.1.28-8.el9.x86_64.rpm: Already downloaded
[SKIPPED] libglvnd-1.3.4-1.el9.x86_64.rpm: Already downloaded
[SKIPPED] libXrender-0.9.10-16.el9.x86_64.rpm: Already downloaded
[SKIPPED] libX11-common-1.7.0-11.el9.noarch.rpm: Already downloaded
[SKIPPED] libXau-1.0.9-8.el9.x86_64.rpm: Already downloaded
[SKIPPED] mesa-libGL-24.2.8-2.el9_6.x86_64.rpm: Already downloaded
[SKIPPED] mesa-libglapi-24.2.8-2.el9_6.x86_64.rpm: Already downloaded
[SKIPPED] cairo-gobject-1.17.4-7.el9.x86_64.rpm: Already downloaded
[SKIPPED] gdk-pixbuf2-2.42.6-6.el9_6.x86_64.rpm: Already downloaded
[SKIPPED] libXext-1.3.4-8.el9.x86_64.rpm: Already downloaded
[SKIPPED] xml-common-0.6.3-58.el9.noarch.rpm: Already downloaded
[SKIPPED] libxshmfence-1.3-10.el9.x86_64.rpm: Already downloaded
[SKIPPED] langpacks-core-font-en-3.0-16.el9.noarch.rpm: Already downloaded
[SKIPPED] libX11-xcb-1.7.0-11.el9.x86_64.rpm: Already downloaded
[SKIPPED] mesa-libgbm-24.2.8-2.el9_6.x86_64.rpm: Already downloaded
[SKIPPED] libglvnd-glx-1.3.4-1.el9.x86_64.rpm: Already downloaded
[SKIPPED] libxcb-1.13.1-9.el9.x86_64.rpm: Already downloaded
[SKIPPED] libXft-2.3.3-8.el9.x86_64.rpm: Already downloaded
[SKIPPED] libdatrie-0.2.13-4.el9.x86_64.rpm: Already downloaded
[SKIPPED] libXtst-1.2.3-16.el9.x86_64.rpm: Already downloaded
[SKIPPED] alsa-lib-1.2.13-2.el9.x86_64.rpm: Already downloaded
[SKIPPED] pango-1.48.7-3.el9.x86_64.rpm: Already downloaded
[SKIPPED] cairo-1.17.4-7.el9.x86_64.rpm: Already downloaded
[SKIPPED] libXfixes-5.0.3-16.el9.x86_64.rpm: Already downloaded
[SKIPPED] fontconfig-2.14.0-2.el9_1.x86_64.rpm: Already downloaded
[SKIPPED] mesa-filesystem-24.2.8-2.el9_6.x86_64.rpm: Already downloaded
[SKIPPED] fribidi-1.0.10-6.el9.2.x86_64.rpm: Already downloaded
[SKIPPED] libwayland-server-1.21.0-1.el9.x86_64.rpm: Already downloaded
[SKIPPED] mesa-dri-drivers-24.2.8-2.el9_6.x86_64.rpm: Already downloaded
[SKIPPED] pixman-0.40.0-6.el9_3.x86_64.rpm: Already downloaded
[SKIPPED] libXi-1.7.10-8.el9.x86_64.rpm: Already downloaded
[SKIPPED] libjpeg-turbo-2.0.90-7.el9.x86_64.rpm: Already downloaded
[SKIPPED] libX11-1.7.0-11.el9.x86_64.rpm: Already downloaded
(37/37): llvm-libs-19.1.7-1.el9.x86_64.rpm 3.8 MB/s | 57 MB 00:15
-------------------------------------------------------------------------------------------------------------------------------------------------
Total 3.6 MB/s | 57 MB 00:15
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : pixman-0.40.0-6.el9_3.x86_64 1/38
Installing : libjpeg-turbo-2.0.90-7.el9.x86_64 2/38
Installing : fribidi-1.0.10-6.el9.2.x86_64 3/38
Installing : libdatrie-0.2.13-4.el9.x86_64 4/38
Installing : libthai-0.1.28-8.el9.x86_64 5/38
Installing : libX11-xcb-1.7.0-11.el9.x86_64 6/38
Installing : libxshmfence-1.3-10.el9.x86_64 7/38
Installing : libXau-1.0.9-8.el9.x86_64 8/38
Installing : libxcb-1.13.1-9.el9.x86_64 9/38
Installing : libglvnd-1:1.3.4-1.el9.x86_64 10/38
Installing : fonts-filesystem-1:2.0.5-7.el9.1.noarch 11/38
Installing : dejavu-sans-fonts-2.37-18.el9.noarch 12/38
Installing : langpacks-core-font-en-3.0-16.el9.noarch 13/38
Installing : gdk-pixbuf2-2.42.6-6.el9_6.x86_64 14/38
Installing : libwayland-server-1.21.0-1.el9.x86_64 15/38
Installing : mesa-filesystem-24.2.8-2.el9_6.x86_64 16/38
Installing : alsa-lib-1.2.13-2.el9.x86_64 17/38
Installing : llvm-libs-19.1.7-1.el9.x86_64 18/38
Installing : mesa-libglapi-24.2.8-2.el9_6.x86_64 19/38
Installing : mesa-libgbm-24.2.8-2.el9_6.x86_64 20/38
Installing : mesa-dri-drivers-24.2.8-2.el9_6.x86_64 21/38
Running scriptlet: xml-common-0.6.3-58.el9.noarch 22/38
Installing : xml-common-0.6.3-58.el9.noarch 22/38
Installing : fontconfig-2.14.0-2.el9_1.x86_64 23/38
Running scriptlet: fontconfig-2.14.0-2.el9_1.x86_64 23/38
Installing : libX11-common-1.7.0-11.el9.noarch 24/38
Installing : libX11-1.7.0-11.el9.x86_64 25/38
Installing : libXext-1.3.4-8.el9.x86_64 26/38
Installing : libXrender-0.9.10-16.el9.x86_64 27/38
Installing : cairo-1.17.4-7.el9.x86_64 28/38
Installing : libXxf86vm-1.1.4-18.el9.x86_64 29/38
Installing : libXi-1.7.10-8.el9.x86_64 30/38
Installing : libXtst-1.2.3-16.el9.x86_64 31/38
Installing : cairo-gobject-1.17.4-7.el9.x86_64 32/38
Installing : libXft-2.3.3-8.el9.x86_64 33/38
Installing : pango-1.48.7-3.el9.x86_64 34/38
Installing : libXfixes-5.0.3-16.el9.x86_64 35/38
Installing : libglvnd-glx-1:1.3.4-1.el9.x86_64 36/38
Installing : mesa-libGL-24.2.8-2.el9_6.x86_64 37/38
Running scriptlet: wgcloud-client-1.0.0-1.x86_64 38/38
Installing : wgcloud-client-1.0.0-1.x86_64 38/38
Running scriptlet: wgcloud-client-1.0.0-1.x86_64 38/38
Created symlink /etc/systemd/system/wgcloud-client-os.service → /lib/systemd/system/wgcloud-client-os.service.
Created symlink /etc/systemd/system/multi-user.target.wants/wgcloud-client-os.service → /lib/systemd/system/wgcloud-client-os.service.

Running scriptlet: fontconfig-2.14.0-2.el9_1.x86_64 38/38
Running scriptlet: wgcloud-client-1.0.0-1.x86_64 38/38
Verifying : dejavu-sans-fonts-2.37-18.el9.noarch 1/38
Verifying : fonts-filesystem-1:2.0.5-7.el9.1.noarch 2/38
Verifying : libXxf86vm-1.1.4-18.el9.x86_64 3/38
Verifying : libthai-0.1.28-8.el9.x86_64 4/38
Verifying : libglvnd-1:1.3.4-1.el9.x86_64 5/38
Verifying : libXrender-0.9.10-16.el9.x86_64 6/38
Verifying : libX11-common-1.7.0-11.el9.noarch 7/38
Verifying : libXau-1.0.9-8.el9.x86_64 8/38
Verifying : mesa-libGL-24.2.8-2.el9_6.x86_64 9/38
Verifying : mesa-libglapi-24.2.8-2.el9_6.x86_64 10/38
Verifying : cairo-gobject-1.17.4-7.el9.x86_64 11/38
Verifying : gdk-pixbuf2-2.42.6-6.el9_6.x86_64 12/38
Verifying : libXext-1.3.4-8.el9.x86_64 13/38
Verifying : xml-common-0.6.3-58.el9.noarch 14/38
Verifying : libxshmfence-1.3-10.el9.x86_64 15/38
Verifying : langpacks-core-font-en-3.0-16.el9.noarch 16/38
Verifying : libX11-xcb-1.7.0-11.el9.x86_64 17/38
Verifying : mesa-libgbm-24.2.8-2.el9_6.x86_64 18/38
Verifying : libglvnd-glx-1:1.3.4-1.el9.x86_64 19/38
Verifying : llvm-libs-19.1.7-1.el9.x86_64 20/38
Verifying : libxcb-1.13.1-9.el9.x86_64 21/38
Verifying : libXft-2.3.3-8.el9.x86_64 22/38
Verifying : libdatrie-0.2.13-4.el9.x86_64 23/38
Verifying : libXtst-1.2.3-16.el9.x86_64 24/38
Verifying : alsa-lib-1.2.13-2.el9.x86_64 25/38
Verifying : pango-1.48.7-3.el9.x86_64 26/38
Verifying : cairo-1.17.4-7.el9.x86_64 27/38
Verifying : libXfixes-5.0.3-16.el9.x86_64 28/38
Verifying : fontconfig-2.14.0-2.el9_1.x86_64 29/38
Verifying : mesa-filesystem-24.2.8-2.el9_6.x86_64 30/38
Verifying : fribidi-1.0.10-6.el9.2.x86_64 31/38
Verifying : libwayland-server-1.21.0-1.el9.x86_64 32/38
Verifying : mesa-dri-drivers-24.2.8-2.el9_6.x86_64 33/38
Verifying : pixman-0.40.0-6.el9_3.x86_64 34/38
Verifying : libXi-1.7.10-8.el9.x86_64 35/38
Verifying : libjpeg-turbo-2.0.90-7.el9.x86_64 36/38
Verifying : libX11-1.7.0-11.el9.x86_64 37/38
Verifying : wgcloud-client-1.0.0-1.x86_64 38/38

Installed:
alsa-lib-1.2.13-2.el9.x86_64 cairo-1.17.4-7.el9.x86_64 cairo-gobject-1.17.4-7.el9.x86_64
dejavu-sans-fonts-2.37-18.el9.noarch fontconfig-2.14.0-2.el9_1.x86_64 fonts-filesystem-1:2.0.5-7.el9.1.noarch
fribidi-1.0.10-6.el9.2.x86_64 gdk-pixbuf2-2.42.6-6.el9_6.x86_64 langpacks-core-font-en-3.0-16.el9.noarch
libX11-1.7.0-11.el9.x86_64 libX11-common-1.7.0-11.el9.noarch libX11-xcb-1.7.0-11.el9.x86_64
libXau-1.0.9-8.el9.x86_64 libXext-1.3.4-8.el9.x86_64 libXfixes-5.0.3-16.el9.x86_64
libXft-2.3.3-8.el9.x86_64 libXi-1.7.10-8.el9.x86_64 libXrender-0.9.10-16.el9.x86_64
libXtst-1.2.3-16.el9.x86_64 libXxf86vm-1.1.4-18.el9.x86_64 libdatrie-0.2.13-4.el9.x86_64
libglvnd-1:1.3.4-1.el9.x86_64 libglvnd-glx-1:1.3.4-1.el9.x86_64 libjpeg-turbo-2.0.90-7.el9.x86_64
libthai-0.1.28-8.el9.x86_64 libwayland-server-1.21.0-1.el9.x86_64 libxcb-1.13.1-9.el9.x86_64
libxshmfence-1.3-10.el9.x86_64 llvm-libs-19.1.7-1.el9.x86_64 mesa-dri-drivers-24.2.8-2.el9_6.x86_64
mesa-filesystem-24.2.8-2.el9_6.x86_64 mesa-libGL-24.2.8-2.el9_6.x86_64 mesa-libgbm-24.2.8-2.el9_6.x86_64
mesa-libglapi-24.2.8-2.el9_6.x86_64 pango-1.48.7-3.el9.x86_64 pixman-0.40.0-6.el9_3.x86_64
wgcloud-client-1.0.0-1.x86_64 xml-common-0.6.3-58.el9.noarch

Complete!

250808-MongoDBHA-MongoDB副本集rs.initiate() 三个副本集节点都执行了,怎么办

你现在的情况是:三台机器上都执行了 rs.initiate(),这会导致每台机器都独立地成为了自己的单节点副本集
(各自成为一个不同的副本集),它们彼此之间并不知道对方的存在,所以整个副本集无法形成。


🔥 问题本质

MongoDB 的副本集只能由一个节点执行一次 rs.initiate() 来初始化整个副本集。
你在三台机器上都执行了,相当于创建了三个互不相关的副本集,这是错误的操作。


✅ 正确做法(修复步骤)

✅ 步骤 1:停止所有节点上的 MongoDB 服务

清理数据目录(dbpath)

bash

复制

1
2
3
4
# 每台机器上执行
sudo systemctl stop mongod
# 或
mongod --shutdown --dbpath /data/db

✅ 步骤 2:清理副本集配置(每台机器都要做

MongoDB 会把副本集配置保存在 local.replset 集合中,你需要清理掉这些配置。

bash

复制

1
2
3
4
5
6
7
8
9
10
# 进入 MongoDB shell(单节点启动,不指定 replSet)
mongod --dbpath /data/db --port 27017 --fork --logpath /var/log/mongod.log

mongo --port 27017

# 删除副本集配置
use local
db.dropDatabase() # 会清空 local 库,包括副本集配置和 oplog

exit

⚠️ 注意:这个操作会清除副本集配置和 oplog,不会影响你的业务数据(除非你业务数据也放在 local 库)。


✅ 步骤 3:重新以副本集模式启动 MongoDB(所有节点)

bash

复制

1
mongod --replSet rs0 --bind_ip 0.0.0.0 --dbpath /data/db --port 27017 --fork --logpath /var/log/mongod.log

✅ 步骤 4:只在一个节点(主节点)上执行初始化

连接任意一台节点(建议选你希望的 PRIMARY),执行:

JavaScript

复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rs.initiate({
_id: "rs0",
members: [
{_id: 0, host: "192.168.0.245:27017"},
{_id: 1, host: "192.168.0.246:27017"},
{_id: 2, host: "192.168.0.247:27017", arbiterOnly: true}
]
})

rs.initiate({
_id: "replicaset",
members: [
{_id: 0, host: "192.168.0.245:27017"},
{_id: 1, host: "192.168.0.246:27017"},
{_id: 2, host: "192.168.0.247:27017", arbiterOnly: true}
]
})
字段 含义
_id: "replicaset" 创建或指定一个名为 replicaset 的副本集。
members 列出这个副本集里的所有成员(节点)。
_id: 0/1/2 每个成员在副本集内的唯一标识符
host 每个成员的 IP:端口,告诉副本集怎么找到它们。
  1. 当前你连接的这台节点(假设是 192.168.0.245)会成为 PRIMARY
  2. 它会尝试与 192.168.0.246、192.168.0.247 建立心跳连接。
  3. 如果这两台节点已经以 --replSet replicaset 启动且数据目录干净,它们会进入 SECONDARY 状态。
  4. 最终形成一个 三节点副本集(1 主 2 从)。

✅ 步骤 5:验证副本集状态

JavaScript

复制

1
2
rs.status()
rs.conf()

✅ 总结一句话

每台都执行 rs.initiate() 是错误的,必须清理配置后,只用一台机器初始化整个副本集。

如你不确定该删哪个目录、如何备份,我可以帮你写个脚本。

250805-Ubuntu20.04优化配置脚本-Ubuntu-Scripts

/etc/sudoers配置

1
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL

Ubuntu 20.04 优化配置脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/sh

# 禁用内核更新
sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
# 锁定内核
sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
sudo apt-mark hold linux-image-generic linux-headers-generic

sudo apt update

# 禁用内核更新
sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
# 锁定内核
sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
sudo apt-mark hold linux-image-generic linux-headers-generic

sudo timedatectl set-timezone Asia/Shanghai
sudo cat /etc/timezone

# sudo mkdir -p /root/snap/chromium/common/chromium/BrowserMetrics

sudo apt install language-pack-zh-hans -y
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8

export LANG=zh_CN.UTF-8

sudo apt-get install vim -y && sudo apt-get remove vim -y
sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk -y
sudo apt install -y fontconfig
sudo apt install -y fonts-dejavu-core fonts-liberation

sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk -y
sudo apt install -y git
sudo apt install net-tools -y
sudo apt install openssh-server -y
sudo apt install -y fontconfig
sudo apt install -y fonts-dejavu-core fonts-liberation

# 禁用自动更新
sudo sed -i 's/APT::Periodic::Update-Package-Lists "1";/APT::Periodic::Update-Package-Lists "0";/g' /etc/apt/apt.conf.d/10periodic
sudo sed -i 's/APT::Periodic::Unattended-Upgrade "1";/APT::Periodic::Unattended-Upgrade "0";/g' /etc/apt/apt.conf.d/10periodic

# 禁用无人值守升级
sudo sed -i 's/APT::Periodic::Update-Package-Lists "1";/APT::Periodic::Update-Package-Lists "0";/g' /etc/apt/apt.conf.d/20auto-upgrades
sudo sed -i 's/APT::Periodic::Unattended-Upgrade "1";/APT::Periodic::Unattended-Upgrade "0";/g' /etc/apt/apt.conf.d/20auto-upgrades

# 禁用 apt-daily 服务和计时器
sudo systemctl stop apt-daily.service
sudo systemctl disable apt-daily.service
sudo systemctl mask apt-daily.service
sudo systemctl daemon-reload
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
sudo systemctl mask apt-daily.timer
sudo systemctl daemon-reload

# 禁用 unattended-upgrades 服务
sudo systemctl disable unattended-upgrades

# 禁用 Snap 自动更新
sudo snap refresh --hold

# 禁用自动更新
sudo systemctl stop apt-daily.service
sudo systemctl disable apt-daily.service
sudo systemctl kill --kill-who=main apt-daily.service
sudo systemctl disable apt-daily.timer
sudo systemctl mask apt-daily.timer
sudo systemctl stop unattended-upgrades.service
sudo systemctl disable unattended-upgrades.service

sudo systemctl daemon-reload

# Ubuntu自动登录和开机锁屏取消
## 禁用自动锁屏:
# gsettings set org.gnome.desktop.screensaver lock-enabled false
# gsettings set org.gnome.desktop.lockdown disable-lock-screen true

# 禁用内核更新
sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic
# 恢复内核更新
sudo apt-mark unhold linux-generic linux-image-generic linux-headers-generic

sudo sed -i 's/1/0/' /etc/apt/apt.conf.d/10periodic
sudo sed -i 's/2/0/' /etc/apt/apt.conf.d/10periodic

sudo sed -i 's/1/0/' /etc/apt/apt.conf.d/20auto-upgrades
sudo sed -i 's/2/0/' /etc/apt/apt.conf.d/20auto-upgrades

sudo apt remove update-notifier -y

# 禁用屏幕休眠
# gsettings set org.gnome.desktop.session idle-delay 0

sudo mkdir -p /home/mes/.ssh

sudo touch /home/mes/.ssh/authorized_keys


# Linux优化-Ulimit
# 写入文件内容

sudo bash -c 'cat <<EOF > /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF'

# >> 表示 追加 到文件末尾,不会破坏原有内容
sudo bash -c 'cat <<EOF > /etc/systemd/system.conf
[Manager]
DefaultLimitNOFILE=1048576
EOF'

# >> 表示 追加 到文件末尾,不会破坏原有内容
sudo bash -c 'cat <<EOF > /etc/sysctl.conf
net.ipv4.ip_forward = 1
fs.file-max = 1048576
fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144
EOF'

# 安装chrome谷歌浏览器
sudo apt update

# 谷歌浏览器取消登录密钥环**然后重启系统,首次打开 Chrome 时会提示创建新密钥环,直接留空密码并继续即可
rm -rf /home/ubuntu/.local/share/keyrings/*
sudo rm -rf /home/ubuntu/.local/share/keyrings/*

# 调整电视连接显示配置
sudo sed -i 's/#HandleLidSwitch=suspend/HandleLidSwitch=ignore/g' /etc/systemd/logind.conf

sudo apt autoremove -y

# 配置密钥允许
sudo bash -c 'cat <<EOF >> /home/ubuntu/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCiKRDip9YCWzsIe2a0bT2az8DjH7k6cBij8bpfcNaIqSfz+/PJWDPwK4VeC4Ko4E8jQYct8i9u9VKcAK9XUhMEQNlpmpC+KXHApMBJ8Stm8yHb65gOcl8sDxdyWB3LevzLhsK8ZvI1Fus7O5vwmGjdOxhhw/89aZG6xHM8gfe+IYjCdm+n6rMz0RTAgP/QVsLjrLqk8VxC/kb1QjKG0BjZsMnTvs32oiqgJ4Eif8TUpXnDin+lRL4v2fUjRMfOS7PSIMNUAtvtRd3lBp9u4Yk1VtRy+ZWITpXvnURlEp/bKiIxf2G2gUVsDZXLVu1l04FNB7bOEj99qolhfXYERJYSBMYSjPCrOmBTYuYlokqk/r4RtNncNXEs4WPipw/LekCEYs1rjBR7uUditEAJbCM4elUkN8t4XHZy9FKSRE/pdkhekW+dUf6AResMlTV/bCNYQu/JcUBvvWxscqsxYiZ5Q+lRJb1T6c0bTKSN3RddY3YMa1gdqWgK8O/OBVq2q80= Administrator@DESKTOP-12ALS0Q
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDERDBQtrr03DzuNYZhtIrWIVBWTOWrgptdVGMwQnGZqH5pLe88J0H5JtCUvXFZtah8JzsOcxrIHFNY52SYhKokfDBKdoFLEGQ6W0f5BOpVAdLSh1jMU/ybkn+8TGygy85qs8g1IEk7u8loqWNRT/mBOd6MZJTZQxivYIOBCzC1oeBlzO0fBqnlPoYxWahC2ifDbs5lc0DrNElJPeklVVLwGJNTc3wn0Y6tSFdb9975SLYBsp8XoDWI0wCsqp/afI3zH7Ms+CIxz6XzsjjIEXwnCRxKjbLOGJLeDOFlf+ArqrV5WBWBD39qFVmq9rTfvjG4o+cPSgz1zyN1LyPK3+CQVtk3+2Bb1lPHaw4NdyCakrnT3aTdYsICvmD88Gre/wDgXid5osqoGfRYOWtzHIULmWH4k6HGg4O9W9EHU1lm2qP/Zt8CHC+tPhSYwOovu//lyhg4ygMDLCkHnXy4cCfdxQ4HvgHPQpmHkCfNgIgWTotykIUZbCbJpowJPNngOFM= root@sop

EOF'

#
sudo apt autoremove -y
# sudo reboot
# sudo systemctl restart systemd-logind

250805-Docker Images离线打包

docker images如何离线打包

脚本示例

1
2
3
4
5
6
7
8
9
# 导出
sudo docker save mongo > mongo_250805.tar
sudo docker save postgres > postgres_250805.tar
sudo docker save ghcr.io/ferretdb/all-in-one > ferretdb_250805.tar

# 导入
sudo docker load -i mongo_250805.tar
sudo docker load -i postgres_250805.tar
sudo docker load -i ferretdb_250805.tar

在有网络的机器上,可以使用以下步骤将 Docker 镜像离线打包:

打包镜像

  • 使用 docker save 命令:将指定的 Docker 镜像保存为一个 .tar 格式的归档文件。例如,要将名为 nginx 的镜像打包,可以运行以下命令:

    1
    docker save nginx > nginx.tar
  • 指定输出路径:也可以使用 -o 参数指定输出文件的路径。例如:

    1
    docker save -o /path/to/nginx.tar nginx

传输打包后的文件

  • 将生成的 .tar 文件复制到离线机器上。可以使用 USB 驱动器、SCP、SFTP 等方式。

在离线机器上加载镜像

  • 使用 docker load 命令:加载 .tar 格式的镜像文件。例如:

    1
    docker load -i nginx.tar

或者:

1
docker load < nginx.tar
  • 确认镜像加载成功:运行 docker images 命令,查看加载的镜像是否出现在列表中。

打包多个镜像

如果需要将多个镜像打包到一个文件中,可以将多个镜像名称作为参数传递给 docker save 命令。例如:

1
docker save image1 image2 > images.tar

250801-Maven-T-1C多线程编译参数配置

⚠️ 注意事项:

  • 若项目模块间依赖复杂,Maven 会自动限制并行度;
  • 若内存较小,建议不要设置过高(如 -T 2C-T 4C),避免 OOM;
  • 日志可能会乱,建议加 -B(batch 模式)或 --log-file 输出到文件

✅ 可选配置参考:

参数 含义 4核CPU下的线程数
-T 1C 每核 1 个线程 4
-T 2C 每核 2 个线程 8
-T 0.5C 每两核 1 个线程 2
-T 4 固定使用 4 个线程 4

如无特殊需求,**-T 1C** 是推荐起点,平衡性能与稳定性。

优化建议

在多核 CPU 环境下,Maven 的 -T 参数用于控制并行构建线程数,合理设置可以显著提升构建效率。以下是基于最新资料(截至 2025
年)的优化建议


推荐设置原则

CPU核心数 推荐参数示例 说明
4核 -T 1C-T 1.5C 使用 4~6 线程,避免过度占用系统资源
8核 -T 1.5C-T 2C 使用 12~16 线程,适合中大型项目
超线程支持 -T 1.5C 如4核8线程,1.5C = 12线程,性能提升明显

实战命令示例

1
2
3
4
5
6
7
8
# 推荐:按核心数1.5倍并行构建(平衡性能与稳定性)
mvn clean install -T 1.5C

# 保守:使用与核心数相同的线程数
mvn clean install -T 1C

# 激进:使用固定线程数(需测试是否稳定)
mvn clean install -T 8

⚠️ 注意事项

  • 模块依赖复杂时慎用高并发:Maven 会自动跳过有依赖冲突的模块,线程过多反而降低效率。

  • 内存限制:并行构建会显著增加内存占用,建议同步设置:

    1
    export MAVEN_OPTS="-Xmx2g -Xms1g"
  • CI/CD环境建议实测:不同机器、不同项目结构下,最优线程数可能不同,建议用 time mvn -T X clean package 实测对比。


最佳实践总结

场景 推荐参数 说明
本地开发 -T 1C-T 1.5C 稳定优先,避免影响IDE响应
CI/CD流水线 -T 1.5C-T 2C 构建时间短,资源可控
多模块大项目 -T 1.5C + 增量构建 结合 -pl 局部构建更佳

如无特殊需求,**-T 1.5C** 是当前多核 CPU 下 Maven 构建的推荐起点,兼顾速度与稳定性