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 / user-140503

Harald's questions

Martin Hope
Harald
Asked: 2025-04-10 16:59:57 +0800 CST

Despejar o rastreamento de pilha do bash em caso de erro com parâmetros de função

  • 7

Com a função

function fail() {
  local msg="$*"
  echo $msg at
  for i in ${!FUNCNAME[@]}; do
    echo "  ${FUNCNAME[$i]} ${BASH_SOURCE[$i]}:${BASH_LINENO[$i]}"
  done
  exit 1
}

Recebo um bom rastreamento de pilha quando ele é chamado para sair. Seria ainda mais informativo se eu pudesse obter os parâmetros das funções na pilha de chamadas. Isso é possível?

bash
  • 1 respostas
  • 78 Views
Martin Hope
Harald
Asked: 2024-06-13 18:44:39 +0800 CST

Descriptografando vários arquivos mais rapidamente com gpg

  • 5

O programa pass é um utilitário de linha de comando para armazenar senhas e dados extras de formato livre em pequenos arquivos criptografados com gpg. Ele fornece um subcomando grep em particular para encontrar senhas por meio de dados extras.

Mas esse subcomando grep é dolorosamente lento na minha máquina. Tenho quase 200 senhas armazenadas e internamente cada arquivo é descriptografado gpgassim (sem a timefrente, é claro):

% time gpg -d --quiet --yes --compress-algo=none --no-encrypt-to stackoverflow.gpg
  the password output
user=0,000 sys=0,006 wall=0,382 (1,61)

O tempo de parede é de quase 0,4 segundos, o que equivale a cerca de 1 minuto para percorrer todos os arquivos.

O gpg-agentestá rodando e eu tenho esta versão:

gpg (GnuPG) 2.2.27

Duas suspeitas de por que isso é lento:

  1. A inicialização gpge a comunicação gpg-agentsão lentas, apoiadas pelo fato de que os tempos de usuário + sistema são pequenos em comparação.
  2. gpg-agenté lento, apoiado pelo fato de que após uma pass grepexecução seu tempo cumulativo de CPU aumenta em 60 segundos, correspondendo perfeitamente ao tempo total da execução completa.

Juntos, ambos apontam para gpg-agent, embora eu não tenha ideia de por que o agente deveria ser tão lento. Com pseu vejo isso funcionando como

/bin/gpg-agent --sh --daemon

Alguém pode esclarecer se ~ 0,3 segundos de CPU é razoável para o agente por arquivo ou se há uma maneira de melhorar isso?

EDITAR: Outras descobertas

Anexando straceao agente, encontro isto:

20200 14:57:03.701648 getrusage(RUSAGE_SELF, {ru_utime={tv_sec=133, tv_usec=890780}, ru_stime={tv_sec=0, tv_usec=99975}, ...}) = 0
20200 14:57:03.701666 clock_gettime(CLOCK_PROCESS_CPUTIME_ID, {tv_sec=133, tv_nsec=990762100}) = 0
20200 14:57:04.063523 getpid()          = 18035

onde temos 360ms entre clock_gettimea getpidchamada.

E com ltrace:

20472 15:04:55.035574 strlen("my-password-here")                                                      = 10
20472 15:04:55.035641 gcry_kdf_derive(0x7d884b82c008, 10, 19, 2)                                = 0
20472 15:04:55.394727 gcry_cipher_setkey(0x7d884b82cbc0, 0x7d884b82c030, 16, 0x7d884b83c000)    = 0

Então gcry_kdf_deriveleva 360ms. Faça o que fizer, posso armazenar em cache o resultado por alguns segundos com alguma configuração. (... vai buscar o código fonte).

gpg
  • 1 respostas
  • 37 Views
Martin Hope
Harald
Asked: 2023-11-09 17:49:13 +0800 CST

O awk pode ser informado para contar o comprimento da sequência de caracteres em vez do comprimento da sequência de bytes para formatos printf '%10s'

  • 8

Experimente isso

echo 'Ü X' | awk '{printf("|% 2s|% 2s|\n", $1, $2)}'

para uma saída de |Ü| X|. Obviamente awkconta o comprimento de bytes, não o comprimento de caracteres do Ü, então a contagem é 2 e nenhum preenchimento à esquerda com espaço é necessário, como é para o X.

É possível executar awkem um modo que conta o comprimento dos caracteres do %<count>s printfpadrão, não o comprimento dos bytes?

A mesma pergunta existe bashpara printf: https://superuser.com/a/1599024/345087 . Espero que a resposta não seja a mesma: "passagem para libc printf" :-/

EDITAR em vez de comentar para melhor visibilidade: eu não estava usando gawk, mas qualquer versão que o Ubuntu 22.04 tivesse instalado para mim. Não me ocorreu que nada gawkpudesse ser instalado atualmente :-/ Obrigado pelas respostas detalhadas.

awk
  • 1 respostas
  • 162 Views
Martin Hope
Harald
Asked: 2020-01-08 04:55:56 +0800 CST

Encaminhe a porta no host local para algum host remoto:porta

  • 1

Suponha que haja algum servidor rodando em remotehost.some.where:4444. Eu tenho um software que insiste em se conectar ao localhost:5555. Eu posso encaminhar isso sshcom

ssh -L 5555:remotehost.some.where:4444 myuser@localhost

Mas isso requer uma conexão ssh desnecessária com localhost, que a adição de -Nnão impediria. Como posso fazer esse encaminhamento de porta sem o login, possivelmente com outra ferramenta?

port-forwarding
  • 2 respostas
  • 1550 Views
Martin Hope
Harald
Asked: 2019-11-21 03:09:07 +0800 CST

Sobrecarga de agendamento do Linux em ordens de magnitude?

  • 1

Eu li que o Linux tem um agendador O(1), mas isso não me diz realmente quanto tempo uma mudança de contexto leva aproximadamente. Alguém tem alguns números atuais?

Eu sei que depende de muitos fatores como tipo de CPU, frequência, conectividade DRAM, caches e outros, mas eu ficaria feliz em saber a ordem de magnitude em mili, micro, nano segundos ou o número aproximado de ciclos de processador necessários para antecipar um processo, decidir pela execução do próximo processo e realmente fazê-lo funcionar.

linux kernel
  • 1 respostas
  • 448 Views
Martin Hope
Harald
Asked: 2019-01-19 05:28:30 +0800 CST

Defina a função bash que não aparece no xtrace (set -x)

  • 5

Em um script bash tenho uma log()função que é usada em vários lugares, assim como uma logs()função que desvia muita linha para arquivos log(). Quando executo partes do script com set -x, obviamente todos os comandos dentro logs()e log()são rastreados também.

Eu gostaria de definir logs()e log()tal que pelo menos seu conteúdo, na melhor das hipóteses, até mesmo sua chamada seja suprimida da set -xsaída.

bash function
  • 3 respostas
  • 995 Views
Martin Hope
Harald
Asked: 2018-08-28 06:46:25 +0800 CST

Matar o processo pelo fusor em vez do pidfile?

  • 0

Recentemente desenvolvi o hábito de matar processos com

fuser -k -n tcp $PORT

que dificilmente pode matar o processo errado. Eu prefiro isso do que mexer em um pidfile que pode ou não estar ainda lá ou pode ou não conter o pid correto (OK, eu sou um pouco dramático aqui :-)

No entanto, o script de parada típico que eu tropeço ainda usa um pidfile.

Estou faltando um recurso importante da abordagem pidfile ou um recurso incorreto do fusor approach. Meu melhor palpite é que fusernão está disponível. Embora a julgar pelos resultados do mecanismo de pesquisa, bsd, debian, suse, centos, aix, solaris parecem tê-lo.

kill pidfile
  • 2 respostas
  • 823 Views

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