Eu tive que fazer exportações enquanto estava experimentando com Linux. Eu sei que um monte de configurações são salvas, ~/.config/
mas isso não parece incluir scripts Kwin ou decorações de janela em si, então eu teria que reinstalá-los em uma nova instalação do KDE. Eu olhei para ferramentas como konsave, mas isso é apenas para dotfiles.
Início
Tenho usado vinho, mas não deu certo, então parei de usá-lo.
depois que o 7-zip para vinho ainda estava presente no gnome-menus
(Menu de aplicativos) Como posso consertar isso
Eu removi wine
o instalado do main
repositório. Eu removi winehq-stable
do winehq
meu próprio repositório
se eu digitar sudo apt-get remove --purge wine winehq-stable
diz:
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.
Como posso consertar isso?
$ 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 +++
Já tentei reinstalar:
sudo apt install --reinstall snapd && sudo snap refresh
sem sucesso.
Ubuntu 24.10
Alguma ideia?
Recentemente instalei o lubuntu 24.04 em um cartão micro SD completamente vazio. O instalador me pediu para executar um particionamento manual e nessa fase me propôs que é importante criar uma partição do tipo EFI
com as seguintes características:
- o sistema de arquivos da partição deve ser FAT32
- o tamanho deve ser de pelo menos 300 MB
- é importante selecionar para a
EFI
partição o ponto de montagem/boot/efi
.
Esta postagem confirmou minhas escolhas, mas não explica por que é necessário criar uma EFI
partição.
O instalador diz que o Lubuntu precisa de uma partição EFI , mas em outra mensagem diz que sem uma EFI
partição o sistema pode não inicializar; então a EFI
partição não parece obrigatória.
Este outro post diz que a ausência de uma EFI
partição e se no sistema não estiver instalado nenhum outro bootloader, torna todos os sistemas operacionais instalados não inicializáveis.
Pergunta
A presença da partição EFI (FAT32, 300MB, montada em /boot/efi
) é obrigatória para executar uma inicialização correta do lubuntu 24.04?
Fiz o upgrade no local de 20.04 LTS para 22.04 LTS há alguns meses em duas das minhas máquinas; vejo isso em /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 retorna:
6.8.0-52-generic
Ao fazer um sudo apt update e upgrade, a versão 5.15 foi atualizada (fiz um sudo apt autoremove para me livrar de versões mais antigas, não mostradas acima). Alguém tem ideia de por que essas coisas são atualizadas, e vmlinuz.old se refere a 6.8.0-52, mas meu kernel atual é 6.8.0-52?
Estou tentando fazer um loop de áudio de fundo em 4 vídeos mesclados em 1. 2 vídeos já têm som, os outros 2 vídeos não. O áudio em loop para de tocar de repente quando os vídeos sem som começam a tocar.
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
A ideia do comando é que qualquer número de vídeos pode ser mesclado, e o áudio continuará em loop sem fornecer uma duração final. Essa habilidade é bem-sucedida se eu sobrescrever todo o áudio com o áudio em loop , mas não é possível se eu sobrepor o vídeo com o áudio em loop.
Aqui está um exemplo de como substituir áudio:
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
Como posso fazer o áudio repetir em todos os 4 vídeos (incluindo aqueles sem som)?
Aqui está um link para os vídeos que estou mesclando.
encoded_test1.mp4
encoded_test2.mp4
encoded_test3.mp4 (no sound)
Aqui estão os vídeos e o script mesclados. Aqui está o vídeo de saída.
Eu odeio IMAP e sempre odiei. Alguns meses atrás, criei uma conta POP3 no Thunderbird para um dos meus endereços de e-mail IMAP existentes.
Tudo funcionou e o comportamento foi o esperado: novos e-mails "enviados" e "recebidos" foram salvos nas pastas correspondentes na nova conta POP3.
A caixa de entrada continha todos os e-mails desde o início dos tempos, enquanto a pasta de enviados continha os e-mails daquele dia em diante.
Não excluí a conta IMAP antiga no Thunderbird, mas a desativei e a deixei inativa. Escreveu algumas dicas sobre como fazer isso nesta resposta de Superusuário aqui .
Um motivo é para o caso de algo dar errado, mas o motivo mais importante para mantê-lo é que ele é o único registro de todas as correspondências enviadas antes do dia.
Outro comportamento esperado (antes de definir a conta IMAP como inativa) é que se você definir a conta POP3 para excluir tudo do servidor no download, isso acontece, mas depois que você se conecta à conta IMAP, todas as mensagens da caixa de entrada local também desaparecem. As mensagens enviadas localmente permanecem.
A questão é: alguém sabe como importar ou mover as mensagens históricas 'enviadas' do IMAP para a nova pasta 'enviadas' do POP3?
Se isso não for muito complicado, eu provavelmente faria isso e me livraria da redundância.
Estou usando o macOS Sequoia (15.3.1) e estou com dificuldades para excluir arquivos em uma pasta e suas subpastas usando rm -R
curingas +, como *1.XXX
.
Minha biblioteca de música no meu Mac tem vários arquivos duplicados ( *.mp3
, *.m4p
), e estou tentando excluí-los, evitando ir a cada pasta manualmente. Como os arquivos duplicados têm nomes que terminam com 1
ou 2
, *1.mp3
funciona bem.
Notei que um simples ls -r *.*
ou *.mp3
também não fornece nenhum resultado (nenhuma correspondência encontrada, embora eu saiba que há arquivos lá).
Mas se eu for até uma pasta específica e digitar, rm *1.mp3
funciona.
Todas as notificações lá (como ao tirar uma captura de tela do Snip & Sketch) pararam de aparecer de repente, mesmo com o Notifications ativado e o Focus Assist desativado. Como isso pode ser corrigido além de provavelmente reiniciar?
deveria ter um banner de notificação no canto inferior direito como
Existe uma maneira de executar systemctl daemon-reload no modo de recuperação. (Debian) Se sim, como?
Eu estava tentando mudar o ponto de montagem de uma das minhas unidades, então editei meu arquivo fstab para o local desejado. Então, tentei executar systemctl daemon-reload, mas não funcionou. Não consigo lembrar do erro que ele me deu, mas imaginei que se eu reiniciasse meu computador ele se consertaria sozinho...
GRANDE PROBLEMA
Depois que reiniciei, não consegui passar da tela de inicialização. A verificação do sistema de arquivos falharia naquela unidade, então eu ficaria preso em uma tela repetida. Entrei no modo de recuperação para descobrir qual é o problema e, pelo que entendi, simplesmente preciso executar o daemon-reload, mas como a única maneira de usar meu sistema é pelo modo de recuperação, não consigo executar o comando. Pelo que entendi, ele não será executado no modo de recuperação porque 1. Estou pedindo para ele reiniciar sozinho e ele não consegue fazer isso, ou 2. O systemd não está sendo executado no modo de recuperação.
2 é improvável para mim porque por que ele não estaria em execução, mas recebo o seguinte erro que me faz pensar que ele não está em execução.
Executando em chroot, ignorando o comando 'daemon-reload'
Então com sudo eu consigo um melhor
não é possível alocar pty: nenhum dispositivo desse tipo
Estou assumindo que o pty não existe no modo de recuperação, daí 2.
Meu entendimento do problema está correto? Alguém tem alguma sugestão sobre o que eu posso tentar fazer para executar o daemon-reload?
Tenho uma rede de máquinas Linux que são todas, para os propósitos do que estou fazendo, clones umas das outras. Há um nó "mestre" do qual todos os outros sincronizam um diretório em intervalos regulares usando rsync
(revezando-se, não simultaneamente). Cada máquina tem seu rsyncd
próprio rsyncd.conf
.
Minha rotina de sincronização faz com que cada nó cliente chame o rsync
cliente assim:
$ rsync -a --delete masternode::syncdir/ /path/to/local/syncdir/
Observe que esta é uma conexão direta com o mestre rsyncd
, não usando ssh.
Minha pergunta é: como já estou rsyncd
executando em cada cliente, a operação de sincronização repetida seria mais eficiente invocando a instância local em vez de um caminho de arquivo como o argumento de destino? Ou seja
$ rsync -a --delete masternode::syncdir/ localhost::syncdir/
Nunca vi um exemplo de rsync
uso assim entre duas rsyncd
instâncias; não há nada que indique que não seja permitido/suportado, mas não tenho certeza de como (ou se) funcionaria nessa configuração de dois servidores mais um cliente mediando a operação entre eles.
Presumo que o tráfego ainda passe pelo processo do cliente (não que isso importe quando o servidor de destino é local), mas ambos os servidores " veem " um servidor na outra extremidade e fazem alguma eficiência de acordo, como aproveitar metadados de arquivo que eles podem ter armazenado em cache de execuções anteriores? (Ou isso acontece de qualquer maneira, independentemente de eles " saberem " que estão falando com outra instância do servidor?)
Esperando por uma resposta que possa aprofundar o " como ".
Vi outras respostas neste site, li um artigo e assisti a um vídeo sobre o assunto, mas ainda não consigo conectar meu namespace de rede ao mundo externo.
Configurar
Criei um namespace chamado "foo" e um par de veth
interfaces e movi uma para o namespace.
ip netns add foo
ip link add veth-foo type veth peer name veth-out
ip link set dev veth-foo netns foo
Atribuí um endereço IP a cada interface e verifiquei se ambas estavam ativas.
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
Adicionei entradas às tabelas de roteamento dos namespaces global e "foo", para que eles possam se comunicar entre si.
ip route add 192.168.15.1 via 192.168.15.2
ip -n foo route add default via 192.168.15.1
Agora, posso alcançar "foo" do namespace global e o namespace global de "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
Também posso acessar a interface Ethernet que conecta a VM ao mundo externo de dentro de "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
Por fim, configurei o encaminhamento de IP, o encaminhamento de pacotes e o mascaramento de 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
Como resultado, meu sistema fica assim:
$ 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
Testando
Neste ponto, espero conseguir alcançar o mundo exterior, mas não.
$ 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
É claro que a própria VM está conectada à Internet.
$ 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
Aqui está a saída de tcpdump -n -i veth-out icmp
. Ele capturou pacotes quando eu mirei 192.168.15.2
& 10.0.2.15
, mas não obteve nada quando eu mirei 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
Nem capturou tcpdump -n -i lo icmp
nenhum tcpdump -n -i enp1s0 icmp
pacote, independentemente do alvo de traceroute
—sim, mesmo quando "foo" alcançou com sucesso a interface "enp1s0" (endereçada 10.0.2.15
).
Informações do sistema
Isso foi feito dentro de uma VM (GNOME Boxes), no Fedora 41, versão do kernel 6.11.4-301.fc41.x86_64.
Minha máquina host também está executando o Fedora 41, embora o kernel esteja na versão 6.13.5-200.fc41.x86_64.
Edição: Só para garantir que isso fosse um problema do Fedora, testei em uma VM Mint e aconteceu exatamente a mesma coisa.
Recentemente, quando li um QA , ele apresentou alguns comportamentos inesperados para mim:
~/findtest % echo three > file\ with\ \"double\ quotes\"
~ % find findtest -type f -exec sh -c 'set -x;cat "{}"' \;
+ cat 'findtest/file with double' quotes
cat: findtest/file with double: No such file or directory
cat: quotes: No such file or directory
IMHO quando a substituição estiver concluída, ela funcionará 'cat findtest/file\ with\ \"double\ quotes\"'
se apenas substituir o nome do arquivo acima, file\ with\ \"double\ quotes\"
o que funcionará. Se mantivermos o wrapper de citação, ele mostrará:
$ cat "findtest/file\ with\ \"double\ quotes\""
cat: 'findtest/file\ with\ "double\ quotes"': No such file or directory
P:
O que essa substituição realmente faz, causando o comportamento um pouco estranho acima com 2 substr 'findtest/file with double' e 'quotes', mas não 'findtest/file with' e 'double quotes' "
como delimitador?
Por que essa sintaxe entre colchetes funciona?
$ for (( i=0; i<3; ++i )) { echo $i; }
0
1
2
quando a página de manual diz que a sintaxe é
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
$ bash --version | head -1 # on linux mint virginia (ubuntu jammy)
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Se esta é uma adição de sintaxe que ainda não foi documentada, quando foi adicionada?
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)
Conforme mostrado acima, criei a tabela r
, depois criei um índice b+tree na coluna x
, e então agrupei a tabela usando esse índice. Como esperado, quando executei select * from r limit 5;
obtive registros com o menor x
valor, porque a ordem física dos registros agora é baseada na x
coluna (mais precisamente, com base no índice b+tree na coluna x
). Mas depois de executar select * from r limit 5 offset 10000;
, a ordem dos registros é alterada, sem nenhuma inserção. Alguém pode explicar esse comportamento?
Para tabelas com índices btree de cobertura, as atualizações de tuplas somente de heap (HOT) são possíveis quando colunas de índice não-chave são atualizadas?
Digamos que eu tenha uma tabela "usuários" com este índice:
CREATE INDEX users_email_index ON users(email) INCLUDE(name)
E o fator de preenchimento da tabela é 60; ocorrerá uma atualização HOT quando name
ela for atualizada?
De acordo com a documentação :
postmaster é o servidor de banco de dados multiusuário do PostgreSQL. Para que um aplicativo cliente acesse um banco de dados, ele se conecta (por uma rede ou localmente) a um postmaster em execução. O postmaster então inicia um processo de servidor separado ("postgres") para manipular a conexão. O postmaster também gerencia a comunicação entre os processos do servidor.
Não consigo entender completamente o que significa multiusuário e não encontrei nenhuma explicação. Alguém pode me explicar qual é o trabalho do postmaster? Isso é algo como um balanceador de carga para vários servidores postgres?
PostgreSQL - 13.15. Tenho uma tabela com 7 TB de tamanho. Há um índice -
CREATE INDEX mytable_cmp_ts ON mytable USING btree (campaign_id, created_at);
Não posso tentar explain analyse para a consulta a seguir porque pode levar muito tempo. Um EXPLAIN diz que o índice será usado. Isso é possível, considerando que created_at é a segunda coluna no índice?
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)
- Mais de 300 mil vídeos
- Mais de 10 milhões de marcadores apontando para intervalos de tempo em vídeos
{
"markerCategory": "something",
"markerDesc": "something-more-specific",
"frameIn": 120001,
"frameOut": 140002
},
{
"markerCategory": "something-else",
"markerDesc": "something-else-more-specific",
"frameIn": 130001,
"frameOut": 135002
}
Alguma sugestão de qual banco de dados/índice de pesquisa teria melhor desempenho
ao pesquisar algo neste sentido:
Vídeos com eventos de
category A
ANDcategory B
em intervalos de tempo sobrepostos,
classificados por quantidade de tempo coberto
Atualmente, os vídeos são exportados de algum banco de dados relacional proprietário e armazenados em uma instância do Apache SOLR para pesquisa.
- Existe um nome específico para esse tipo de consulta ("consultas de intervalo invertido" ou algo assim...)?
- Alguma sugestão de qual tecnologia teria melhor desempenho para esses tipos de consultas?
Eu estava pensando talvez em Elasticsearch?