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
lei hu
Asked: 2025-03-14 16:34:51 +0800 CST

Como configurar o sistema para que usuários em um grupo de usuários específico possam executar programas que exigem o recurso cap_sys_admin?

  • 5

Meu objetivo principal é permitir que usuários em um grupo específico executem programas que exigem a capacidade cap_sys_admin (por exemplo, perf) após SSH-ing no Ubuntu 22.04. Uma solução simples é modificar perf_event_paranoid, mas essa mudança é global e não desejada. Eu verifiquei o processo bash gerado por sshd — getpcaps gera =, indicando nenhuma capacidade, então perf não pode ser executado sem sudo.

Aprendi que o sshd usa PAM para gerenciamento de privilégios. Modifiquei sshd_config para definir UsePAM como sim (incerto se necessário para autenticação de chave SSH) e adicionei cap_sys_admin @mygroup antes de none * em /etc/security/capability.conf. Após o relogin, o processo do shell ganhou cap_sys_admin=i, mas essa capacidade está apenas no conjunto herdável, impedindo a execução direta do perf. A documentação do capacity.conf confirma que afeta apenas o conjunto herdável via pam_cap.so. Agora estou preso em mais ajustes de configuração para atingir meu objetivo.

linux
  • 1 respostas
  • 32 Views
Martin Hope
Devs
Asked: 2025-03-14 16:34:12 +0800 CST

Não é possível alterar a zona ativa do firewall

  • 5

Estou tentando atualizar meu firewall, mas agora quero revertê-lo para público

então basicamente o firewall está em execução e foi

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0

depois de adicionar algumas portas e serviços, li na documentação que o tráfego de entrada deveria ser bloqueado, exceto para http e https, o que me levou a alterar a zona de pública para abandonar o processo

firewall-cmd --set-default-zone=drop

Acontece que era uma documentação errada e, portanto, eu a reverti usando o mesmo comando

firewall-cmd --set-default-zone=public

recarregue-o e ainda permanece o mesmo, mesmo quando eu corro

 firewall-cmd --list-all

agora mostra público em vez de soltar , mas é assim

public
  target: default
  icmp-block-inversion: no
  interfaces:

Eu verifiquei a zona ativa e ainda está me dando queda como zona ativa

firewall-cmd --get-active-zones
drop
  interfaces: eth0

Eu me certifico de executar firewall-cmd --reloado tempo todo depois de alterar, mas ela continua dropcomo a zona ativa. Eu até reiniciei e ela continua a mesma. Como faço para alterar a zona ativa de drop para pública como era?

Estou executando Linux no Amazon Linux 2

firewall
  • 1 respostas
  • 14 Views
Martin Hope
user722814
Asked: 2025-03-14 13:51:04 +0800 CST

Acessando uma variável definida dentro de um shell sudo de fora

  • 5

Estou tentando criar um script de shell com os requisitos abaixo:

  1. ssh para um servidor RHEL
  2. sudo para um usuário do aplicativo
  3. apagar o conteúdo de um diretório (/tmp/logs)
  4. Copie os logs do aplicativo de um diretório (/app/logs/*.log) para outro diretório (/tmp/logs)
  5. Compacte o diretório /tmp/log com a data atual (AppLogs_$CURRENT_DATE.zip)
  6. Conceda permissão total ao arquivo zip recém-criado
  7. Copie o nome do arquivo zip recém-criado para uma variável (MY_VAR)

Consegui criar com sucesso o script que executa todas as etapas mencionadas acima.

Os passos de 3 a 7 são executados dentro do bloco sudo. Agora, depois de sair do bloco sudo, mas ainda dentro do script shell, quero acessar essa variável (MY_VAR) fora do bloco sudo. De alguma forma, não consigo fazer essa parte. Agradeço se alguém puder me orientar sobre como ler essa variável de fora do bloco sudo.

linux
  • 1 respostas
  • 47 Views
Martin Hope
Andreas
Asked: 2025-03-14 01:38:42 +0800 CST

Depois de instalar os drivers Nvidia 390 do Debian Sid, fiquei com a renderização de software

  • 5

Meu objetivo final é usar uma Geforce GTX 550 Ti em um desktop Linux Gnome moderno. Como as versões recentes do Ubuntu pararam de suportar o driver Nvidia 390 que é necessário para isso, escolhi o Debian Sid (também conhecido como Unstable), que oferece instruções de instalação aparentemente diretas para ele .

Depois de tentar instalá-los, fico com uma tela de erro GUI de baixa resolução "Algo deu errado" em branco em vez da tela de login (sem botões, sem cursor), e alternar para um console não me dá um prompt de login, mas apenas uma tela preta e um cursor não responsivo no canto superior esquerdo. Então preciso reiniciar e fazer uma inicialização segura para acessar o console. Atualização: Depois de um, full-upgradeagora acabo com renderização de software, o que é tecnicamente melhor do que ter que reiniciar, mas não muito.

O que eu fiz

  1. Instalei o Debian Testing amd64 weekly DVD build. Isso estava funcionando perfeitamente no desktop Gnome usando nouveaue Wayland.
  2. Preenchi meu sources.listcom o conteúdo apropriado, pois estava completamente vazio, exceto por uma referência à mídia de instalação (iso USB). Antes disso, eu não conseguia nem fazer um apt update. Não sei por que fiquei com um essencialmente vazio sources.listimediatamente após uma instalação limpa.
  3. Habilitado unstableadicionando uma linha em sources.list, de acordo com as instruções do Debian para habilitar unstableem Testes .
  4. Segui as instruções para o driver Nvidia 390 para Sid na página wiki vinculada acima. Sim, esqueci de instalar os cabeçalhos do kernel antes de fazer isso.
  5. Acabei com um sistema que não funcionava como descrito acima, então desinstalei os dois pacotes de driver novamente usando safe-boot ( nvidia-legacy-390xx-driver firmware-misc-nonfree) e removi todos os três links simbólicos da nvidia etc/modprobe.d(um dos quais estava na lista negra nouveau). Recuperei um sistema funcional.
  6. Percebi meu erro e instalei os cabeçalhos do kernel ( linux-headers-amd64) de acordo com as instruções.
  7. Tentei instalar o driver novamente ( nvidia-legacy-390xx-driver firmware-misc-nonfree), mas obtive o mesmo resultado de antes, após uma reinicialização.
  8. Não vi muita ação de compilação acontecendo ao instalar os pacotes de driver, então tentei --reinstallo nvidia-legacy-390xx-kernel-dkmspacote, que finalmente mencionou "compilar" algo.
  9. Ainda acabei na mesma situação, ou seja, sem tela de login e sem acesso ao console durante a inicialização normal.

Não tenho certeza se acidentalmente baguncei algo e não consertei corretamente, ou qual seria o problema neste momento. Qual seria o melhor curso de ação para solucionar esta situação?

Também tomei uma full-upgradeboa medida para garantir que todos os pacotes estivessem atualizados.

Observações

  • Quando o sistema está funcionando (com nouveau), o Gnome desktop funciona bem no Wayland, mas exibe uma tela de erro de GUI "Algo deu errado" em tela cheia ao fazer login com o Gnome no Xorg. Ele tem um botão para "sair" no qual posso clicar com a barra de espaço (sem cursor do mouse). O MATE desktop funciona bem, e também usa o Xorg. Estou bem com o Gnome no Xorg temporariamente não funcionando — afinal, é Testing + Unstable, mas gostaria de pensar que pelo menos a tela de login ( gdm) e o console devem funcionar se os drivers gráficos funcionarem (assim como com nouveau)?
  • Uma razão pela qual escolhi especificamente o Debian Testing , ou seja, o Debian 13 Trixie, em vez do Debian 12 é que eu precisava garantir que tinha o mais recente nouveaupossível . Isso porque, mesmo no Ubuntu 24.10 mais atualizado, o nouveaudriver invariavelmente congela o sistema inteiro depois de algum tempo (eu determinei isso experimentalmente; o Ubuntu está travando apenas quando nouveaué carregado e nunca quando executado apenas em gráficos integrados da Intel). Estou tentando maximizar minhas chances de que isso nouveaufuncione (o Windows 10 não congela, então atribuo isso aos nouveaudrivers, e não ao hardware).

Informações adicionais

fontes.lista

Por algum motivo, tive que reconstruir esse arquivo imediatamente após a instalação do sistema operacional, porque ele continha apenas a primeira linha (agora comentada).

# deb cdrom:[Debian GNU/Linux testing _Trixie_ - Official Snapshot amd64 DVD Binary-1 with firmware 20250310-03:29]/ trixie contrib main non-free-firmware

# unstable
deb http://deb.debian.org/debian unstable main contrib non-free non-free-firmware


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

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

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

Erros de log do Xorg

Elas podem não ser relevantes, já que não consigo nem acessar a tela de login e o console, e já que o MATE funciona no Xorg, mas as incluo para fins de completude até saber se podem ser descartadas.

$ grep EE /var/log/Xorg.0.log
[    74.735] Current Operating System: Linux debian 6.12.17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.17-1 (2025-03-01) x86_64
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    75.166] (EE) systemd-logind: failed to take device /dev/dri/card0: Invalid argument
[    77.033] (EE) Failed to load module "nv" (module does not exist, 0)
[    77.552] (EE) [drm] Failed to open DRM device for pci:0000:01:00.0: -19
[    77.552] (EE) open /dev/dri/card0: Invalid argument
[    77.552] (EE) open /dev/dri/card0: Invalid argument
[    77.562] (EE) Unable to find a valid framebuffer device
[    77.563] (EE) Screen 0 deleted because of no matching config section.
[    77.563] (EE) Screen 0 deleted because of no matching config section.
[    77.653] (II) Initializing extension MIT-SCREEN-SAVER
[    77.667] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)
[    78.331] (EE) systemd-logind: failed to take device /dev/dri/card0: Invalid argument
$ grep EE /var/log/Xorg.0.log.old
[    23.670] Current Operating System: Linux debian 6.12.17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.17-1 (2025-03-01) x86_64
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    23.970] (EE) systemd-logind: failed to take device /dev/dri/card0: Invalid argument
[    25.852] (EE) Failed to load module "nv" (module does not exist, 0)
[    26.471] (EE) [drm] Failed to open DRM device for pci:0000:01:00.0: -19
[    26.471] (EE) open /dev/dri/card0: Invalid argument
[    26.472] (EE) open /dev/dri/card0: Invalid argument
[    26.490] (EE) Unable to find a valid framebuffer device
[    26.491] (EE) Screen 0 deleted because of no matching config section.
[    26.491] (EE) Screen 0 deleted because of no matching config section.
[    26.522] (II) Initializing extension MIT-SCREEN-SAVER
[    26.535] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)
[    27.025] (EE) systemd-logind: failed to take device /dev/dri/card0: Invalid argument

Fique à vontade para perguntar qualquer outra coisa que pareça relevante e eu adicionarei.

debian
  • 1 respostas
  • 35 Views
Martin Hope
Ambre
Asked: 2025-03-14 01:32:57 +0800 CST

Não é possível definir a senha de outro usuário, mesmo como root

  • 7

Estou tendo um problema incomum. Criei o usuário e, pensei, configurei sua senha. Para contexto adicional, isso é em um ambiente de produção e estamos usando RHEL 8.10

[root@computer ~] useradd user -G wheel
[root@computer ~] passwd user
New password:
BAD PASSWORD: blah blah
Retype new password:
passwd: all authentication tokens updated successfully

Todos os usuários do Wheel têm a capacidade de fazer SSH neste servidor. Quando tentei fazer SSH no servidor usando as novas credenciais, recebi o erro "senha incorreta". Ok, então tentei fazer login na máquina diretamente usando o tty, mais uma vez, senha incorreta. Efetuei login novamente como root e tentei redefinir a senha, dessa vez verificando se estava inserindo a senha correta.

Mais uma vez, meu login foi negado devido a uma senha incorreta. Então, tentei fazer login com minha própria conta de usuário e fui negado devido à senha incorreta. Isso é muito incomum, pois consigo fazer SSH no servidor usando meu usuário pessoal com as mesmas credenciais que foram negadas.

Estou preso entre isso ser um simples erro do usuário ou se há opções de configuração do Linux (específicas para RHEL 8) que impediriam que novas senhas fossem escritas. Pensei que talvez /estivesse montado como somente leitura, mas consigo tocar em novos arquivos para /etc. Além disso, mount -l | grep "ro"não lista a partição raiz como somente leitura.

Qualquer ideia para verificar seria muito apreciada.

EDIT: Eu também acabei de perceber que, se fosse um problema somente leitura, o novo usuário que eu criei não teria sido registrado. Eu verifiquei que o usuário foi criado e adicionado ao grupo correto via cat /etc/passwdecat /etc/group

rhel
  • 1 respostas
  • 47 Views
Martin Hope
Cary
Asked: 2025-03-13 23:51:17 +0800 CST

Como consertar grep quebrado no Debian

  • 6

Atualizei meu sistema para o Debian bookworm e o processo pareceu prosseguir normalmente, mas terminou com alguns erros. Quando tento usar o apt para resolver o problema, acabo com uma tela cheia do seguinte erro:

grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8

Parece que qualquer tentativa de usar grep resulta nesse erro, não importa quão básico seja o comando. Então, suponho que grep esteja de alguma forma quebrado neste sistema agora, o que dificulta qualquer esforço para repará-lo usando apt ou dpkg, por exemplo:

$ sudo apt install -f
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up initramfs-tools (0.142+deb12u1) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-image-6.1.0-31-amd64 (6.1.128-1) ...
/etc/kernel/postinst.d/dracut:
dracut: Generating /boot/initrd.img-6.1.0-31-amd64
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8

[... 6 more times ...]

grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
dracut: Disabling early microcode, because kernel does not support it. CONFIG_MICROCODE_[AMD|INTEL]!=y
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8

[... 27 more times ...]

grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
The default plymouth plugin () doesn't exist
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8

[... 41 more times ...]

grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.1.0-31-amd64
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
W: zstd compression (CONFIG_RD_ZSTD) not supported by kernel, using gzip
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
E: gzip compression (CONFIG_RD_GZIP) not supported by kernel
update-initramfs: failed for /boot/initrd.img-6.1.0-31-amd64 with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-6.1.0-31-amd64 (--configure):
 installed linux-image-6.1.0-31-amd64 package post-installation script subprocess returned error exit status 1
Processing triggers for initramfs-tools (0.142+deb12u1) ...
update-initramfs: Generating /boot/initrd.img-6.1.0-31-amd64
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
W: zstd compression (CONFIG_RD_ZSTD) not supported by kernel, using gzip
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
E: gzip compression (CONFIG_RD_GZIP) not supported by kernel
update-initramfs: failed for /boot/initrd.img-6.1.0-31-amd64 with 1.
dpkg: error processing package initramfs-tools (--configure):
 installed initramfs-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-6.1.0-31-amd64
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
$ apt policy grep libpcre2-8-0
grep:
  Installed: 3.8-5
  Candidate: 3.8-5
  Version table:
 *** 3.8-5 500
        500 https://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status
libpcre2-8-0:
  Installed: 10.42-1
  Candidate: 10.42-1
  Version table:
 *** 10.42-1 500
        500 https://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status
$ ldd /bin/grep
        linux-vdso.so.1 (0x00007fff81ff6000)
        libpcre2-8.so.0 => /usr/local/lib/libpcre2-8.so.0 (0x00007fa6c7800000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa6c761f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa6c7c7e000)

$ LD_DEBUG=all grep 2>&1 | busybox grep pcre2_set_compile_extra_options_
    155549:     symbol=pcre2_set_compile_extra_options_8;  lookup in file=grep [0]
    155549:     symbol=pcre2_set_compile_extra_options_8;  lookup in file=/usr/local/lib/libpcre2-8.so.0 [0]
    155549:     symbol=pcre2_set_compile_extra_options_8;  lookup in file=/lib/x86_64-linux-gnu/libc.so.6 [0]
    155549:     symbol=pcre2_set_compile_extra_options_8;  lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
    155549:     grep: error: symbol lookup error: undefined symbol: pcre2_set_compile_extra_options_8 (fatal)
grep: symbol lookup error: grep: undefined symbol: pcre2_set_compile_extra_options_8
$dpkg -S {/usr,}/lib/x86_64-linux-gnu/libpcre2-8*
libpcre2-dev:amd64: /usr/lib/x86_64-linux-gnu/libpcre2-8.a
libpcre2-dev:amd64: /usr/lib/x86_64-linux-gnu/libpcre2-8.so
libpcre2-8-0:amd64: /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0
libpcre2-8-0:amd64: /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.11.2
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libpcre2-8.a
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libpcre2-8.so
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libpcre2-8.so.0
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libpcre2-8.so.0.11.2
$ (cd / && md5sum -c < /var/lib/dpkg/info/libpcre2-8-0:amd64.md5sums)
usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.11.2: OK
usr/share/doc/libpcre2-8-0/README.Debian: OK
usr/share/doc/libpcre2-8-0/changelog.Debian.gz: OK
usr/share/doc/libpcre2-8-0/changelog.gz: OK
usr/share/doc/libpcre2-8-0/copyright: OK

O problema parece esotérico e meus esforços para encontrar uma solução foram improdutivos. Alguém pode me ajudar?

debian
  • 1 respostas
  • 81 Views
Martin Hope
Ryan King Art
Asked: 2025-03-13 23:22:20 +0800 CST

Fotos carregadas on-line em ordem oposta (Firefox e Linux Mint)

  • 5

Eu frequentemente carrego grupos de fotos online, como imagens de produtos ou obras de arte. Recentemente, notei que o Firefox carrega um grupo de fotos de uma pasta na ordem oposta. Isso aconteceu em todos os sites em que tentei carregar fotos.

Exemplo: Em uma pasta no Linux, tenho:

  • Obra de arte 1.jpg
  • Obra de arte 2.jpg
  • Obra de arte 3.jpg

Quando carrego todas as fotos juntas, elas são carregadas nesta ordem:

  • Obra de arte 3.jpg
  • Obra de arte 2.jpg
  • Obra de arte 1.jpg

Isso é frustrante porque tenho que reordenar manualmente as fotos toda vez que as carrego. Não me lembro de isso ter acontecido no passado, só recentemente.

Como isso acontece em todos os sites, imagino que tenha algo a ver com o Linux Mint ou o Firefox.

O que eu tentei:

Eu tentei pressionar Control A, para selecionar todas as fotos, e então carregá-las, e eu também tentei selecionar a primeira foto, então segurar shift, e selecionar a foto de baixo, e então clicar em carregar. Eu também tentei fazer isso, mas na direção oposta, então segurar shift, e selecionar a última foto, e então a primeira.

Também tentei organizar as fotos no meu navegador Fire por nome, data de modificação e ordem inversa, mas as fotos ainda são carregadas na ordem oposta.

Também tentei renomear as fotos para:

  • 001.jpg
  • 002.jpg
  • 003.jpg

E isso ainda não corrige a ordem de upload.

Isso também acontece com arquivos PNG e JPG.

linux-mint
  • 2 respostas
  • 36 Views
Martin Hope
LightBulb
Asked: 2025-03-13 22:04:24 +0800 CST

Como um kernel Linux vanilla lida com agendamento em tempo real?

  • 6

Tenho uma pergunta sobre o suporte "Realtime" no Linux/Ubuntu:

Após alguma pesquisa sobre o tópico, parece que o suporte "em tempo real" no Linux é duplo: por um lado, há o patch PREEMPT_RT , que traz recursos de "computação em tempo real" para o kernel do Linux; por outro lado, há as chamadas estratégias de agendamento "em tempo real" , como SCHED_FIFO, SCHED_RRe SCHED_DEADLINE, que estão disponíveis há muito tempo.

Mas como tudo isso acontece?

O que acontece se eu usar uma das estratégias de agendamento "em tempo real" (por exemplo, SCHED_DEADLINE) em um kernel "vanilla", ou seja, um que não tenha PREEMPT_RThabilitado? Alguém poderia supor que isso nem seja possível. Mas parece que é possível, de acordo com meu teste em um kernel "vanilla" (não em tempo real)! O que isso significa? As estratégias de agendamento "em tempo real" ainda funcionam com o kernel "não em tempo real", mas não "tão bem"? Ou isso significa que as estratégias de agendamento "em tempo real" silenciosamente são as mesmas de SHED_OTHERquando executadas em um kernel "não em tempo real"?

Além disso, supondo que eu esteja usando um kernel "em tempo real", ou seja, um que tenha habilitadoPREEMPT_RT : haverá alguma diferença, em comparação com um kernel "vanilla" (não em tempo real), se eu não iniciar explicitamente nenhum processo com uma das estratégias de agendamento "em tempo real"?

(Pergunta bônus: como a "gentileza" interage com o agendamento "em tempo real"? Tenho procurado informações, mas todas as fontes explicam "gentileza" apenas no contexto de SHED_OTHER)

linux
  • 1 respostas
  • 31 Views
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
Aravind
Asked: 2025-03-13 18:41:05 +0800 CST

Os dados são confirmados no banco de dados sem confirmação explícita

  • 6

Tenho um script de shell que insere/atualiza dados em tabelas do Oracle. O que não entendo é que não há nada explícito COMMITno script, mas os dados são confirmados no banco de dados. Como isso é possível?

Verifiquei se o sqlplus autocommitestá desligado (conectando-me ao sqlplus e executando SHOW AUTOCOMMIT;)

#! /bin/ksh

function Exec_Sql 
  { 
    echo === Executing sql:
    echo === $sql_text
    print "$sql_text;" | sqlplus -s / 2>&1 | grep -iE 'ora|error|sp2'
    if [ ! $? -eq 0 ] #No error found
    then
      v_sqlerrm=""
      return 0 #No Errors
    else
      v_sqlerrm="Contact Support - Check Log File" 
      return 1 #Error Found 
    fi
  }


sql_text="UPDATE asr_test_tab SET f_ind = 'Y'"
if Exec_Sql; then
  echo "=== Update SQL OK "
else
  echo "=== Update SQL Failed "
fi

echo Complete: `date`
exit 0;
ksh
  • 1 respostas
  • 32 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