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
Martian2020
Asked: 2025-04-08 12:02:36 +0800 CST

Qual é (se houver) o descritor de arquivo de /dev/tty?

  • 5

O problema urgente de ler a entrada do teclado no pipeline é resolvido pela resposta em https://stackoverflow.com/questions/15230289/read-keyboard-input-within-a-pipelined-read-loop :

mycommand-outputpiped | while read line
do
    # do stuff
    read confirm < /dev/tty
done

Por que funciona? Não ttyredireciona para a entrada padrão? Posso obter um descritor de arquivo /dev/ttye usá-lo read -u fdem vez disso? TIA

bash
  • 1 respostas
  • 30 Views
Martin Hope
Manuel Jordan
Asked: 2025-04-08 00:58:28 +0800 CST

Qual é o pacote "mysql-client" correto para instalar no Debian 12?

  • 5

No Debian Desktop 12, se eu quiser fazer uma conexão remota como cliente para um servidor MySQL em outra máquina na LAN, preciso usar o mysqlcomando, quando ele é executado acontece o seguinte:

manueljordan@vm163:~$ mysql 
bash: mysql: command not found

Se for executado o apt search mysql-clientcomando acontece o seguinte:

manueljordan@vm163:~$ apt search mysql-client
Sorting... Done
Full Text Search... Done
default-mysql-client/stable 1.1.0 all
  MySQL database client binaries (metapackage)

default-mysql-client-core/stable 1.1.0 all
  MySQL database core client binaries (metapackage)

Portanto:

  • Qual é o pacote correto para instalar? default-mysql-client ou default-mysql-client-core ? E por quê?

E só por curiosidade:

  • O que existem dois pacotes?
  • Qual é a diferença entre eles?

desde já, obrigado

debian
  • 2 respostas
  • 33 Views
Martin Hope
jsx97
Asked: 2025-04-07 23:19:50 +0800 CST

Ocultar mensagem "Bem-vindo ao nano"

  • 5

Essa pode ser uma pergunta bem boba, mas eu tentei muito e não consegui descobrir sozinha.

GNU nano 8.4. Quando inicio, aparece uma mensagem de boas-vindas:

Bem-vindo ao nano. Para ajuda básica, digite Ctrl+G.

Como ocultá-lo permanentemente? Tentei iniciar o nano usando nano -x, mas isso oculta toda a barra de ferramentas, enquanto eu quero ocultar apenas a mensagem de boas-vindas.

nano
  • 2 respostas
  • 50 Views
Martin Hope
Vee
Asked: 2025-04-07 10:24:19 +0800 CST

Não é possível acessar arquivos estáticos para subdomínio no nginx

  • 5

Tenho um site estático e um backend de aplicativo Django em execução usando gunicorn na porta 8000 em um servidor.

Estou coletando arquivos CSS para o site estático em /mywebsite-deployment/staticDir/homepage/css/static_website.css, e o CSS para os modelos Django em /mywebsite-deployment/staticDir/dashboard/css/dashboard.css;

Consigo acessar o site estático usando mywebsite.com e www.mywebsite.com com CSS, e o backend do Django usando app.mywebsite.com, mas seu CSS não carrega.

O modelo no qual estou tentando acessá-lo se parece com isso:

{% load static %}

<html>

<head>
    <link href={% static '/dashboard/css/dashboard.css' %} rel="stylesheet" type="text/css" media="all" />
</head>

Meu aplicativo Django settings.py se parece com isso:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'staticFiles'),
]

STATIC_ROOT = '/mywebsite-deployment/staticDir/'

STATIC_URL = 'static/'

Esta é minha configuração nginx:

    ssl_certificate         /etc/letsencrypt/live/mywebsite.co/fullchain.pem;    # managed by Certbot
    ssl_certificate_key     /etc/letsencrypt/live/mywebsite.co/privkey.pem;      # managed by Certbot
    
    root            /mywebsite-deployment/staticDir/;
    index           /homepage/index.html;
    error_page 404 500 502 503 504  /error.html;
    proxy_intercept_errors on;      # If proxy errors, let nginx process it
    
    # error_log /var/log/nginx/error.log info;
    
    server {
        # If host isn't a mywebsite host, close the connection to prevent host spoofing
        server_name _;
        listen 80 default_server;
        listen 443 ssl default_server;
    
        return 444;
    }
    
    # Redirect HTTP requests to HTTPS
    server {
        server_name mywebsite.co www.mywebsite.co app.mywebsite.co;
        listen 80;
        return 301  https://$host$uri;  # managed by Certbot
    }
    
    # Handle HTTPS static webserver requests
    server {
        server_name mywebsite.co www.mywebsite.co;
        listen 443  ssl;    # managed by Certbot
    }
    
    # Proxy HTTPS app requests to backend gunicorn service
    server {
        server_name     app.mywebsite.co;
        listen 443  ssl;    # managed by Certbot
    
        location / {    # Catch all - Match everything else not matched in any above location blocks within this server block
            proxy_redirect off;    # Stop redirects from proxy
    
            proxy_connect_timeout 3;    # Abort if service is unreachable
            proxy_read_timeout 3;       # Abort if the service is unresponsive
    
            include     proxy_params;
            proxy_pass  http://localhost:8000;
        }
    
        # If Gunicorn Django proxy app throws an error (like 404), nginx will handle it and show custom error page
        location /error.html {
            internal;
        }
    }

Quando inspeciono o modelo HTML no navegador, vejo que a URL que ele está tentando carregar é: https://app.mywebsite.co/static/dashboard/css/dashboard.css , mas não carrega.

Posso acessar o CSS da página inicial como: https://www.mywebsite.co/homepage/css/static_website.css e o CSS do painel como: https://www.mywebsite.co/dashboard/css/dashboard.css

Como posso usar o caminho correto para visualizar o CSS no painel? Acho que isso é um problema de configuração do nginx, mas sou novo no nginx e não sei como resolver. Por favor, me ajudem.

nginx
  • 1 respostas
  • 33 Views
Martin Hope
Manuel Jordan
Asked: 2025-04-07 09:05:48 +0800 CST

Qual é a diferença e a relação entre as opções "--default-cache-ttl" e "--max-cache-ttl"?

  • 5

Sobre o GPG é mencionado o gpg-agente li a seguinte resposta:

  • gpg não pede senha

Onde são mencionadas as opções --default-cache-ttle --max-cache-ttl. Então, encontrei esta fonte oficial:

  • homem - GPG-AGENT(1)
--default-cache-ttl n
Set the time a cache entry is valid to n seconds. The default is 600 seconds.
Each time a cache entry is accessed, the entry's timer is reset.
To set an entry's maximum lifetime, use max-cache-ttl
 Note that a cached passphrase may not be evicted immediately from memory if
no client requests a cache operation. This is due to an internal housekeeping
function which is only run every few seconds.

--max-cache-ttl n
Set the maximum time a cache entry is valid to n seconds.
After this time a cache entry will be expired even if it
has been accessed recently or has been set using gpg-preset-passphrase.
The default is 2 hours (7200 seconds).

Portanto, considere a questão principal da seguinte forma:

  • Qual é a diferença e a relação entre as opções --default-cache-ttle ?--max-cache-ttl

E como perguntas secundárias as seguintes:

  • O que é exatamente o cache entry?
  • Quais são os critérios para gpg-agentsaber quando considerar/aplicar as opções --default-cache-ttle ?--max-cache-ttl

Portanto, quero entender claramente os pontos/cenários/critérios sobre quando e por que foram considerados os 600 segundos (10 minutos) e 7200 segundos (2 horas) de acordo com cada opção.

gpg
  • 1 respostas
  • 22 Views
Martin Hope
Gridzbi Spudvetch
Asked: 2025-04-07 07:03:20 +0800 CST

Executando um script baseado em eventos brutos de um HID específico?

  • 8

Um problema um pouco estranho para você. Eu tenho um antigo tablet 2 em 1 que funciona bem, exceto que o driver da tela sensível ao toque trava ocasionalmente, deixando-o inutilizável. Tenho um script simples para reiniciá-lo, mas quando ele não está conectado ao teclado, isso pode ser um problema. Minha solução proposta é executar o script quando eu pressionar as duas teclas de volume físicas simultaneamente (sendo esses botões o único outro dispositivo de entrada que terei conectado de forma confiável). Estou usando o Fedora Wayland. Isso parece viável e, em caso afirmativo, como poderia ser feito?

scripting
  • 3 respostas
  • 284 Views
Martin Hope
elbarna
Asked: 2025-04-07 06:12:49 +0800 CST

Como evitar perda de dados ao usar blkdiscard no NetBSD

  • 5

No Linux, este comando

fstrim -av

Removerei todos os blocos não utilizados (particularmente interessante em discos de VM e necessário em SSD para preservar/obter uma duração maior). O NetBSD tem um comando semelhante chamadoblkdiscard

Este comando limpa o disco inteiro, tornando-o inutilizável (corrija-me se eu estiver errado)

blkdiscard -v /dev/rwd...

Vejo que há um sinalizador que começa a descartar após alguns bytes (ou MB)

blkdiscard -v -f 256m -m 128m /dev/rwd0c

Suponha que minha partição use 6 GB de dados, para fazer um descarte seguro (meus dados ainda permanecem), esse é o comando correto?

blkdiscard -v -f 6000m -m 128m /dev/rwd0c
ssd
  • 1 respostas
  • 34 Views
Martin Hope
Huckle
Asked: 2025-04-07 06:05:07 +0800 CST

O que está segurando um descritor de arquivo para este dispositivo de bloco, também conhecido como por que losetup -d não removeu um dispositivo de bloco

  • 7

Há uma série de postagens sobre losetup -d /dev/loop0não remover um dispositivo lookback, mesmo que ele tenha retornado um código de retorno bem-sucedido. Acredito que a causa raiz dessas postagens é que o dispositivo de bloco tem o autoclearsinalizador definido, então losetupapenas chama , LOOP_CLR_FDmas não LOOP_CTL_REMOVE. Algum outro processo ainda deve estar segurando um descritor de arquivo, então o dispositivo de loop não é desanexado nem removido. Isso é confirmado via strace:

$ sudo losetup -J -l  | jq '.'     
{
  "loopdevices": [
    {
      "name": "/dev/loop0",
      "sizelimit": 0,
      "offset": 0,
      "autoclear": true,
      "ro": false,
      "back-file": "/example/backing_file",
      "dio": false,
      "log-sec": 512
    }
  ]
}


$ sudo strace -ff losetup -d /dev/loop0
...
newfstatat(AT_FDCWD, "/dev/loop-control", {st_mode=S_IFCHR|0660, st_rdev=makedev(0xa, 0xed), ...}, 0) = 0
openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_CLOEXEC) = 3
ioctl(3, LOOP_CLR_FD)                   = 0
close(3)                                = 0
...

A resposta comum é (a) procurar por todos os arquivos abertos em qualquer sistema de arquivos montado a partir do dispositivo de loop e, então, (b) desmontar o dispositivo de loop. Normalmente lsofe /proc/**/fdsão recomendados.

Meu problema é que estou tendo esse problema para dispositivos de bloco que nunca foram montados em primeiro lugar. Não consigo, nem que a minha vida dependesse disso, descobrir qual processo está segurando um descritor de arquivo para esse dispositivo de loop e, portanto, não consigo fazê-lo fechar.

Um teste rápido do programa C mostra que posso remover o sinalizador de limpeza automática do dispositivo de bloco:

$ sudo strace -ff --verbose=ioctl /tmp/remove-autoclear
...
openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_CLOEXEC) = 3
ioctl(3, LOOP_CLR_FD)                   = 0
close(3)                                = 0

write(1, "INFO: Result of sending LOOP_CLR"..., 57) = 57
INFO: Result of sending LOOP_CLR_FD to /dev/loop0 was: 0

openat(AT_FDCWD, "/dev/loop-control", O_RDONLY|O_CLOEXEC) = 3
ioctl(3, LOOP_CTL_REMOVE, 0)            = -1 EBUSY (Device or resource busy)
write(2, "ERROR(16): Sending LOOP_CTL_REMO"..., 94) = 94
ERROR(16): Sending LOOP_CTL_REMOVE to /dev/loop-control for device 0: Device or resource busy

openat(AT_FDCWD, "/dev/loop0", O_RDONLY|O_CLOEXEC) = 4
ioctl(4, LOOP_GET_STATUS, {lo_number=0, lo_offset=0, lo_flags=LO_FLAGS_AUTOCLEAR, lo_name="/example/backing_file", ...}) = 0
write(1, "INFO: Autoclear bit for /dev/loo"..., 40) = 40
INFO: Autoclear bit for /dev/loop0 is 1

ioctl(4, LOOP_SET_STATUS, {lo_number=0, lo_offset=0, lo_flags=0, lo_name="/example/backing_file", ...}) = 0
ioctl(4, LOOP_GET_STATUS, {lo_number=0, lo_offset=0, lo_flags=0, lo_name="/example/backing_file", ...}) = 0
write(1, "INFO: Successfully removed autoc"..., 56) = 56
INFO: Successfully removed autoclear bit for /dev/loop0
close(4)                                = 0

ioctl(3, LOOP_CTL_REMOVE, 0)            = -1 EBUSY (Device or resource busy)
write(2, "ERROR(16): Sending LOOP_CTL_REMO"..., 94) = 94
ERROR(16): Sending LOOP_CTL_REMOVE to /dev/loop-control for device 0: Device or resource busy

exit_group(16)                          = ?
+++ exited with 16 +++







INFO: Result of sending LOOP_CLR_FD to /dev/loop0 was: 0
ERROR(16): Sending LOOP_CTL_REMOVE to /dev/loop-control for device 0: Device or resource busy
INFO: Autoclear bit for /dev/loop0 is 1
INFO: Successfully removed autoclear bit for /dev/loop0
ERROR(16): Sending LOOP_CTL_REMOVE to /dev/loop-control for device 0: Device or resource busy

$ sudo cat /sys/dev/block/7:0/loop/autoclear
0

Mas, curiosamente, isso não faz com que losetup -d /dev/loop0falhe com um erro grave. Isso parece ser porque LOOP_CLR_FDdefine o sinalizador de limpeza automática novamente. Isso não é relevante para encontrar o processo que mantém o descritor de arquivo aberto, eu apenas observei porque é "ação assustadora à distância" e explica por que losetupnunca tenta chamar LOOP_CTL_REMOVE.

Alguma dica sobre como encontrar o processo que contém um descritor de arquivo para /dev/loop0que eu possa limpá-lo corretamente sem reinicializar?

$ sudo ls -l /proc/**/fd | grep loop0       
$ sudo ls -l /proc/**/fd | grep backing_file
$ sudo lsof | grep loop0
$ sudo lsof | grep backing_file
$ sudo mount | grep loop
loop-device
  • 1 respostas
  • 55 Views
Martin Hope
user19315471
Asked: 2025-04-07 03:53:43 +0800 CST

hostnamectl: fonte do Firmware Age

  • 11

Quando executo hostnamectlo comando, recebo esta saída:

$ hostnamectl 
 Static hostname: myhostname
       Icon name: computer-desktop
         Chassis: desktop 🖥
      Machine ID: 12345e09a3a2464689c345fe7b12345f
         Boot ID: 123451b9f31ff4c166f8368c1f86666ad
Operating System: openSUSE Leap 15.6              
     CPE OS Name: cpe:/o:opensuse:leap:15.6
          Kernel: Linux 6.4.0-150600.23.33-default
    Architecture: x86-64
 Hardware Vendor: ASRock
  Hardware Model: B450 Pro4 R2.0
Firmware Version: P5.60
   Firmware Date: Thu 2022-10-20
    Firmware Age: 2y 5month 2w 3d  <<<<<<<<<< this

Eu me pergunto: Firmware Agede onde vem isso? Não conheço nenhum outro comando que possa retornar esse valor. Como e de onde ele hostnamectlobtém esse valor?

systemd
  • 3 respostas
  • 199 Views
Martin Hope
gatorback
Asked: 2025-04-06 13:53:01 +0800 CST

Como solucionar problemas de duckDNS no MacOS / Safari

  • 5

Um servidor NCP (nextcloudpi) está estacionado em myfqdn.duckdns.org

O Safari retorna:

insira a descrição da imagem aqui

O Chrome retorna:

insira a descrição da imagem aqui

Um navegador Safari privado retorna a página da Web NCP esperada.

Procuro um procedimento de solução de problemas para diagnosticar o problema: Gostaria de saber se há um problema de certificado.

networking
  • 1 respostas
  • 28 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