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

Zhro's questions

Martin Hope
Zhro
Asked: 2025-04-11 05:50:15 +0800 CST

Como evitar uma condição de corrida em que um script executa um programa que só deve ser executado uma vez por script

  • 5

Tenho um script que executa um programa que desejo executar apenas como uma instância por script. Por exemplo, tenho um script "a" e um script "b", cada um executando um programa Java. Quero que apenas uma instância do programa Java seja executada a partir do script "a" e apenas uma instância seja executada a partir do script "b". Nesse caso, não posso simplesmente testar se um executável específico está em execução, porque é a JVM. O próprio script também é encerrado após o início do aplicativo, então não posso testar para ver se ele já está em execução.

Posso gravar o PID do processo em execução em um arquivo e testar, mas estou entrando em uma condição de corrida, pois preciso esperar o programa iniciar e então registrar o PID em um arquivo. Se o script de inicialização for executado mais de uma vez muito rápido, acabo com várias instâncias do programa em execução. Há também a rara ocasião em que duas instâncias tentam gravar no arquivo PID ao mesmo tempo, criando outro problema, em que agora tenho um processo órfão do qual não tenho nenhum registro PID.

Qual é um método confiável para bloquear um programa dentro de um script de inicialização, de modo que eu execute apenas uma única instância de um script sem uma condição de corrida?

Observe que isso não se limita especificamente à execução de programas Java. Este foi apenas um exemplo.

bash
  • 3 respostas
  • 51 Views
Martin Hope
Zhro
Asked: 2024-02-17 14:06:03 +0800 CST

Como codificar defensivamente no Bash para erros de tempo de execução não tratados em expressões lógicas?

  • 8

Acabei de encontrar um erro em que faltava uma função em meu script. Já traplevantei essas exceções para parar o script mais cedo, mas notei que isso não ocorreu. Investigando isso mais a fundo, descobri que os erros que ocorrem como parte de uma expressão lógica são considerados parte dessa expressão e não um erro em si.

Veja este trecho, por exemplo:

function _raise_error() {
    >&2 echo "Error on line $1"
}

trap '_raise_error $LINENO' ERR

# STDERR: _missing_function: command not found
_missing_function && echo "This expression is never true"

echo "This is printed, because the missing function error is not trapped"

Existe uma maneira melhor de escrever esse código de forma mais defensiva para que o script termine mais cedo em uma função ausente em uma expressão lógica? Não tenho certeza de como capturar isso. Usar set -enão faz diferença nesse caso, pois já estou interceptando o erro e finalizando o script.

Meu melhor palpite é que preciso encerrar a linha false. Isso é menos do que desejável, mas não consigo pensar em uma maneira melhor.

_missing_function && { echo "This expression is never true"; } || false
bash
  • 1 respostas
  • 188 Views
Martin Hope
Zhro
Asked: 2019-09-22 12:04:24 +0800 CST

Ferramentas do Samba relatando "Não é possível inicializar o contexto de mensagens"

  • 3

Ao executar várias ferramentas que interagem com o Samba, recebo a seguinte mensagem no terminal:

Não foi possível inicializar o contexto de mensagens

Por exemplo:

$ smbclient //localhost/$USER
Unable to initialize messaging context
Enter WORKGROUP\mattd's password: 

$ smbtree
Unable to initialize messaging context
Enter WORKGROUP\mattd's password: 

O que significa e por que estou vendo?

Estou executando o Fedora 30.

samba
  • 3 respostas
  • 11803 Views
Martin Hope
Zhro
Asked: 2019-09-19 04:05:02 +0800 CST

Os arquivos baixados do FileZilla têm "-????????? ? ? ? ?" permissões e não consigo chown com root

  • 0

Eu baixo alguns arquivos através do FileZilla e todos os arquivos em subdiretórios têm este "???" permissão do proprietário/grupo:

-????????? ? ? ? ?            ? file_a.txt
-????????? ? ? ? ?            ? file_b.txt
-????????? ? ? ? ?            ? file_c.txt

Isso ocorre quando visualizado a partir de "user_a", mas quando visualizado como root, é identificado corretamente em "user_a:user_a". Eu tentei, chown -R <owner>:<group> path/mas as permissões ainda parecem corretas como root e ainda parecem "???" em "usuário_a".

Eu tentei copiar a pasta e corrigir as permissões, mas ainda está confuso. Como posso consertar isso?

permissions
  • 1 respostas
  • 148 Views
Martin Hope
Zhro
Asked: 2019-09-15 16:57:25 +0800 CST

Dicas para lembrar a ordem dos parâmetros para ln?

  • 82

Eu costumava lnescrever links simbólicos por anos, mas ainda recebo a ordem dos parâmetros errados.

Isso geralmente me faz escrever:

ln -s a b

e, em seguida, olhando para a saída para me lembrar.

Sempre imagino ser a -> bcomo leio quando na verdade é o contrário b -> a. Isso parece contra-intuitivo, então acho que estou sempre me questionando.

Alguém tem alguma dica para me ajudar a lembrar a ordem correta?

symlink ln
  • 14 respostas
  • 7526 Views
Martin Hope
Zhro
Asked: 2019-09-14 13:39:33 +0800 CST

Origens do uso do diálogo modal "salvar alterações" de "fechar sem salvar", sua falta de aceleradores de teclado e como interagir com esses diálogos

  • 2

Vindo do Windows, estou muito acostumado com a caixa de diálogo modal "salvar alterações" muito comum, fornecendo uma opção "sim/não/cancelar" com "S" e "N" sendo fornecidos como aceleradores de teclado (teclas de atalho).

No Linux, muitas vezes tento fechar um documento não salvo e, em seguida, descarto a caixa de diálogo digitando "N" - mas isso não funciona. Não apenas o paradigma é diferente ("fechar sem salvar" versus "não"), mas nunca parece haver aceleradores.

Eu tentei no Sublime Text:

insira a descrição da imagem aqui

Pluma:

insira a descrição da imagem aqui

Gedit:

insira a descrição da imagem aqui

Escritor do LibreOffice:

insira a descrição da imagem aqui

Este é o paradigma normal para este tipo de diálogo no Linux? Quais são suas origens? é um diálogo fornecido pelo GTK?

Para um diálogo muito comum, acho muito hostil. Em vez disso, tenho que usar a guia para percorrer qual botão está focado. E isso nem sempre é óbvio dependendo do tema usado.

E por que não há aceleradores? Eles não são suportados em diálogos modais?

Estou tentando me familiarizar com o paradigma modal comum (pelo menos para GTK) para que não precise pensar sobre isso e apenas enfileirar minhas ações inteiramente no teclado. Para este conjunto de amostra, parece que "tab, enter" é a maneira de dispensar e fechar sem salvar.


Acho interessante que o Sublime Text use a caixa de diálogo "Sim/Não/Cancelar" esperada no Windows e a caixa de diálogo "Fechar sem salvar/Cancelar/Salvar" no Linux (como outros aplicativos lá). Eu suspeito que isso teria que ter sido uma decisão ativa.

linux
  • 3 respostas
  • 497 Views
Martin Hope
Zhro
Asked: 2019-09-01 12:51:39 +0800 CST

O jogo do vinho não funciona e diz que requer 256 cores?

  • 2

Estou tentando executar os truques básicos de ortografia do Yobi no Wine, mas estou recebendo esta mensagem de erro:

O CD Basic Spelling Tricks requer suporte para 256 cores.

Este é um jogo feito originalmente para Windows 3.1, então é um jogo win16, se isso faz a diferença. Ele funciona bem no DOSBox (DOS > Win 3.11 > Game), mas roda muito devagar no netbook que estou tentando configurar para jogos antigos do DOS. Espero que executá-lo no Wine acelere as coisas, se eu conseguir fazê-lo funcionar.

wine
  • 1 respostas
  • 1173 Views
Martin Hope
Zhro
Asked: 2019-08-26 14:24:49 +0800 CST

Qual é a diferença entre java-openjdk e java-latest-openjdk?

  • 0

Eu estava olhando os pacotes disponíveis para Java no Fedora e vi isso:

java-openjdké a versão java-latest-openjdk12.0.0.33-4 é a versão 12.0.2.9-1

É óbvio que "latest" é a versão mais recente. Mas qual é a diferença de outra forma? Ambos estão em lançamento. O pacote mais recente é apenas de ponta com mais bugs em potencial?

fedora java
  • 1 respostas
  • 131 Views
Martin Hope
Zhro
Asked: 2019-08-22 19:42:31 +0800 CST

Por que o procedimento para construir RPMs é tão isolado?

  • 1

Estou aprendendo a criar RPMs para meus próprios pacotes. Normalmente eu posso fazer tudo enquanto estiver logado em minha própria conta, mas as instruções sobre como fazer RPMs sempre parecem querer que você use alguma outra conta.

Um tutorial que segui utilizado rpm-builde rpmdevtools. O rpmdev-setuptree, por exemplo, cria um diretório rpmbuild/no meu diretório inicial e (não o diretório atual como eu esperava). As instruções também sugeriram que eu criasse uma buildconta separada. Isso parece excessivo e dificulta o gerenciamento de arquivos entre essa conta especial e a conta em que estou desenvolvendo.

A documentação oficial do fedora usa os pacotes fedora-packagere fedora-reviewe então prossegue para que você se adicione ao grupo de simulação . Mais uma vez, sugere:

Você também pode criar um usuário separado e usá-lo para fazer o desenvolvimento RPM. Certifique-se de que o usuário faça parte do grupo simulado e insira o fedora-packager-setupcomando.

Ambas as instruções incentivam a criação de um RPM em uma conta separada.

Por que é isso? Minha reação automática é tentar contornar isso de alguma forma por conveniência. Que problemas posso enfrentar ao criar RPMs da minha conta normal?

fedora rpm
  • 3 respostas
  • 207 Views
Martin Hope
Zhro
Asked: 2019-08-21 18:33:40 +0800 CST

/etc/yum/repos.d já foi uma coisa?

  • 2

Em alguns lugares que li, os usuários mencionaram o caminho /etc/yum/repos.dao lado do /etc/yum.repos.d. Esse foi um caminho que realmente foi usado em algum momento?

Eu até carreguei o CentOS 5.11 e ainda está /etc/yum.repos.d. Esse outro caminho já foi usado? Parece estranho que o diretório repos.d não esteja dentro do /etc/yum. Alguém conhece a história disso?

rhel centos
  • 1 respostas
  • 117 Views
Martin Hope
Zhro
Asked: 2018-12-06 01:37:03 +0800 CST

Como obtenho uma lista das portas que pertencem aos serviços firewall-cmd pré-configurados?

  • 8

Eu quero abrir as seguintes portas no meu firewall CentOS 7:

UDP 137 (NetBIOS Name Service)
UDP 138 (NetBIOS Datagram Service)
TCP 139 (NetBIOS Session Service)
TCP 445 (SMB)

Posso adivinhar que os nomes dos serviços incluem sambaTCP 445, mas não sei se as outras portas têm um nome de serviço pré-configurado.

Posso listar serviços suportados com:

$ firewall-cmd --get-services

Mas isso não me diz quais portas estão configuradas com os serviços.

Existe uma maneira de listar quais portas pertencem a esses serviços para que eu possa grep pela que preciso?

centos systemd
  • 1 respostas
  • 10470 Views
Martin Hope
Zhro
Asked: 2018-11-28 11:46:32 +0800 CST

Quais são os casos de uso para o WWN de um disco rígido?

  • 7

Percebi hoje ao configurar um novo sistema que o disco representado por /dev/disk/by-idtambém tinha um link WWN com o qual eu não estava familiarizado:

insira a descrição da imagem aqui

Minha pesquisa sugere que este é um "Número Mundial" ou algum tipo de ID exclusivo para a unidade. Qual é o caso de uso para isso e quando seria apropriado usá-lo em relação ao outro ID representado da unidade, número de série e UUID (de /dev/disk/by-uuid).

Links para documentação para este identificador WWN também seriam úteis. Estou recebendo muitos acessos em coisas de canal de fibra no Google. Este é um caso de uso relacionado ou algo completamente diferente?

disk uuid
  • 1 respostas
  • 8698 Views
Martin Hope
Zhro
Asked: 2018-11-27 20:43:35 +0800 CST

Como recarregar o NetworkManager após instalar o NetworkManager-wifi

  • 4

Eu tenho uma placa wireless instalada e nmclirelata que ela é "não gerenciada" com texto em vermelho que um "plugin está faltando".

Pesquisando ao redor me levou a identificar que eu preciso instalar o pacote "NetworkManager-wifi" necessário. Após a instalação por uma conexão com fio, a mensagem vermelha sobre a falta do plug-in não desapareceu até depois de uma reinicialização, após a qual o dispositivo foi gerenciado e conectado automaticamente a uma rede que eu configurei nmtui.

Minha pergunta é: como posso recarregar o NetworkManager para reconhecer o plug-in necessário para que o wifi funcione sem reinicialização?

Eu tentei:

$ service network reload

Isso não teve nenhum efeito.

centos wifi
  • 1 respostas
  • 5185 Views
Martin Hope
Zhro
Asked: 2018-11-23 12:50:17 +0800 CST

O que está causando a corrupção da minha partição EFI ao inicializar o CentOS após a instalação?

  • 1

Estou tentando instalar o CentOS 7.5 x64 mais recente no PC de fator de forma pequeno ASUS Eee Box EB1037 . É um Intel Celeron J1900 (Bay Trail) com uma NVIDIA GeForce GT 820M integrada. A mídia de instalação será bloqueada, a menos que o Nouveau seja desabilitado primeiro. Isto é bom. Mas após a instalação e as reinicializações subsequentes, a partição EFI parece corrompida.

Esta pergunta NÃO é sobre como solucionar problemas de inicialização, mas sim entender por que exatamente essa falha de inicialização está corrompendo a partição EFI e causando falha no GRUB.

Aqui está o procedimento de instalação:

  • CentOS 7.5 queimado para USB
  • Boot to USB installer (grub bootloader)
  • Edite a opção grub para adicionar "nouveau.modeset=0"

insira a descrição da imagem aqui

  • Definir fuso horário
  • Seleção de software: instalação mínima (sem alterações)
  • Rede e nome do host: Definir nome do host
  • Definir partições manuais como "partições padrão" (sem LVM) e layout de partição automático

insira a descrição da imagem aqui

  • A instalação continua
  • Definir senha root e conta de usuário (como administrador)

insira a descrição da imagem aqui

  • Instalação concluída
  • Reinício
  • O GRUB do disco rígido aparece

insira a descrição da imagem aqui

Não alterei nenhuma das configurações do GRUB (como desabilitar o Nouveau). Veja as configurações padrão aqui:

insira a descrição da imagem aqui

Tentei inicializar o CentOS com esses padrões e travou como esperado (já que não desabilitei o Nouveau). Tudo o que eu podia ver era uma tela preta. O monitor estava ligado, mas os indicadores do teclado e a luz de fundo, bem como o LED do mouse óptico, estavam todos desligados. O teclado não era responsável por ctrl-alt-del.

Performed a hard reset by holding the power button. System booted up to the hard disk GRUB menu a second time with no problems. Tried to boot using defaults again and it locked the same as before (as expected, as I still haven't disabled Nouveau).

Note that I still have the CentOS USB installer inserted. Upon this THIRD reboot (after the previous two post-install reboots), the system takes me to the USB GRUB instead of the hard disk one. Odd. Popped out the CentOS USB and rebooted with ctrl-alt-del.

Now I see a message from GRUB flash on the screen briefly indicated thing it cannot read the EFI partition:

insira a descrição da imagem aqui

After a moment it disappears and I see this:

insira a descrição da imagem aqui

The system is now no longer bootable to the EFI partition.

Why is this happening? How is the EFI partition corrupting?

Additional Information

Secure Boot is Enabled in the BIOS and cannot be disabled but is set to "Other OS".

insira a descrição da imagem aqui

There is only ONE SATA port inside the unit and it is populated by a Samsung 850 Pro 500GB SSD. Despite being set to AHCI and visible as SATA1 and the only disk connected to the system, CentOS identifies it as sdb instead of sda, possibly because it thinks that the USB install media is sda. It does not present the USB drive as a second disk during installation, however, and displays the Samsung SSD as the only visible drive.

insira a descrição da imagem aqui

GRUB sees the attached CentOS install USB media as (hd0) and the onboard SATA as (hd1) when both as inserted. The onboard SATA is seen as (hd0) when the USB media is removed. Interestingly, the onboard SATA is seen as sd by the CentOS installer but hd by GRUB.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Highlights

  • System has an Nvidia graphics processor (Optimus?)
  • Secure Boot is ENABLED (cannot be disabled)
  • BIOS presents USB disks as attached SATA disks? (sda during installation, hd0 in GRUB)

PLEASE NOTE

I can already get the system to boot by removing the USB stick after installation, setting nouveau.modeset=0 and updating GRUB afterwards at /boot/efi/EFI/centos/grub.cfg.

The question is to understand what is corrupting the EFI partition!

Photo of the system booted:

insira a descrição da imagem aqui

centos system-installation
  • 1 respostas
  • 3607 Views
Martin Hope
Zhro
Asked: 2018-08-05 10:01:27 +0800 CST

Onde está a opção "separador de grupo" listada na documentação do grep?

  • 1

Meu sabor de grep suporta --group-separatore --no-group-separatorsó descobri isso pesquisando no Google como resolver um problema:

https://stackoverflow.com/questions/2168065/how-do-i-get-rid-of-line-separator-when-using-grep-with-context-lines

Eu tentei:

grep --help | grep separator

e

man grep
/group-separator

sem resultados.

Onde eu teria encontrado essas informações sem o Google e o Stack Exchange?

grep man
  • 1 respostas
  • 1466 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