AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / 问题

All perguntas(unix)

Martin Hope
chris01
Asked: 2024-09-30 16:17:56 +0800 CST

Disco-som após a montagem

  • 11

Comprei um novo disco rígido USB3 de 16 TB - não um SSD, mas os antigos discos giratórios.

Seagate Expansão HDD 16 TB

Criei uma partição de disco completa formatada com ext4 - 14 TB após a formatação.

Agora, quando eu monto, eu reconheço um som tok-tok-tok. Se eu desmonto, ele desaparece instantaneamente. Ele fica silencioso se ele estiver apenas conectado, mas não montado.

O que é isso? Algum mecanismo de acesso a disco do SO ou o quê? Cache?

Se eu fizer isso em um Debian 10, isso acontece 2x/s. Se eu montar em um Debian 12, isso acontece uma vez a cada 3s.

mount
  • 1 respostas
  • 650 Views
Martin Hope
PlasmaBinturong
Asked: 2024-09-17 21:20:16 +0800 CST

A formatação do Bash printf float tornou-se absurda e aleatória

  • 11

A formatação de números flutuantes do Bash printf(com %fou %g) de repente ficou completamente errada e mudou o tempo todo.

Um exemplo de saída:

$ export LC_ALL=C
$ printf '%g\n' 1
1.20739e+3531
$ printf '%g\n' 1
4.50784e-4778
$ printf '%g\n' 1
1.20739e+3531
$ printf '%g\n' 1
-2.71289e-809
$ printf '%g\n' 1
1.3505e+3136
$ printf '%g\n' 1
7.19546e+2880
$ printf '%f\n' 1
0.000000
$ printf '%f\n' 1
-19222373783767455764509969957314767706032565305205751517976389011586356910287283735873496366975075385910809025031233228909443235485943598697862160225065543796566324326303010027986380740507313362109478389280032720809755605977575591712977484833714421549464179548312816619669691695969675768618124142786377660052446990574866227828104911221712770547544994592495621702453486060768120985842267603349960735550433657827156688542311891238932963870595675569407105652838611000368894193915118759451716250477855842495787217908770520219596001805968923516834815448319714521179606192054239712352794281273655344703644255690153172028191401140768961585354430400117766273628103129509500449952562778071128862373050266582261154261590345666202936676378315868263637718127652344391988248019089245237502067305800855582602326233046151999935749805709388443164385685796904118233897433899895164143403147924128628840995216653448904704.000000
$ printf '%f\n' 1
-1535939692251970798780814048195400843655654544941633379309930935432267368465724365567117453392273362651582982424721184431169329486749020702578930669204206705946793193732917405530938783202632819503328225917797530425669645856818642162664722510713747202433401571296943178862058175872487260754269792220244257605097737000140353828109440097622967061126831273879953063844519410176251996107980841451192710472925184.000000
$ printf '%f\n' 1
-559936185544451048996856397218869061556420299014564433770484452018186365447891968084773838558135844864.000000

É o bash builtin que está sendo usado, como posso ver quando digito command -v printf. alias printfdiz "não encontrado". Tenho os binários em /bin/printfe /usr/bin/printfque se comportam normalmente. Comandos equivalentes do Awk e Python se comportam normalmente. Curiosamente, ao usar sh, também está tudo bem.

Estou no Debian testing e tentei apt upgradereiniciar, mas o bug persiste.

A versão do Bash é GNU bash, version 5.2.32(1)-release (x86_64-pc-linux-gnu). Eu tentei apt reinstall bashsem sucesso. Ontem por outro motivo eu fiz um apt-get dist-upgrade.

O que eu fiz?! É selvagem.

[EDIT: depuração adicional abaixo]

  • Executei um Memtest86+ por 12 passagens e não detectei nenhum erro.
  • recompilado Bash 5.2.32 do GNU , ele tem o problema.
  • tentado como outro usuário.
  • Este bug foi relatado aqui: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078556 . Acho que vou continuar este tópico com o sistema de relatórios de bugs do Debian.

Aqui está o conteúdo de /etc/apt/sources.list:

deb https://deb.debian.org/debian/ testing main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ testing main contrib non-free non-free-firmware contrib

deb http://security.debian.org/debian-security testing-security main contrib non-free non-free-firmware contrib
deb-src http://security.debian.org/debian-security testing-security main contrib non-free non-free-firmware contrib

e também tenho /etc/apt/preferences.d/securitycomo sugerido em Melhores práticas para usuários de teste :

Package: src:chromium src:firefox src:firefox-esr src:linux src:linux-signed-amd64
Explanation: these packages are always security updates updated in unstable first
Pin: release a=/^(unstable|unstable-debug|buildd-unstable|buildd-unstable-debug)$/
Pin-Priority: 980
bash
  • 2 respostas
  • 94 Views
Martin Hope
hanjo
Asked: 2024-09-10 22:13:35 +0800 CST

jq - endereço ip mostrar em formato tabular

  • 11

Gostaria de imprimir os endereços IP e mostrar a saída em formato tabular, incluindo todos os metadados, como valid_lft, temporary, etc.

Descobri que isso ip -j addr show eth0está me dando o JSON que preciso. Se eu executar, ip -j addr show eth0 | jq -r '.[0].addr_info'os dados já estarão filtrados para o que estou interessado:

[
  {
    "family": "inet",
    "local": "192.168.x.y",
    "prefixlen": 24,
    "broadcast": "192.168.1.255",
    "scope": "global",
    "dynamic": true,
    "noprefixroute": true,
    "label": "eth0",
    "valid_life_time": 2339,
    "preferred_life_time": 2339
  },
  {
    "family": "inet6",
    "local": "2003:mm:nn:pp:ww:xx:yy:zz",
    "prefixlen": 64,
    "scope": "global",
    "temporary": true,
    "dynamic": true,
    "valid_life_time": 14342,
    "preferred_life_time": 1742
  },
  {
    "family": "inet6",
    "local": "2003:mm:nn:pp:qq:rr:ss:tt",
    "prefixlen": 64,
    "scope": "global",
    "dynamic": true,
    "mngtmpaddr": true,
    "noprefixroute": true,
    "valid_life_time": 14342,
    "preferred_life_time": 1742
  },
  {
    "family": "inet6",
    "local": "fd4e:gg:hh:ii:jj:kk:ll:mm",
    "prefixlen": 64,
    "scope": "global",
    "temporary": true,
    "dynamic": true,
    "valid_life_time": 14342,
    "preferred_life_time": 1742
  },
  {
    "family": "inet6",
    "local": "fd4e:gg:hh:ii:qq:rr:ss:tt",
    "prefixlen": 64,
    "scope": "global",
    "dynamic": true,
    "mngtmpaddr": true,
    "noprefixroute": true,
    "valid_life_time": 14342,
    "preferred_life_time": 1742
  },
  {
    "family": "inet6",
    "local": "fe80::qq:rr:ss:tt",
    "prefixlen": 64,
    "scope": "link",
    "noprefixroute": true,
    "valid_life_time": 4294967295,
    "preferred_life_time": 4294967295
  }
]

Eu sei que posso usar @tsvpara obter um formato de tabela e acomodar diferentes comprimentos de valores para os quais posso canalizar column -ts $'\t'.

O que não consigo descobrir é como posso iterar por todos os objetos e extrair as chaves primeiro, porque se eu não fizer isso, os valores de saída estarão em colunas incorretas, com base em quais chaves cada objeto tem (ou melhor, não tem). Já consegui extrair as chaves usando

$ ip -j addr show eth0 | jq -r '[.[0].addr_info | .[] | keys_unsorted[]] | reduce .[] as $a ([]; if IN(.[]; $a) then . else . += [$a] end)'
[
  "family",
  "local",
  "prefixlen",
  "broadcast",
  "scope",
  "dynamic",
  "noprefixroute",
  "label",
  "valid_life_time",
  "preferred_life_time",
  "temporary",
  "mngtmpaddr"
]

Agora não sei como combinar tudo isso.

Essencialmente, o seguinte está produzindo o resultado desejado, mas não gosto, porque os cabeçalhos/chaves são definidos manualmente:

$ ip -j addr show eth0 | jq -r '(["Family", "Local", "Prefixlen", "Broadcast", "Scope", "Dynamic", "Noprefixroute", "Label", "Valid_Life_Time", "Preferred_Life_Time", "Temporary", "Deprecated", "Mngtmpaddr"] | (., map(length*"-"))), (.[0].addr_info | .[] | [ .family, .local, .prefixlen, .broadcast, .scope, .dynamic, .noprefixroute, .label, .valid_life_time, .preferred_life_time, .temporary, .deprecated, .mngtmpaddr ] | map(.//"-")) | @tsv' | column -ts $'\t'
Family  Local                                  Prefixlen  Broadcast      Scope   Dynamic  Noprefixroute  Label  Valid_Life_Time  Preferred_Life_Time  Temporary  Deprecated  Mngtmpaddr
------  -----                                  ---------  ---------      -----   -------  -------------  -----  ---------------  -------------------  ---------  ----------  ----------
inet    192.168.x.y                            24         192.168.1.255  global  true     true           eth0   1917             1917                 -          -           -
inet6   2003:mm:nn:pp:ww:xx:yy:zz              64         -              global  true     -              -      14348            1748                 true       -           -
inet6   2003:mm:nn:pp:qq:rr:ss:tt              64         -              global  true     true           -      14348            1748                 -          -           true
inet6   fd4e:gg:hh:ii:jj:kk:ll:mm              64         -              global  true     -              -      14348            1748                 true       -           -
inet6   fd4e:gg:hh:ii:qq:rr:ss:tt              64         -              global  true     true           -      14348            1748                 -          -           true
inet6   fe80::qq:rr:ss:tt                      64         -              link    -        true           -      4294967295       4294967295           -          -           -

Qualquer ajuda é muito apreciada.

bash
  • 3 respostas
  • 150 Views
Martin Hope
αғsнιη
Asked: 2024-08-23 11:34:41 +0800 CST

O comando grep falha com erro de falta de memória

  • 11

Encontrei um problema de OOM (isso acontece sempre que eu o executo) ao executar

grep -Fxvf file1 file2

tamanho do arquivo1: ~200MB
tamanho do arquivo2: ~300MB
número de registros em cada arquivo: ~300K
comprimento médio de registros: ~1K (somente caracteres ASCII)
a diferença entre dois arquivos é de aproximadamente 18K registros

Memória livre disponível: ~16GB

Tentei com diversas grepversões diferentes e em VM, WSL e também em servidor físico, mas obtive o mesmo resultado.

Observe que executei o mesmo comando com apenas algumas linhas de ambos os arquivos para identificar que ele não entra em um loop infinito por ter algum caractere especial nos arquivos e foi bem-sucedido.

Isso é normal?

Estou tentando gerar registros file2que não existem no arquivo file1.

Já resolvi meu requisito no awkmesmo ambiente e obtive a saída em menos de 10 segundos, mas estou me perguntando por que os grepresultados em OOM.

Eu usei o mesmo comando quase sempre quando precisava consultar os mesmos requisitos e até comparei dois arquivos muito grandes, como dois arquivos com ~ 2 GB de tamanho e cada um com ~ 90 milhões de registros e registros contendo no máximo ~ 20 caracteres ASCII sem qualquer problema em as mesmas caixas.

Usei GNU grep2.7, 2.16 no SLES12 e GNU grep3.7 no Ubnutu 22.04 no WSL.

linux
  • 2 respostas
  • 471 Views
Martin Hope
youni
Asked: 2024-07-27 16:24:27 +0800 CST

Como remover pacote com dependências no APT?

  • 11

Desejo manter meu sistema limpo e escrevo quais pacotes foram instalados para poder removê-los mais tarde. Mas às vezes as dependências permanecem.

Eu instalei o libasound2-plugin-equalpacote e ele também entrou caps. Eu removi libasound2-plugin-equal, mas aptnão removi caps.

root@devuan:~# apt install libasound2-plugin-equal
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  caps
The following NEW packages will be installed:
  caps libasound2-plugin-equal
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 230 kB of archives.
After this operation, 632 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.devuan.org/merged daedalus/main amd64 caps amd64 0.9.26-1 [215 kB]
Get:2 http://deb.devuan.org/merged daedalus/main amd64 libasound2-plugin-equal amd64 0.6-8 [14.9 kB]
Fetched 230 kB in 1s (211 kB/s)               
Selecting previously unselected package caps.
(Reading database ... 268554 files and directories currently installed.)
Preparing to unpack .../caps_0.9.26-1_amd64.deb ...
Unpacking caps (0.9.26-1) ...
Selecting previously unselected package libasound2-plugin-equal:amd64.
Preparing to unpack .../libasound2-plugin-equal_0.6-8_amd64.deb ...
Unpacking libasound2-plugin-equal:amd64 (0.6-8) ...
Setting up caps (0.9.26-1) ...
Setting up libasound2-plugin-equal:amd64 (0.6-8) ...
root@devuan:~# 
root@devuan:~# 
root@devuan:~# apt remove libasound2-plugin-equal
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  libasound2-plugin-equal
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 72.7 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 268570 files and directories currently installed.)
Removing libasound2-plugin-equal:amd64 (0.6-8) ...
root@devuan:~# 
root@devuan:~# 
root@devuan:~# apt autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@devuan:~# 

autoremovenão ajuda. Por que autoremovenão reage aqui visto que o capspacote foi instalado como dependência?

apt
  • 1 respostas
  • 274 Views
Martin Hope
Archisman Panigrahi
Asked: 2024-07-17 22:52:19 +0800 CST

Como solicitar que um pacote seja adicionado aos repositórios do Fedora?

  • 11

Sou co-mantenedor de um aplicativo de prevenção de fadiga ocular chamado SafeEyes .

O aplicativo já está disponível em muitas distribuições, mas não no Fedora.

Qual é o procedimento para adicionar um novo aplicativo aos repositórios oficiais do Fedora?

fedora
  • 2 respostas
  • 841 Views
Martin Hope
VaTo
Asked: 2024-06-29 01:52:27 +0800 CST

Como posso confirmar com certeza que um CVE foi mitigado em um sistema RHEL?

  • 11

Estou com esse problema, estou tentando ver se um grupo de servidores está vulnerável ao CVE CVE-2024-1086 então o que faço no servidor é rpm -qa --changelog kernel | grep 2024-1086, e recebo isso como saída:

- netfilter: nf_tables: reject QUEUE/DROP verdict parameters (Florian Westphal) [RHEL-24009 2262126] {CVE-2024-1086}, o que acho que significa que o cve foi mitigado nesse sistema. Porém, o cliente diz que a varredura que eles estão usando para verificar se o sistema está vulnerável ainda está mostrando que o servidor está vulnerável, você sabe se com essa saída posso dizer que a varredura deles está dando um falso positivo ou existe alguma outra forma de confirmar com certeza que o sistema não está mais vulnerável a esse CVE?

rhel
  • 1 respostas
  • 404 Views
Martin Hope
Ray Andrews
Asked: 2024-06-11 09:52:40 +0800 CST

você pode criar seu próprio .iso para pendrive?

  • 11

Então eu tenho meu pendrive com minha própria cópia em execução do Debian instalada e inicializando bem. A questão é esquecer o EFI e apenas usar o bom e velho LILO para torná-lo inicializável - sem complicações, sem confusão. Mas os pendrives, dizem eles, não gostam de gravações constantes, e uma cópia em execução do Debian está sendo gravada constantemente pelo Firefox e pelo log do systemd e tudo mais. Então, me ocorre que, desde uma instalação padrão de USB 'ao vivo' que você cria a partir de um arquivo .ISO, como aprendi, nunca grava nada - todas as gravações aparentes são em uma imagem na RAM e evaporam quando você registra fora. Então me ocorre perguntar se posso ou não fazer meu próprio ISO do meu próprio sistema e fazê-lo funcionar como um USB 'ativo' também. O principal é o ISO? ou existe alguma outra maneira? Talvez tenha que ser EFI?

live-usb
  • 2 respostas
  • 1534 Views
Martin Hope
tinlyx
Asked: 2024-05-16 16:55:34 +0800 CST

Como usar o jq para obter um valor de dois caminhos possíveis?

  • 11

Eu queria usar jq para obter um valor específico bde dois caminhos possíveis ( e apenas esses dois ). Então, basicamente, eu queria dizer

jq '(path1 OR path2) | .b'

que deve funcionar se bestiver em um dos dois caminhos path1ou path2. Se ambos os caminhos tiverem b, o primeiro caminho terá precedência.

Por exemplo, ambos

echo '{"b":2}' | jq '.b'
echo '{"a": {"b":2}}' | jq '.a.b'

extrair bem .e .a.

Posso de alguma forma dizer

echo ... | jq '(MAGIC).b'

para fazê-lo funcionar para ambas as entradas acima?

O que tentei até agora é usar o operador recursivo ..:

jq '[..|.b?|values]|first'

Isso funciona em ambos:

echo '{"b":2}' | jq '[..|.b?|values]|first'
echo '{"a": {"b":2}}' | jq '..|.b?|values|first'

dar 2. Mas não é específico o suficiente e também permite bestar em qualquer lugar da árvore abaixo .. Também é difícil de ler. Além disso, pode não funcionar se os dois caminhos não estiverem relacionados entre pais e filhos.

(Isto é com jq 1.7 no Ubuntu 24.04 LTS)

json
  • 1 respostas
  • 255 Views
Martin Hope
Porcupine
Asked: 2024-05-09 23:38:11 +0800 CST

printf - armazena a saída de string formatada em uma variável

  • 11

Em vez do seguinte

printf '%s\t%s\t%s\t%s\n' 'index' 'podcast' 'website' 'YouTube'

Quero armazenar a saída do printf em uma variável Results, como posso fazer isso?

bash
  • 1 respostas
  • 458 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve