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
carce-bo
Asked: 2025-02-10 23:27:38 +0800 CST

Expansão estranha de variáveis ​​de shell no bash

  • 7

O manual do bash diz "O ambiente para qualquer comando ou função simples pode ser aumentado temporariamente prefixando-o com atribuições de parâmetros". Eu também entendo que variáveis ​​exportadas são passadas por padrão para subprocessos que o bash cria. Estou testando alguns comportamentos com variáveis ​​não exportadas, e o que eu não entendo é como isso funciona quando as atribuições são seguidas pelo operador ';', e então alguns outros comandos são executados.

Meu caso é o seguinte:

VAR=hello; echo $VARimprime "olá".

VAR=hello :; echo $VARimprime uma nova linha.

VAR=hello; echo $VAR; bash -c 'echo $VAR'imprime "olá" e uma nova linha.

A questão é, no primeiro e terceiro comando, por que VAR está sendo expandido? Eles são comandos diferentes, com (aparentemente) nenhuma atribuição de parâmetro prefixada.

PS: Tentei no bash 4.4.20 e 5.1.16 e o ​​comportamento foi o mesmo em ambos.

bash
  • 1 respostas
  • 320 Views
Martin Hope
Jeremy
Asked: 2025-02-10 22:54:38 +0800 CST

Qual é a ordem das funções chamadas no kernel?

  • 6

Dentro de cada programa, há um main.c. Dentro do main, há uma mainfunção que é chamada antes de qualquer outra função. Lembro que dentro dos compiladores, há também uma diretiva que chama uma função definida antes de main .

__attribute__ ((constructor))

É assim que a maioria dos programas funciona. Tenho certeza de que o Linux Kernel é um caso diferente. Depois de olhar o main.carquivo em init/kernel, não parece haver uma mainfunção.

Funções são declaradas com uma __initdiretiva. Veja o exemplo abaixo:

asmlinkage __visible __init __no_sanitize_address __noreturn __no_stack_protector
void start_kernel(void)

Qual é a ordem em que o código é chamado dentro do main.cprocedimento de inicialização do Linux?

linux
  • 1 respostas
  • 50 Views
Martin Hope
Astora
Asked: 2025-02-10 21:37:13 +0800 CST

Como descobrir o comando iscsiadm para remover um disco

  • 5

Por exemplo, tenho os seguintes discos:

[root@xxx-xxxx]# lsblk
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                        8:0    0   47G  0 disk
├─sda1                     8:1    0  100M  0 part /boot/efi
├─sda2                     8:2    0    1G  0 part /boot
└─sda3                     8:3    0 45.5G  0 part
  ├─ocivolume-root       252:0    0 35.5G  0 lvm  /
  └─ocivolume-oled       252:1    0   10G  0 lvm  /var/oled
sdb                        8:16   0  100G  0 disk
└─sdb1                     8:17   0  100G  0 part
sdc                        8:32   0   50G  0 disk
└─sdc1                     8:33   0   50G  0 part
  └─oraclevg-oraclebinlv 252:2    0   50G  0 lvm  /u01
sdd                        8:48   0  100G  0 disk
└─sdd1                     8:49   0  100G  0 part
sde                        8:64   0  100G  0 disk
└─sde1                     8:65   0  100G  0 part
sdf                        8:80   0  100G  0 disk
└─sdf1                     8:81   0  100G  0 part
sdg                        8:96   0  100G  0 disk
└─sdg1                     8:97   0  100G  0 part
sdh                        8:112  0  100G  0 disk
└─sdh1                     8:113  0  100G  0 part
sdi                        8:128  0  100G  0 disk
└─sdi1                     8:129  0  100G  0 part
sdj                        8:144  0  100G  0 disk
└─sdj1                     8:145  0  100G  0 part
sdk                        8:160  0  100G  0 disk
└─sdk1                     8:161  0  100G  0 part

Como saber qual comando devo executar para remover /dev/sdk?

Eu sei que o comando é

sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:xxxxxxxxxxx-xxxxxxxxxx-p 169.xxx.x.xx:3260 -u
sudo iscsiadm -m node -o delete -T iqn.2015-12.com.oracleiaas:xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxx-p 169.xxx.x.xx:3260

Mas como saber qual iqne IPusar para remover /dev/sdk?

linux
  • 1 respostas
  • 25 Views
Martin Hope
Matt S.
Asked: 2025-02-10 20:41:16 +0800 CST

Lista de ip em loop através do geoiplookup e apaga linhas que não correspondem aos critérios

  • 6

Agradecemos antecipadamente por qualquer ideia que você apresentar.

Meu projeto atual consiste em tentar fazer um loop de um arquivo contendo uma lista de milhares de endereços IP por meio do geoiplookup e direcioná-lo ao sed para excluir todas as linhas que não correspondem aos critérios.

A lista é apenas uma lista de endereços IP:

1.2.3.4
5.6.7.8
9.10.11.12
.
.
.

Em seguida, executo geoiplookup ip.ad.dre.sscomo root e obtenho:

[root@system ipset]# geoiplookup 4.2.2.2
GeoIP Country Edition: US, United States

se o IP estiver dentro dos EUA.

Meu objetivo é excluir todas as linhas do arquivo, se o IP deles não estiver nos EUA.

O que tentei não está funcionando:

#!/bin/bash

for ip in $(cat /tmp/iplist.txt); do
     geoiplookup $ip | sed '/GeoIP Country Edition: US, United States/!d'
done

Alguma sugestão? Recomendações de outra abordagem seriam muito apreciadas.

@terdon Desculpe não ter atualizado antes, estive ocupado.

Adicionar qualquer um a esta pergunta ou comentário bagunça a formatação do texto. Desculpe, novato no Stack...deixe-me descobrir isso.

OK, atualização.

depois de alterar e executar o primeiro código do @terdon:

#!/bin/bash

while read ip; do
  if ! geoiplookup "$ip" | grep -q ': US, United States$'; then
    sed -i "/^$ip$/d" /tmp/iplist.txt
  fi
done < /tmp/iplist.txt

ele roda sem erros, mas endereços IP não americanos ainda estão na lista.

Eu estava usando o último exemplo com odeclare -a badLines

scripts#geoiplookup 172.168.155.63
GeoIP Country Edition: GB, United Kingdom

scripts#grep 172.168.155.63 /tmp/iplist.txt
172.168.155.63

Assim que eu descobrir como fazer o copiar e colar funcionar corretamente na pergunta, atualizarei.

@Ed Morton Ambos os exemplos produzem o mesmo erro na linha "done", linha 7 em um e linha 9 no outro.

./filter_ips.sh: line 7: syntax error near unexpected token `done'
./filter_ips.sh: line 7: `   done < "${@:--}"'

@Miri B Eles funcionam, mas ainda há endereços IP de fora dos EUA na lista.

shell-script
  • 3 respostas
  • 53 Views
Martin Hope
Clodoaldo
Asked: 2025-02-10 19:46:33 +0800 CST

Inicializando a partir da linha de comando Grub bash

  • 5

O sistema Fedora 41 travou durante a atualização do kernel e fiquei com um prompt de resgate do Grub. insira a descrição da imagem aqui Então tentei inicializar a partir do bash do Grub. insira a descrição da imagem aqui Depois, ele pediu a senha da partição raiz criptografada insira a descrição da imagem aqui e não conseguiu montar /sysroot . O que estou perdendo?insira a descrição da imagem aqui insira a descrição da imagem aqui

Editar

Conforme apontado na resposta do @telcoM, a partição criptografada estava em /dev/mapper.

Mas ainda não consigo montá-lo porque ele faz parte de um grupo de volume lvm e não consigo encontrar o volume lógico correto, pois não há vgscan e lvdisplay neste ambiente. insira a descrição da imagem aqui Como fazer isso?

fedora
  • 1 respostas
  • 29 Views
Martin Hope
Vesta Tian
Asked: 2025-02-10 18:55:50 +0800 CST

Como a resolução reversa do daemon avahi pode estar funcionando enquanto a resolução avançada não está?

  • 5

Após reiniciar meu servidor, notei que o nome do host não estava resolvendo. Verifiquei firewall-cmdpara ver se mdns/ 5353/udpestava aberto, o que estava.

Depois, fui verificar se o daemon Avahi estava em execução, e estava.

[vestatian@etune ~]$ systemctl status avahi-daemon
● avahi-daemon.service - Avahi mDNS/DNS-SD Stack
     Loaded: loaded (/usr/lib/systemd/system/avahi-daemon.service;>
     Active: active (running) since Mon 2025-02-10 15:13:27 +08; 

Além disso, sudo netstat -tulnmostrou que o servidor estava de fato escutando aqui

udp        0      0 0.0.0.0:5353            0.0.0.0:*

Foi depois que executei os comandos abaixo que percebi que o mdns estava de fato resolvendo, mas apenas ao contrário. O que avahi-daemonpode estar causando esse comportamento?

vestatian@pegasus:~/sources/frappe_podlet$ avahi-resolve -n etune.local
Failed to resolve host name 'etune.local': Timeout reached
vestatian@pegasus:~/sources/frappe_podlet$ avahi-resolve -a 192.168.50.241
192.168.50.241  etune

Informações adicionais:

Operating System: Red Hat Enterprise Linux 9.5 (Plow)     
     CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos
          Kernel: Linux 5.14.0-503.21.1.el9_5.x86_64
    Architecture: x86-64
linux
  • 1 respostas
  • 10 Views
Martin Hope
Cosimo
Asked: 2025-02-10 17:54:26 +0800 CST

Como fixar um pacote apt em uma versão e *falhar* se ele não estiver disponível

  • 6

Gostaria de fixar um pacote específico, digamos redis-server, em uma versão específica, no meu caso 7.0.*, e isso parece simples de fazer com:

Package: redis-server
Pin: version 7.0.*
Pin-Priority: 1001

Agora, eu também gostaria de fazer com que apt a falha ocorresse quando a versão 7.0.* não estivesse disponível, seja porque há apenas versões mais novas disponíveis, por exemplo, 7.2.* ou 7.4.*, ou talvez porque apenas versões mais antigas, como a 6.*, estejam disponíveis.

Não consigo encontrar uma maneira de fazer isso. Li vários recursos apenas, consultei man 5 apt_preferences, mas ainda não tenho certeza de como.

Tentei combinar a regra de fixação anterior com outra com prioridade -1, como no seguinte:

Package: redis-server
Pin: release *
Pin-Priority: -1

Mas isso parece tornar todas as versões indisponíveis, infelizmente. Aqui está o que estou vendo:

$ apt-cache policy redis-server
redis-server:
  Installed: (none)
  Candidate: 5:7.0.15-1build2
  Version table:
     5:7.0.15-1build2 500
        500 [http://no.archive.ubuntu.com/ubuntu](http://no.archive.ubuntu.com/ubuntu) noble/universe amd64 Packages

$ cat > /etc/apt/preferences.d/redis-server
Package: redis-server
Pin: version 7.0.15*
Pin-Priority: 1001

Package: redis-server
Pin: release *
Pin-Priority: -1

$ apt-cache policy redis-server
redis-server:
  Installed: (none)
  Candidate: (none)
  Version table:
     5:7.0.15-1build2 -1
        500 [http://no.archive.ubuntu.com/ubuntu](http://no.archive.ubuntu.com/ubuntu) noble/universe amd64 Packages

Eu esperava que essa configuração fornecesse um candidato disponível, já que existe um (7.0.15), mas isso não funciona.

Observe que um resultado bem-sucedido para mim é:

  • definir uma versão desejada, por exemploredis-server=7.0.*
  • forneça um arquivo apt preferences.d de modo que: ** quando qualquer versão 7.0.* estiver disponível, o apt instalará essa versão ** quando nenhuma versão 7.0.* estiver disponível, o apt falhará ao não instalar nada

Um resultado ruim é quando o redis-server é instalado, mas com uma versão do pacote que não corresponde ao que eu especifiquei como requisito (portanto, diferente de 7.0.*).

Isso está no Ubuntu 24.04, embora eu ache que não haja nada específico para o 24.04 ou para o Ubuntu aqui.

Alguma ideia?

ubuntu
  • 1 respostas
  • 22 Views
Martin Hope
Franck Dernoncourt
Asked: 2025-02-10 07:44:50 +0800 CST

Como posso configurar o ncdu para que ele use toda a altura da tela?

  • 4

Eu uso ncduno Ubuntu 20.04.5 LTS (Focal Fossa). Eu acesso ele via terminal no JupyterLab. Como eu posso configurar ncdupara que ele use toda a altura da tela?

A captura de tela a seguir mostra que ncdunão utiliza toda a altura da tela:

insira a descrição da imagem aqui

Valores de $LINESe $COLUMNS:

user@server:~/tmp$ echo $LINES $COLUMNS
35 94

Eu gostaria de ter:

insira a descrição da imagem aqui

ncdu
  • 1 respostas
  • 28 Views
Martin Hope
Jeremy
Asked: 2025-02-10 06:57:15 +0800 CST

Carregando bootconfig no kernel Linux

  • 6

Estou lendo o código do kernel que carrega a configuração de inicialização. Em main.c o seguinte código é executado.

err = parse_args("bootconfig", tmp_cmdline, NULL, 0, 0, 0, NULL,
             bootconfig_params);

na linha 428. Eu abro parse_args, que, internamente, chama parse_one (ambos em kernel/params.c) e parece que, como const struct kernel_param *paramsé NULL, ele nunca irá iterar sobre nenhum parâmetro em parse_one.

Sei que deve haver algo que estou esquecendo aqui. O resto da função depois das linhas 431 e 432 static void __init setup_boot_config(void)nunca é executada, até onde posso ver. A configuração de inicialização deve ser analisada.

Em init/main.c https://elixir.bootlin.com/linux/v6.13.1/source/init/main.c static void __init setup_boot_config(void)

Em kernel/params.c https://elixir.bootlin.com/linux/v6.13.1/source/kernel/params.c parse_one(..) parse_args(..)

setup_boot_config(void) >> parse_args(..) >> parse_one(..) retornaENOENT

setup_boot_config(void) verificações

if (IS_ERR(err) || !(bootconfig_found || IS_ENABLED(CONFIG_BOOT_CONFIG_FORCE)))

e retorna. O xbc_init(..)nunca é chamado. Há algo faltando aqui.

linux
  • 1 respostas
  • 38 Views
Martin Hope
Alain Reve
Asked: 2025-02-10 01:50:51 +0800 CST

Como posso converter um gif animado em quadros individuais e depois voltar para gif animado?

  • 7

Quero modificar manualmente um gif animado. Então, estou tentando convertê-lo em frames individuais (editáveis), depois dos quais posso desenhar minha modificação e então remontar os frames.

Primeiro eu converto um mp4 de 31 segundos de duração em gif animado:

ffmpeg   -i Daisies.mp4   -r 15   -vf scale=512:-1   -ss 00:00:03 -to 00:00:06   DaisiesOK.gif

Este gif animado está OK.

Então eu converto esse gif animado em quadros individuais:

convert DaisiesOK.gif Daisies.png

O primeiro quadro parece bom, exceto que está em 256 cores, mas os próximos são muito claros, cheios de pixels transparentes.

Esses quadros para gif animado:

convert -delay 20 -loop 0 *.png Daisies.gif

O vídeo é muito feio, as margaridas têm "sombras" brancas, o lugar de onde elas começaram (elas estão balançando) fica marcado com bordas brancas de margaridas.

Se eu tentar usar jpeg em vez de png, é ainda pior, a maior parte do vídeo fica preta.

Como posso extrair os frames preservando todas as informações de cor? O problema vem do imagemagick ou do ffmpeg?

ffmpeg
  • 2 respostas
  • 578 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