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-320598

U. Windl's questions

Martin Hope
U. Windl
Asked: 2025-03-13 19:38:34 +0800 CST

A construção de uma árvore de amostra usando `mktemp` em um script produz os erros "mktemp: falha ao criar arquivo via modelo" e "redirecionamento ambíguo"

  • 5

Estou tentando fazer um caso de teste para um bug relacionado ao NFS, onde rm -rffalha com "Diretório não vazio" quando está vazio sempre que o inspeciono. No entanto, um script de teste simples não consegue reproduzir o erro, então tentei escrever um script que cria uma árvore de diretórios, preenche-a com arquivos e, em seguida, remove a árvore. Como suspeito que o problema esteja relacionado a algum cache de nome de arquivo, estou usando mktemppara criar nomes aleatórios como este:

#!/bin/sh
set -x
readonly LEVELS=6
readonly BASE_DIR=test-dir
DIR="$BASE_DIR"
for (( level=0; level < LEVELS; ++level ))
do
    if (( level > 0 )); then
        DIR="$(mktemp -p "$DIR")" || exit
    else
        mkdir "$DIR" || exit
    fi
    for (( i=0; i < 4; ++i ))
    do
        date > $(mktemp -p "$DIR") || exit
    done
    sleep 0.5
done
rm -rf "$BASE_DIR"

No entanto, o script falha de uma forma que não entendo, assim:

> ./test-script.sh
+ readonly LEVELS=6
+ LEVELS=6
+ readonly BASE_DIR=test-dir
+ BASE_DIR=test-dir
+ DIR=test-dir
+ (( level=0 ))
+ (( level < LEVELS ))
+ ((  level > 0  ))
+ mkdir test-dir
+ (( i=0 ))
+ (( i < 4 ))
+ date
++ mktemp -p test-dir
+ (( ++i  ))
+ (( i < 4 ))
+ date
++ mktemp -p test-dir
+ (( ++i  ))
+ (( i < 4 ))
+ date
++ mktemp -p test-dir
+ (( ++i  ))
+ (( i < 4 ))
+ date
++ mktemp -p test-dir
+ (( ++i  ))
+ (( i < 4 ))
+ sleep 0.5
+ (( ++level  ))
+ (( level < LEVELS ))
+ ((  level > 0  ))
++ mktemp -p test-dir
+ DIR=test-dir/tmp.iIbUu2ZDDN
+ (( i=0 ))
+ (( i < 4 ))
+ date
++ mktemp -p test-dir/tmp.iIbUu2ZDDN
mktemp: failed to create file via template ‘test-dir/tmp.iIbUu2ZDDN/tmp.XXXXXXXXXX’: Not a directory
./test-script.sh: line 15: $(mktemp -p "$DIR"): ambiguous redirect
+ exit

Então mktemp -p test-dirnão tem problemas, mas mktemp -p test-dir/tmp.iIbUu2ZDDNtem. Poderia ser um bug em mktemp, ou parece o bug que estou realmente procurando?

Estou ciente de que meu uso de mktempé um tanto atípico, mas enfim. O Binary vem de coreutils-8.32-150400.9.6.1.x86_64(SLES15 SP6).

Listando o diretório após a falha que vejo:

r> ll test-dir/
total 16
-rw------- 1 windl dvmed 32 Mar 13 12:03 tmp.gbslFgK2eD
-rw------- 1 windl dvmed  0 Mar 13 12:03 tmp.iIbUu2ZDDN
-rw------- 1 windl dvmed 32 Mar 13 12:03 tmp.lR5NM8zLtb
-rw------- 1 windl dvmed 32 Mar 13 12:03 tmp.p5Xcfqa3Xr
-rw------- 1 windl dvmed 32 Mar 13 12:03 tmp.YRELcRCk6G

Meu palpite é que o "redirecionamento ambíguo" ocorre devido à mktempfalha na criação de um nome de arquivo válido.

shell-script
  • 2 respostas
  • 31 Views
Martin Hope
U. Windl
Asked: 2024-05-07 18:00:17 +0800 CST

Quem muda `/proc/sys/kernel/random/boot_id` no Linux (SLES)?

  • 8

Bem, pensei que fosse lógico que o kernel mudasse /proc/sys/kernel/random/boot_iddurante a inicialização e depois mantivesse esse valor durante a execução. Pelo menos isso faria sentido para mim se o uso pretendido boot_idfosse descobrir quando a máquina foi reinicializada.

Ao monitorar o arquivo usando monit, notei que o arquivo parece mudar mesmo que a máquina não tenha reiniciado; isso significa que o carimbo de data/hora do arquivo muda, não o conteúdo.

Então, eu me pergunto quem altera os carimbos de data/hora do arquivo.

Para referência, aqui está minha configuração do monit sendo usada:

  check file bootid with path /proc/sys/kernel/random/boot_id
    #if changed timestamp then alert
    if content !=
       "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
    then alert
    if changed checksum then alert
    group local

Ao verificar os resultados do monitoramento, obtive:

File 'bootid'
  status                       OK
  monitoring status            Monitored
  monitoring mode              active
  on reboot                    start
  permission                   444
  uid                          0
  gid                          0
  size                         0 B
  access timestamp             Tue, 07 May 2024 11:01:31
  change timestamp             Tue, 07 May 2024 11:01:31
  modify timestamp             Tue, 07 May 2024 11:01:31
  content match                no
  checksum                     d174a6b860689b62417af5eccd2b17ee (MD5)
  data collected               Tue, 07 May 2024 11:46:11

Verificação cruzada que obtive:

# stat /proc/sys/kernel/random/boot_id
  File: '/proc/sys/kernel/random/boot_id'
  Size: 0               Blocks: 0          IO Block: 1024   regular empty file
Device: 4h/4d   Inode: 9770501     Links: 1
Access: (0444/-r--r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-07 11:01:31.721335498 +0200
Modify: 2024-05-07 11:01:31.721335498 +0200
Change: 2024-05-07 11:01:31.721335498 +0200
 Birth: -
# uptime
 11:49am  up 14 days  0:49,  4 users,  load average: 0.00, 0.00, 0.00

O sistema está executando SLES12 SP5 em x86_64, e os únicos "suspeitos" são cron-jobs e "snapper":

May 07 11:00:01 v04 systemd[1]: Started Session 7426 of user root.
May 07 11:00:01 v04 systemd[1]: Started Session 7428 of user root.
May 07 11:00:01 v04 systemd[1]: Started Session 7427 of user root.
May 07 11:00:01 v04 CRON[5541]: (root) CMD ([ -x /usr/lib64/sa/sa1 ] && exe
May 07 11:00:01 v04 run-crons[5606]: suse.de-snapper: OK

linux
  • 2 respostas
  • 408 Views
Martin Hope
U. Windl
Asked: 2023-11-13 15:54:41 +0800 CST

É possível verificar o endereço do peer antes de aceitar uma conexão TCP?

  • 9

Eu escrevi um servidor Perl simples que escuta em uma porta/soquete TCP, aceitando conexões. Agora eu me pergunto:

Ao querer implementar o controle de acesso baseado em endereço, é possível verificar o endereço do peer que solicita uma conexão antes de aceitá-la?

Se possível, eu poderia rejeitar a solicitação de conexão (espero) em vez de aceitar a conexão e fechá-la imediatamente novamente.

perl
  • 4 respostas
  • 1322 Views
Martin Hope
U. Windl
Asked: 2022-06-08 01:53:04 +0800 CST

O que é a carga útil IFA_UNSPEC na resposta do netlink a RTM_GETADDR?

  • 0

Eu escrevi um programa para consultar a interface Linux rtnetlink(7) usando RTM_GETADDRfor family AF_INET. Analisando a resposta, percebi que as maiores partes da resposta parecem ser IFA_UNSPECregistros de tipo de comprimento de 88 bytes (outras partes geralmente têm menos de 8 bytes de comprimento).

Saída de exemplo de depuração (para apenas uma interface):

  DB<3> r
index 1, family 2, prefixlen 8
flags permanent
host
# len 8, type 1
  address 127.0.0.1
# len 8, type 2
  local 127.0.0.1
# len 7, type 3
  label lo
# len 8, type 8
  flags permanent
# len 20, type 6
  cacheinfo: prefered forever, valid forever, cstamp 2.31, tstamp 2.31
# len 88, type 0
RT_Netlink::handle_response(lib/RT_Netlink.pm:361):

"len 88, tipo 0" é um IFA_UNSPECpedaço na resposta.

Então, estou me perguntando: o que são esses pedaços não especificados e por que eles são enviados na resposta?

Isto é o que a página de manual diz:

                        Attributes
rta_type        value type             description
─────────────────────────────────────────────────────────────
IFA_UNSPEC      -                      unspecified.
IFA_ADDRESS     raw protocol address   interface address
IFA_LOCAL       raw protocol address   local address
IFA_LABEL       asciiz string          name of the interface
IFA_BROADCAST   raw protocol address   broadcast address.
IFA_ANYCAST     raw protocol address   anycast address
IFA_CACHEINFO   struct ifa_cacheinfo   Address information.
linux networking
  • 1 respostas
  • 32 Views
Martin Hope
U. Windl
Asked: 2022-05-04 00:35:14 +0800 CST

Onde posso obter o código-fonte atual dos produtos SUSE SLES?

  • 1

Estou tendo um problema crítico de suporte com o SLES que não faz nenhum progresso mensurável (há meses). Então eu queria dar uma olhada no código-fonte; talvez eu consiga identificar o problema.

(Parece que um bug fatal foi adicionado entre o SLES15 SP2 e SP3 no Xen Hypervisor que causa falhas frequentes no servidor devido à corrupção da RAM)

A meu ver, você pode baixar imagens de DVD que devem conter o código-fonte, mas são tão antigas quanto a mídia. Significado: Você não tem a fonte dos patches atuais.

Não existe um repositório Git público onde eu possa inspecionar as alterações feitas de lançamento para lançamento ou de patch para patch? Não quero baixar imagens ISO, descompactá-las, baixar mais pacotes de origem RPM e descompactá-los etc. apenas para ver as alterações.

Eu vejo que o modelo de negócios é um pouco contra isso, mas de uma perspectiva de suporte que é vital.

sles suse
  • 1 respostas
  • 53 Views
Martin Hope
U. Windl
Asked: 2022-04-06 01:09:02 +0800 CST

Existe algum quase-padrão para adicionar "sub-subseções" em uma página de manual do UNIX?

  • 2

Eu me pergunto: Escrevendo uma página de manual do UNIX usando o manpacote de macros que existe .SH(título da seção) e .SS(subseção). Mas e se eu quiser ter "sub-subseções"?

Existe algum tipo de padrão para tal? Acho que vi algumas páginas mexendo no tamanho da fonte ( troffpelo menos) em .SS, mas gostaria de saber se realmente existe algum (quase) padrão para isso.

man
  • 2 respostas
  • 60 Views
Martin Hope
U. Windl
Asked: 2022-03-28 22:21:20 +0800 CST

Como evitar o "pager" no mailx?

  • 5

Tendo muitas mensagens de correio curtas na minha caixa de entrada, é bastante irritante que mesmo mensagens curtas sejam enviadas através de um pager (menos), exigindo pressionar 'q' antes que eu possa ver a próxima mensagem (por exemplo).

Eu li a página de manual sobre o pager, mas nenhum deles funcionou:

PAGER= mailx
set pager=
unset pager
unset PAGER

Como posso desativar o pager? Estou usando o mailx 12.5 do SLES 15 SP3.

mailx pager
  • 1 respostas
  • 269 Views
Martin Hope
U. Windl
Asked: 2022-03-17 05:39:28 +0800 CST

Como posso evitar uma quebra de linha entre opção e parâmetro usando `.RB` e `.IR`?

  • 0

Ao escrever uma página de manual de um comando, a SINOPSE contém:

.RB [ \-v
.IR version ]

Infelizmente ao formatar a SINOPSE há uma quebra de linha entre "[-v" e "versão]".

Como posso evitar isso?

Adicionando o óbvio

Conforme solicitado várias vezes, aqui está uma entrada de amostra mais longa para a falta de imaginação, bem como uma captura de tela mostrando o problema: Captura de tela da amostra formatada (área do problema destacada)

E aqui está a fonte:

.TH FOOBAR-DEMO 8 2022-03-16 "Charlie Brown" "System Administration"
.\"
.SH NAME
foobar-demo \- demonstration of manual formatting
.\"
.SH SYNOPSIS
.na
.nr hy-mode-save \n[.hy]
.hy 0
.B foobar-demo123
.RB [ \-a
.IR match_spec ]
.RB [ \-\-resource-agent
.IR match_spec ]
.RB [ \-v
.IR version ]
.RB [ \-\-version
.IR version ]
.hy \n[hy-mode-save]
.ad b
.\"
.SH DESCRIPTION
The purpose of this page is none...
groff man
  • 3 respostas
  • 114 Views
Martin Hope
U. Windl
Asked: 2022-01-25 03:36:32 +0800 CST

O "aviso: o intervalo do formato '[ob]' depende da localidade" é um bug no gawk 4.1.0?

  • 7

Enquanto escrevia algum awkcódigo eu estava usando a --lintopção para gawk4.1.0. Para minha surpresa, recebo um aviso

aviso: o intervalo do formulário `[ob]' depende da localidade

mas meu código tem apenas um foo-barfora de uma classe de caracteres. Exemplo simplificado:

{ match($2, /^uid=([^,]+),dc=foo-bar$/, m) }

Também acho que o gawk 4.2.1 não emite mais esse aviso, então é um bug no gawk?

awk locale
  • 1 respostas
  • 306 Views
Martin Hope
U. Windl
Asked: 2022-01-04 05:39:15 +0800 CST

Bug ou recurso: não é possível vincular o arquivo imutável

  • 2

Eu havia definido o atributo imutável para um arquivo que não deveria ser alterado até ser excluído (o arquivo era uma imagem de backup de uma máquina virtual). Parece que o arquivo também não pode ser vinculado, ou seja, não pode ser renomeado.

É assim que deveria ser? Comparado a um arquivo sem permissão de gravação, isso se comporta de maneira bem diferente. Não consegui encontrar uma página de manual com detalhes.

Caso seja importante: O sistema de arquivos onde o problema foi visto foi o OCFS2.

linux xattr
  • 1 respostas
  • 66 Views
Martin Hope
U. Windl
Asked: 2019-05-29 02:42:25 +0800 CST

O `declare -a A` cria um array vazio `A` no Bash?

  • 7

Cria declare -a Auma matriz vazia Ano bash ou apenas define um atributo no caso de Aser atribuído posteriormente?

Considere este código:

set -u
declare -a A
echo ${#A[*]}
echo ${A[*]}
A=()
echo ${#A[*]}
echo ${A[*]}
A=(1 2)
echo ${#A[*]}
echo ${A[*]}

Qual deve ser a saída esperada?

No Bash 4.3.48(1) recebo bash: A: unbound variableao consultar o número de elementos após declare. Eu também recebo esse erro ao acessar todos os elementos. Eu sei que as versões posteriores do Bash tratam isso de maneira diferente. Ainda gostaria de saber se declarerealmente define uma variável (estar vazia).

bash variable
  • 1 respostas
  • 3217 Views
Martin Hope
U. Windl
Asked: 2019-03-21 06:14:53 +0800 CST

Como migrar um script LSB de várias instâncias para o systemd?

  • 1

Eu escrevi um script de inicialização LSB que pode gerenciar várias instâncias do meu daemon: rcfoo startinicia todas as instâncias (que são encontradas em algum /etcarquivo de configuração), rcfoo stopinterrompe todas as instâncias, rcfoo statusexibe o status de todas as instâncias e rcfoo reloadrecarrega as atualizações do daemon com uma configuração alterada .

Primeiro, gostaria de saber como detectar as instâncias para trabalhar com algum foo@.servicearquivo de unidade systemd. AFAIK Devo especificar todas as instâncias como foo@A, foo@Be assim por diante.

Em segundo lugar, meu script LSB pode relatar um status estendido, o que significa que pode exibir se um serviço reloadé necessário (e reloadrealmente otimiza para recarregar apenas os serviços que precisam). Como posso fazer um relatório de status personalizado? Eu acho que um script deve ser usado systemd-notifypara mensagens de status personalizadas.

Felizmente, minha extensão final para o script LSB, ou seja, manipular instâncias únicas adicionando single <instance>(como em rcfoo start single A), é compatível com o systemd.

Então minha pergunta básica é a primeira.

systemd init-script
  • 1 respostas
  • 207 Views
Martin Hope
U. Windl
Asked: 2018-11-13 07:00:14 +0800 CST

Qual é a sintaxe correta para re_match() do rsyslog?

  • 1

Estou tentando filtrar mensagens indesejadas de um cron job (systemd) da saída do rsyslog. No entanto, o rsyslog sempre reclama do segundo argumento do re_match(). A regra de filtro que tenho é:

if $programname == "systemd" and re_match($msg, '^Started [Ss]ession \d+ of user ntpmon\.$') then stop

Comecei a colocar o regex entre aspas duplas e o rsyslog reclamou. Então eu coloco o regex entre aspas simples e o rsyslog ainda reclama.

A documentação é um pouco vaga:

re_match(expr, re)

    returns 1, if expr matches re, 0 otherwise. Uses POSIX ERE.

Como faço para corrigi-lo (o filtro, não os documentos)?

regular-expression rsyslog
  • 1 respostas
  • 3662 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