我必须进行导出,因为我一直在尝试使用 Linux。我知道保存了许多设置~/.config/
,但其中似乎不包括 Kwin 脚本或窗口装饰本身,因此我必须在新的 KDE 安装中重新安装它们。我查看了 konsave 之类的工具,但那只适用于点文件。
主页
我一直在使用 wine,但效果不太好所以我将其删除了。
之后 Wine 的 7-zip 仍然存在于gnome-menus
(应用程序菜单)我该如何解决这个问题
我已从存储库中删除wine
安装。我已从自己的存储库中main
删除winehq-stable
winehq
如果我输入sudo apt-get remove --purge wine winehq-stable
它说:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package 'wine' is not installed, so not removed
Package 'winehq-stable' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
我该如何修复它?
$ snap list
snap: error while loading shared libraries: libxcb.so.1: cannot open shared object file: No such file or directory
$ whereis libxcb.so.1
libxcb.so.1: /usr/lib/x86_64-linux-gnu/libxcb.so.1
$ which snap
/usr/bin/snap
$ sha256sum /bin/snap
06d498c41a5bf2f4d836fb50ff02749c82297fd3e74e41d78bb089292158be5a /bin/snap
$ file /bin/snap
/bin/snap: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=_XiLSmroeRJA5Uo8zvaX/rt3gXAZzIqOiI-Q_dmRd/7eHWjLhhkgUrQ7Kb9WkR/V-DYZbbtce--vU_MTNt2, stripped
$ strace -o trace.out /usr/bin/snap list
$ grep -C5 'libxcb.so.1' trace.out
mmap(NULL, 1297704, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fee906c3000
mmap(0x7fee906dc000, 589824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7fee906dc000
mmap(0x7fee9076c000, 585728, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa9000) = 0x7fee9076c000
mmap(0x7fee907fb000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138000) = 0x7fee907fb000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/cuda/include/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/cuda/lib64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/local/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "glibc-hwcaps/x86-64-v3/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "glibc-hwcaps/x86-64-v2/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libxcb.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=170600, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fee90b5b000
mmap(NULL, 172680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fee90b30000
mmap(0x7fee90b3c000, 81920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7fee90b3c000
--
mmap(NULL, 1297704, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7bdda3e93000
mmap(0x7bdda3eac000, 589824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7bdda3eac000
mmap(0x7bdda3f3c000, 585728, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa9000) = 0x7bdda3f3c000
mmap(0x7bdda3fcb000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138000) = 0x7bdda3fcb000
close(3) = 0
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/x86_64-linux-gnu/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v3/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v3", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v2/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/glibc-hwcaps/x86-64-v2", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/haswell", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/tls", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/haswell", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/x86_64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib/x86_64", 0x7ffc475173a0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/snap/snapd/current/usr/lib/libxcb.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/snap/snapd/current/usr/lib", {st_mode=S_IFDIR|0755, st_size=130, ...}, 0) = 0
writev(2, [{iov_base="/usr/bin/snap", iov_len=13}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libxcb.so.1", iov_len=11}, {iov_base=": ", iov_len=2}, {iov_base="cannot open shared object file", iov_len=30}, {iov_base=": ", iov_len=2}, {iov_base="No such file or directory", iov_len=25}, {iov_base="\n", iov_len=1}], 10) = 124
exit_group(127) = ?
+++ exited with 127 +++
已经尝试重新安装:
sudo apt install --reinstall snapd && sudo snap refresh
但无济于事。
Ubuntu 24.10
有什么想法吗?
EFI
我最近在一张完全空的微型 SD 卡上安装了 lubuntu 24.04。安装程序要求我执行手动分区,在此阶段,它建议我创建具有以下特征的分区非常重要:
- 分区的文件系统必须是 FAT32
- 大小必须至少为 300 MB
EFI
为分区选择挂载点非常重要/boot/efi
。
这篇文章证实了我的选择,但没有解释为什么需要创建EFI
分区。
安装程序说lubuntu 需要一个 EFI 分区,但另一条消息说如果没有EFI
分区,系统可能无法启动;所以该EFI
分区似乎不是强制性的。
另一篇文章说,如果缺少EFI
分区并且系统中没有安装任何其他引导加载程序,则所有已安装的操作系统都无法启动。
问题
是否必须存在 EFI 分区(FAT32、300MB、安装在/boot/efi
)才能正确启动 lubuntu 24.04?
几个月前,我在我的两台机器上从 20.04 LTS 升级到了 22.04 LTS;我在 /boot 中看到了以下内容:
total 275864
drwxr-xr-x 5 root root 4096 Feb 26 06:51 .
drwxr-xr-x 20 root root 4096 Sep 29 2014 ..
-rw-r--r-- 1 root root 262228 Feb 7 12:44 config-5.15.0-133-generic
-rw-r--r-- 1 root root 287013 Jan 15 11:27 config-6.8.0-52-generic
drwx------ 2 root root 4096 Dec 31 1969 efi
drwxr-xr-x 4 root root 4096 Feb 26 06:51 grub
lrwxrwxrwx 1 root root 29 Feb 26 06:48 initrd.img -> initrd.img-5.15.0-133-generic
-rw-r--r-- 1 root root 114000628 Feb 26 06:49 initrd.img-5.15.0-133-generic
-rw-r--r-- 1 root root 125713060 Feb 18 06:35 initrd.img-6.8.0-52-generic
lrwxrwxrwx 1 root root 27 Feb 26 06:48 initrd.img.old -> initrd.img-6.8.0-52-generic
drwx------ 2 root root 16384 Nov 26 2020 lost+found
-rw-r--r-- 1 root root 182800 Feb 6 2022 memtest86+.bin
-rw-r--r-- 1 root root 184476 Feb 6 2022 memtest86+.elf
-rw-r--r-- 1 root root 184980 Feb 6 2022 memtest86+_multiboot.bin
-rw------- 1 root root 6295053 Feb 7 12:44 System.map-5.15.0-133-generic
-rw------- 1 root root 8667805 Jan 15 11:27 System.map-6.8.0-52-generic
lrwxrwxrwx 1 root root 26 Feb 26 06:48 vmlinuz -> vmlinuz-5.15.0-133-generic
-rw------- 1 root root 11711400 Feb 7 13:12 vmlinuz-5.15.0-133-generic
-rw------- 1 root root 14928264 Jan 15 11:51 vmlinuz-6.8.0-52-generic
lrwxrwxrwx 1 root root 24 Feb 26 06:48 vmlinuz.old -> vmlinuz-6.8.0-52-generic
uname -r 返回:
6.8.0-52-generic
执行 sudo apt update 和 upgrade 时,版本 5.15 已更新(执行了 sudo apt autoremove 以删除旧版本,上面未显示)。知道为什么更新了这些内容吗?vmlinuz.old 指的是 6.8.0-52,但我当前的内核是 6.8.0-52?
我正在尝试将 4 个视频合并为 1 个,并循环播放背景音频。2 个视频已经有声音,其他 2 个视频没有。当无声视频开始播放时,循环音频突然停止播放。
ffmpeg -y -i merged_video.mp4 -stream_loop -1 -i bgmusic.mp3 -filter_complex "[0]volume=1.0[a];[1]volume=1.0[b];[a][b]amix=inputs=2:duration=shortest" -c:a libmp3lame merged_video_withAudio.mp4
该命令的理念是可以合并任意数量的视频,并且音频将继续循环播放而不提供结束时长。如果我用循环音频覆盖所有音频,则此功能会成功,但如果我用循环音频覆盖视频,则无法实现。
以下是覆盖音频的示例:
ffmpeg -i merged_video.mp4 -stream_loop -1 -i bgmusic.mp3 -shortest -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 merged_video_withAudio.mp4
我怎样才能让音频在所有 4 个视频(包括没有声音的视频)中循环播放?
这是我正在合并的视频的链接。
encoded_test1.mp4
encoded_test2.mp4
encoded_test3.mp4 (no sound)
我讨厌 IMAP,一直如此,几个月前,我在 Thunderbird 中为我的一个现有 IMAP 电子邮件地址创建了一个 POP3 帐户。
一切正常,行为也符合预期 - 新的“已发送”和“已接收”电子邮件保存在新的 POP3 帐户中的相应文件夹中。
收件箱包含自一开始以来的所有电子邮件,而已发送文件夹则包含自该天以来的电子邮件。
我没有删除 Thunderbird 中的旧 IMAP 帐户,而是停用了它并使其处于休眠状态,并在这里的超级用户回答中写了一些关于如何执行此操作的经验。
一个原因是以防出现问题,但保留它的最重要原因是它是当天之前发送的所有邮件的唯一记录。
进一步的预期行为(在将 IMAP 帐户设置为休眠之前)是,如果您将 POP3 帐户设置为在下载后从服务器删除所有内容,它确实会这样做,但是一旦您连接到 IMAP 帐户,所有本地收件箱消息也会消失。本地发送的消息仍然存在。
问题是 - 是否有人知道如何将历史 IMAP“已发送”消息导入或移动到新的 POP3“已发送”文件夹?
如果这不是太复杂的话我可能会这样做并消除冗余。
我正在使用 macOS Sequoia (15.3.1),并且我正在努力使用 + 通配符删除文件夹及其子文件夹中的文件rm -R
,例如*1.XXX
。
我的 Mac 音乐库中有多个重复文件(*.mp3
、*.m4p
),我试图删除它们,避免手动进入每个文件夹。由于重复文件的名称以1
或结尾2
,*1.mp3
因此可以正常使用。
我注意到简单的ls -r *.*
或*.mp3
没有提供任何结果(没有找到匹配项,尽管我知道那里有文件)。
但如果我转到特定文件夹并输入,rm *1.mp3
它就可以起作用。
有没有办法在救援模式下运行 systemctl daemon-reload。(Debian)如果可以,怎么做?
我试图更改其中一个驱动器的挂载点,因此我将 fstab 文件编辑到所需位置。然后,我尝试运行 systemctl daemon-reload,但运行失败。我不记得它给出的错误,但我想如果我重新启动计算机,它就会自行修复...
大问题
重新启动后,我无法通过启动屏幕。该驱动器上的文件系统检查会失败,因此我会被困在重复的屏幕上。我进入救援模式以找出问题所在,据我所知,我只需要运行 daemon-reload,但由于我使用系统的唯一方法是通过救援模式,因此我无法运行该命令。据我所知,它不会在救援模式下运行,因为 1. 我要求它自行重新启动,但它无法做到这一点,或者 2. systemd 没有在救援模式下运行。
2 对我来说不太可能,因为它为什么不运行,但我收到以下错误,这让我认为它没有运行。
在 chroot 中运行,忽略命令“daemon-reload”
然后使用 sudo 我得到更好的
无法分配 pty:没有这样的设备
我假设 pty 在救援模式下不存在,因此 2。
我对问题的理解准确吗?有人对我可以尝试运行 daemon-reload 有什么建议吗?
mkfifo foo
printf %s\\n bar | tee foo &
tr -s '[:lower:]' '[:upper:]' <foo
wait
rm foo
这是我想要执行的操作的有效 POSIX shell 脚本:
printf %s\\n bar
是产生标准输出的外部程序的象征tr -s '[:lower:]' '[:upper:]'
象征着另一个应该接收标准输出并对其执行某些操作的命令tee
将 stdout 复制到命名管道 foo
输出符合预期:
bar
BAR
现在我想整理一下代码,让它变成这样external_program | my_function
。就像这样:
f() (
mkfifo foo
tee foo &
tr -s '[:lower:]' '[:upper:]' <foo
wait
rm foo
)
printf %s\\n bar | f
但现在根本就没有任何输出。
如果我在命令行中运行该命令,它将按预期工作tmux
:
list-panes -a -F "pane ID: #{p3:pane_id} TTY: #{p11:pane_tty}"
输出:
pane ID: %1 TTY: /dev/pts/35
pane ID: %2 TTY: /dev/pts/36
pane ID: %3 TTY: /dev/pts/37
pane ID: %4 TTY: /dev/pts/38
但我无法让它们在 内工作display-menu
。问题似乎很明显(至少从我的 shell 角度来看):需要额外的引号级别,以便list-panes
看到格式字符串而不是其解析值。但显然我做错了:
bind-key C-t display-menu -T 'Test' \
'List panes with tty' '' "list-panes -a -F 'pane ID: \#\{p3:pane_id\} TTY: \#{p11:pane_tty}"
bind-key C-t display-menu -T 'Test' \
'List panes with tty' '' {
list-panes -a -F 'pane ID: #{p3:pane_id} TTY: #{p11:pane_tty}'
}
输出:
pane ID: %1 TTY: /dev/pts/35
pane ID: %1 TTY: /dev/pts/35
pane ID: %1 TTY: /dev/pts/35
pane ID: %1 TTY: /dev/pts/35
我有一个 Linux 计算机网络,就我所做的事情而言,它们都是彼此的克隆。有一个“主”节点,所有其他节点定期使用同步目录rsync
(轮流,而不是同时)。每台机器都有自己的rsyncd
运行和相同的rsyncd.conf
。
我的同步例程让每个客户端节点rsync
像这样调用客户端:
$ rsync -a --delete masternode::syncdir/ /path/to/local/syncdir/
注意这是与主服务器的直接连接rsyncd
,而不是使用 ssh。
我的问题是:由于我rsyncd
已经在每个客户端上运行,通过调用本地实例而不是文件路径作为目标参数,重复同步操作是否会更有效率?即
$ rsync -a --delete masternode::syncdir/ localhost::syncdir/
rsync
我从未见过在两个实例之间这样使用的例子rsyncd
;我没有看到任何迹象表明它不被允许/支持,但我不能确定它在这个由两个服务器加上一个客户端在它们之间调解操作的配置中如何工作(或是否工作)。
我假设流量仍然经过客户端进程(当目标服务器是本地时这并不重要)但两台服务器是否“看到”另一端的服务器并相应地提高效率,例如利用它们可能从以前的运行中缓存的文件元数据?(或者这无论如何都会发生,无论他们是否“知道”他们正在与另一个服务器实例对话?)
希望得到一个可以深入探讨“如何”的答案。
我已经看过该网站上的其他答案,阅读了一篇文章并观看了有关该主题的视频,但我仍然无法将我的网络命名空间连接到外界。
设置
我创建了一个名为“foo”的命名空间和一对veth
接口,并将其中一个移入命名空间。
ip netns add foo
ip link add veth-foo type veth peer name veth-out
ip link set dev veth-foo netns foo
我为每个接口分配了一个 IP 地址并确保它们都已启动。
ip -n foo addr add 192.168.15.1 dev veth-foo
ip addr add 192.168.15.2 dev veth-out
ip -n foo link set dev veth-foo up
ip link set dev veth-out up
# Just in case, I made sure the loopback interfaces, too, are up, though they still show "UNKNOWN".
ip link set dev lo up
ip -n foo link set dev lo up
我在全局和“foo”命名空间的路由表中添加了条目,以便它们可以相互通信。
ip route add 192.168.15.1 via 192.168.15.2
ip -n foo route add default via 192.168.15.1
现在,我可以从全局命名空间到达“foo”,也可以从“foo”到达全局命名空间。
$ traceroute -n 192.168.15.1
traceroute to 192.168.15.1 (192.168.15.1), 30 hops max, 60 byte packets
1 192.168.15.1 0.257 ms 0.209 ms 0.194 ms
$ ip netns exec foo traceroute -n 192.168.15.2
traceroute to 192.168.15.2 (192.168.15.2), 30 hops max, 60 byte packets
1 192.168.15.2 0.046 ms 0.009 ms 0.008 ms
我还可以从“foo”内部访问连接虚拟机和外界的以太网接口。
# I ran this after I finished setting up IP forwarding, packet forwarding,
# and IP masquerading, so I'm not sure if it would work at this stage.
$ ip netns exec foo traceroute -n 10.0.2.15
traceroute to 10.0.2.15 (10.0.2.15), 30 hops max, 60 byte packets
1 10.0.2.15 0.065 ms 0.010 ms 0.008 ms
最后,我设置了 IP 转发、数据包转发和 IP 伪装。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -o enp1s0 -i veth-out -j ACCEPT
iptables -A FORWARD -i enp1s0 -o veth-out -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.15.1/24 -o enp1s0 -j MASQUERADE
因此,我的系统如下所示:
$ sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
$ iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 102 packets, 6816 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- any enp1s0 192.168.15.0/24 anywhere
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:c3:cd:ac brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp1s0
valid_lft 83383sec preferred_lft 83383sec
inet6 fec0::11b8:4b3b:59ba:bae4/64 scope site dynamic noprefixroute
valid_lft 86026sec preferred_lft 14026sec
inet6 fe80::f3fd:90f2:d15f:d570/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: veth-out@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether da:a2:13:05:c4:f5 brd ff:ff:ff:ff:ff:ff link-netns foo
inet 192.168.15.2/32 scope global veth-out
valid_lft forever preferred_lft forever
inet6 fe80::d8a2:13ff:fe05:c4f5/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
$ ip -n foo addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host proto kernel_lo
valid_lft forever preferred_lft forever
4: veth-foo@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 7e:84:e6:16:92:8e brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.15.1/32 scope global veth-foo
valid_lft forever preferred_lft forever
inet6 fe80::7c84:e6ff:fe16:928e/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
$ ip route
default via 10.0.2.2 dev enp1s0 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp1s0 proto kernel scope link src 10.0.2.15 metric 100
192.168.15.1 via 192.168.15.2 dev veth-out
$ ip -n foo route
default via 192.168.15.1 dev veth-foo
测试
此刻,我期望能够与外界取得联系,但是却不行。
$ ip netns exec foo traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.15.1 3067.680 ms !H 3067.655 ms !H 3067.650 ms !H
$ sudo ip netns exec foo ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.15.1 icmp_seq=1 Destination Host Unreachable
From 192.168.15.1 icmp_seq=2 Destination Host Unreachable
From 192.168.15.1 icmp_seq=3 Destination Host Unreachable
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2077ms
当然,虚拟机本身是连接到互联网的。
$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 10.0.2.2 0.719 ms 0.691 ms 0.676 ms
2 192.168.100.1 1.913 ms 2.593 ms 5.264 ms
3 31.146.255.37 18.493 ms 18.740 ms 19.041 ms
4 188.123.128.85 19.384 ms 19.658 ms 19.925 ms
5 188.123.128.96 20.275 ms 21.787 ms 188.123.128.84 21.773 ms
6 192.178.69.213 47.953 ms 53.145 ms 53.127 ms
7 192.178.69.212 53.116 ms 51.893 ms 188.123.128.33 51.293 ms
8 192.178.107.87 48.513 ms 192.178.107.135 43.582 ms 192.178.107.203 43.391 ms
9 72.14.237.137 43.195 ms 8.8.8.8 43.207 ms 43.200 ms
$ ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=255 time=40.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=255 time=37.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=255 time=38.0 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 37.859/38.698/40.205/1.067 ms
传输控制包
以下是 的输出tcpdump -n -i veth-out icmp
。当我定位192.168.15.2
&时10.0.2.15
,它捕获了数据包,但当我定位 时,它什么也没得到8.8.8.8
。
listening on veth-out, link-type EN10MB (Ethernet), snapshot length 262144 bytes
# This is the output when I ran `traceroute -n 192.168.15.2` (the address
# of "veth-out") in another terminal window (from inside "foo", of course).
12:44:19.172007 IP 192.168.15.2 > 192.168.15.1: ICMP 192.168.15.2 udp port traceroute unreachable, length 68
12:44:19.172029 IP 192.168.15.2 > 192.168.15.1: ICMP 192.168.15.2 udp port mtrace unreachable, length 68
12:44:19.172046 IP 192.168.15.2 > 192.168.15.1: ICMP 192.168.15.2 udp port 33436 unreachable, length 68
12:44:19.172063 IP 192.168.15.2 > 192.168.15.1: ICMP 192.168.15.2 udp port 33437 unreachable, length 68
12:44:19.172102 IP 192.168.15.2 > 192.168.15.1: ICMP 192.168.15.2 udp port 33438 unreachable, length 68
12:44:19.172119 IP 192.168.15.2 > 192.168.15.1: ICMP 192.168.15.2 udp port 33439 unreachable, length 68
# And this is when I ran the same command but addressed 10.0.2.15 (the
# ethernet interface to the outside world).
12:44:35.305689 IP 10.0.2.15 > 192.168.15.1: ICMP 10.0.2.15 udp port traceroute unreachable, length 68
12:44:35.305715 IP 10.0.2.15 > 192.168.15.1: ICMP 10.0.2.15 udp port mtrace unreachable, length 68
12:44:35.305733 IP 10.0.2.15 > 192.168.15.1: ICMP 10.0.2.15 udp port 33436 unreachable, length 68
12:44:35.305750 IP 10.0.2.15 > 192.168.15.1: ICMP 10.0.2.15 udp port 33437 unreachable, length 68
12:44:35.305766 IP 10.0.2.15 > 192.168.15.1: ICMP 10.0.2.15 udp port 33438 unreachable, length 68
12:44:35.305783 IP 10.0.2.15 > 192.168.15.1: ICMP 10.0.2.15 udp port 33439 unreachable, length 68
^C
12 packets captured
12 packets received by filter
0 packets dropped by kernel
无论目标是什么,都tcpdump -n -i lo icmp
没有捕获任何数据包,即使“foo”成功到达“enp1s0”接口(地址为)。tcpdump -n -i enp1s0 icmp
traceroute
10.0.2.15
系统信息
这是在 VM(GNOME Boxes)中完成的,在 Fedora 41、内核版本 6.11.4-301.fc41.x86_64 上。
我的主机也运行 Fedora 41,但内核版本是 6.13.5-200.fc41.x86_64。
编辑:为了防止这是 Fedora 的问题,我在 Mint VM 中对其进行了测试,结果发生了完全相同的事情。
test=# create table r (id serial primary key, x int, y int);
CREATE TABLE
test=# insert into r (x, y) select random() * 1000, random() * 1000 from generate_series(0, 1000000);
INSERT 0 1000001
test=#
test=# create index r_x_idx on r using btree (x);
CREATE INDEX
test=# cluster r using r_x_idx ;
CLUSTER
test=# select * from r limit 5;
id | x | y
------+---+-----
79 | 0 | 556
5997 | 0 | 774
6104 | 0 | 75
6937 | 0 | 818
7859 | 0 | 598
(5 rows)
test=# select * from r limit 5 offset 10000;
id | x | y
--------+----+-----
483314 | 10 | 842
484136 | 10 | 741
484568 | 10 | 729
488499 | 10 | 311
489022 | 10 | 613
(5 rows)
test=# select * from r limit 5;
id | x | y
--------+---+-----
330361 | 9 | 614
330928 | 9 | 48
331658 | 9 | 712
332175 | 9 | 448
332818 | 9 | 920
(5 rows)
如上所示,我创建了表r
,然后在列上创建了一个 b+tree 索引x
,然后使用该索引对表进行聚类。正如预期的那样,当我运行时,select * from r limit 5;
我得到了具有最小值的记录x
,因为记录的物理顺序现在基于x
列(更准确地说,基于列上的 b+tree 索引x
)。但是运行后select * from r limit 5 offset 10000;
,记录的顺序发生了变化,没有任何插入。有人可以解释这种行为吗?
对于具有覆盖 btree 索引的表,当更新非键索引列时,是否可以进行仅堆元组(HOT)更新?
假设我有一个带有此索引的“用户”表:
CREATE INDEX users_email_index ON users(email) INCLUDE(name)
name
并且表的填充因子是60;更新时会发生热更新吗?
根据文件:
postmaster 是 PostgreSQL 多用户数据库服务器。客户端应用程序要访问数据库,需要通过网络或本地连接到正在运行的 postmaster。postmaster 随后启动一个单独的服务器进程(“postgres”)来处理连接。postmaster 还管理服务器进程之间的通信。
我无法完全理解多用户的含义,也没有找到任何解释。有人能向我解释一下 postmaster 的职责是什么吗?这是否类似于多个 postgres 服务器的负载平衡器?
PostgreSQL - 13.15。我有一张 7 TB 大小的表。有一个索引 -
CREATE INDEX mytable_cmp_ts ON mytable USING btree (campaign_id, created_at);
我无法尝试对以下查询进行解释分析,因为这可能需要很长时间。EXPLAIN 表示将使用索引。考虑到 created_at 是索引中的第二列,这可能吗?
explain select min(created_at) from mytable;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------
Finalize Aggregate (cost=244894227.70..244894227.71 rows=1 width=8)
-> Gather (cost=244894227.48..244894227.69 rows=2 width=8)
Workers Planned: 2
-> Partial Aggregate (cost=244893227.48..244893227.49 rows=1 width=8)
-> Parallel Index Only Scan using mytable_cmp_ts on mytable (cost=0.71..238551221.08 rows=2536802560 width=8)
- 30 万多个视频
- 1000 多万个标记,指向视频中的时间范围
{
"markerCategory": "something",
"markerDesc": "something-more-specific",
"frameIn": 120001,
"frameOut": 140002
},
{
"markerCategory": "something-else",
"markerDesc": "something-else-more-specific",
"frameIn": 130001,
"frameOut": 135002
}
当搜索以下内容时,任何数据库/搜索索引表现最佳的建议:
包含重叠时间范围内的事件的视频
category A
, 按涵盖的时间长度排序category B
视频当前从某些专有关系数据库导出并存储在 Apache SOLR 实例中以供搜索。
- 这些类型的查询是否有特定的名称(“反向范围查询”或类似的东西......)?
- 对于这些类型的查询,您有什么建议吗?哪种技术效果最好?
我在想也许是 elasticsearch?