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
Fadeway
Asked: 2025-02-09 19:28:57 +0800 CST

Um diretório cujo conteúdo pode sempre ser excluído por qualquer pessoa

  • 5

Um servidor Debian é usado por várias pessoas. Cada usuário usa sua própria conta. Os usuários carregam e usam grandes arquivos binários em /opt/cache. Se /opt/cacheestiver cheio, os carregadores fazem rm -r $(ls -t | tail)para remover os binários mais antigos (que podem ser agrupados em subpastas).

Os usuários geralmente não conseguem limpar o cache por causa de arquivos com 644permissões. Posso, de alguma forma, permitir que todos os usuários excluam o conteúdo de /opt/cache, independentemente do que foi carregado nele?

Fiz o seguinte para fazer com que todos os arquivos fossem atribuídos ao cache_usersgrupo, mas isso não ajuda se os arquivos não forem graváveis ​​no grupo:

chown blabla:cache_users /opt/cache
setfacl -Rdm u::rwx,g::rwx,o::rwx /opt/cache
chmod 2775 /opt/cache
debian
  • 1 respostas
  • 47 Views
Martin Hope
saeedgnu
Asked: 2025-02-09 15:04:09 +0800 CST

cpulimit: detectar falha / status de saída no Linux

  • 5

Estou usando cpulimitum script Bash para executar um certo comando (ffmpeg) com uso limitado de CPU, mas quero saber se o comando falha. Mas quando o comando (ffmpeg) falha com algum erro, cpulimit ainda existe com status de saída 0. O que devo fazer?

Meu comando cpulimit:cpulimit -l 300 -f -- ffmpeg ...

CPUlimit versão 3.0

SO: Ubuntu com Linux 6.8.0

Nota: cpulimit não funciona em bifurcações do comando fornecido, a menos que eu passe o sinalizador --monitor-forks, o que o manual diz ser uma má ideia, especialmente em scripts:

-m, --monitor-forks observa e limita os processos filhos do processo alvo Aviso: Geralmente é uma má ideia usar esse sinalizador, especialmente em um script de shell. Os comandos no script gerarão cada um um processo que, por sua vez, gerará mais cópias desse programa para limitá-los, sobrecarregando o sistema. Além disso, é possível que um processo filho morra e que seu PID seja atribuído a outro programa. Quando isso acontece rapidamente, pode fazer com que o cpulimit tenha como alvo o novo processo não intencional antes que as informações antigas tenham a chance de ser liberadas. Use a opção monitor-forks somente em casos específicos, de preferência em máquinas sem muitos processos novos sendo gerados.

linux
  • 1 respostas
  • 23 Views
Martin Hope
Max Power
Asked: 2025-02-08 05:43:56 +0800 CST

O BTRFS "dup" usa uma partição ou duas?

  • 5

btrfs.readthedocs.io descreve o perfil "dup" como duplicação de dados em um único "dispositivo". A descrição, em vários locais naquele site, não esclarece se eles querem dizer uma unidade física com duas partições espelhadas ou uma partição com a duplicação oculta dentro.

Algumas descrições de "dup" sugerem que se trata de um raid1 especial ajustado para funcionar em um único dispositivo com duas partições, mas outras fontes parecem pensar que ele adiciona duplicação dentro de uma única partição. (É claro que o uso real do disco será o mesmo de qualquer maneira.) Parece-me que "dup" pode ser compatível com uma única partição, mas sem duplicação real, ou duas partições podem forçar um desempenho não ideal.

Isto é para HDD giratório usado para backup, não para acesso primário ("dup", protegendo contra bitrot. Outras cópias fora do local com hashes e somas de verificação). Estou ciente de que muitos SDD podem desduplicar internamente.

Alguém sabe o comportamento do perfil "dup" com certeza? Não sou habilidoso o suficiente em ler C para vasculhar os arquivos de origem do kernel.

btrfs
  • 1 respostas
  • 21 Views
Martin Hope
Kaz
Asked: 2025-02-08 03:54:02 +0800 CST

Detectando SIGWINCH ausente na extensão Bash, quando o tamanho aparente do terminal não mudou

  • 7

Eu mantenho uma extensão para o ambiente Bash chamada Basta . Basta fornece uma linha de status protegida por rolagem na parte inferior do seu terminal ANSI/VT100.

Quando o Basta se configura, o número efetivo de linhas, como conhecido pelo material termios no kernel e a LINESvariável shell diminui em 1. O redimensionamento do terminal é tratado bem. Quase. Há trapum SIGWINCHsinal para chamar a rotina de atualização, que também é chamada após cada comando, antes de retornar ao prompt.

No entanto, de vez em quando, vejo uma situação em que a região de rolagem é perdida. O prompt está sendo pintado sobre a linha inferior, onde o usuário está editando comandos e onde a saída do comando aparece, resultando em uma bagunça.

Tenho uma hipótese sobre como isso pode ocorrer, que tem etapas de reprodução confiáveis.

  1. Executamos um programa que aguarda entrada, enquanto o Bash está em segundo plano, como cat.

  2. Enquanto o programa estiver em execução, redimensionamos a janela para reduzi-la em uma linha.

  3. Encerrar o catprograma.

Se o terminal for redimensionado enquanto catestiver em execução, o Bash não obtém o SIGWINCH(porque, eu acho, SIGWINCHé enviado apenas para os processos no grupo de processos em primeiro plano das sessões do terminal, e o Bash está em segundo plano naquele momento). Nosso trapnão executa.

A função de atualização do Basta também depende da comparação do tamanho do terminal anterior com o atual para detectar uma alteração de tamanho.

Aqui está o problema: nesta situação em que um terminal com um status protegido contra rolagem como encolheu em uma linha, o número de linhas parece não ter mudado .

Por exemplo, tela de 40 linhas com região de rolagem de 39 linhas: LINES=39. Redimensione o terminal para ter 39 linhas de comprimento. A região de rolagem desapareceu. LINES=39de novo. Para o software, parece o mesmo tamanho, então ele conclui que não houve um redimensionamento. A linha de status agora está sendo pintada sobre a linha inferior, sobre a entrada do usuário, porque Basta quer colocá-la na linha 40, que não existe mais, então o cursor se fixa em 39.

Se Basta souber que uma mudança de tamanho de janela ocorreu, ele não fará a comparação de tamanho; nessa situação, ele pega o caminho lento, pelo qual ele consulta o próprio terminal para determinar o tamanho. (Seria indesejável fazer isso para cada atualização, porque enviar consultas para o terminal é duvidoso. Se o usuário estiver digitando rapidamente, a resposta do terminal pode se misturar com suas teclas, e pode haver um atraso perceptível em obter uma resposta do terminal em conexões remotas lentas.)

Existe alguma maneira inteligente de saber se o terminal mudou (ou pelo menos suspeitar disso com uma taxa de falsos positivos razoavelmente baixa), na ausência de ter recebido a WINCHarmadilha, devido a ter estado em segundo plano, sem falar com o terminal?

bash
  • 1 respostas
  • 44 Views
Martin Hope
Seamus
Asked: 2025-02-07 13:02:03 +0800 CST

Como remover 'newline' de 'here string'

  • 7

A 'here string' ( <<<) é uma construção útil e pode ser usada em vez de echoem muitas situações. No entanto, ao calcular um hash (como um exemplo), a adição de um caractere de nova linha altera o valor do hash.

Procurei um método compacto para evitar que a quebra de linha fosse adicionada pela 'here string', mas não consegui encontrar nada. Esta pergunta foi feita e respondida no SO , mas estranhamente a resposta aceita (ou qualquer uma das respostas) não responde realmente à pergunta AFAICT.

Alguns podem considerar responder a essa pergunta com uma sugestão de simplesmente usar echo -n <string> | md5sumor printf ... | md5sumem vez disso. Mas minha pergunta diz respeito especificamente à 'string here'.

bash
  • 3 respostas
  • 430 Views
Martin Hope
gcb
Asked: 2025-02-07 00:50:17 +0800 CST

Devo usar tamanho de setor físico ou lógico com LUKS?

  • 6

Tenho um HDD externo (não ssd) que informa:

Sector Sizes:     512 bytes logical, 4096 bytes physical

Devo usar --sector-size 512ou --sector-size 4096com cryptosetup LuksFormat? Usando parâmetros padrão (não tenho certeza se ele tenta detectar automaticamente ou usar 512 sempre) acabou com 512.

Se for importante, a configuração será[disk]->[gpt]->[physical partition]->[LUKSv2]->[btrfs]


Fui em frente e usei ambas as maneiras de coletar benchmarks:

512

# sysbench fileio prepare
2147483648 bytes written in 34.28 seconds (59.75 MiB/sec).

# sysbench fileio --file-test-mode=rndrw run
Extra file open flags: (none)
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      14.42
    writes/s:                     9.62
    fsyncs/s:                     31.25

Throughput:
    read, MiB/s:                  0.23
    written, MiB/s:               0.15

General statistics:
    total time:                          12.4778s
    total number of events:              562

Latency (ms):
         min:                                    0.00
         avg:                                   17.84
         max:                                  365.73
         95th percentile:                       84.47
         sum:                                10024.98

Threads fairness:
    events (avg/stddev):           562.0000/0.00
    execution time (avg/stddev):   10.0250/0.00


# sysbench fileio --file-test-mode=seqrewr run
Extra file open flags: (none)
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing sequential rewrite test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      0.00
    writes/s:                     815.93
    fsyncs/s:                     1045.19

Throughput:
    read, MiB/s:                  0.00
    written, MiB/s:               12.75

General statistics:
    total time:                          10.0488s
    total number of events:              18576

Latency (ms):
         min:                                    0.00
         avg:                                    0.54
         max:                                  433.66
         95th percentile:                        0.02
         sum:                                 9996.57

Threads fairness:
    events (avg/stddev):           18576.0000/0.00
    execution time (avg/stddev):   9.9966/0.00

##4096

# sysbench fileio prepare
2147483648 bytes written in 28.85 seconds (70.99 MiB/sec).


# sysbench --test=fileio --file-test-mode=rndrw run
File operations:
    reads/s:                      26.17
    writes/s:                     17.45
    fsyncs/s:                     58.35

Throughput:
    read, MiB/s:                  0.41
    written, MiB/s:               0.27

General statistics:
    total time:                          11.4636s
    total number of events:              1041

Latency (ms):
         min:                                    0.00
         avg:                                    9.63
         max:                                  370.49
         95th percentile:                       44.98
         sum:                                10021.97

Threads fairness:
    events (avg/stddev):           1041.0000/0.00
    execution time (avg/stddev):   10.0220/0.00



# sysbench fileio --file-test-mode=seqrewr run
File operations:
    reads/s:                      0.00
    writes/s:                     1229.02
    fsyncs/s:                     1574.44

Throughput:
    read, MiB/s:                  0.00
    written, MiB/s:               19.20

General statistics:
    total time:                          10.0071s
    total number of events:              27929

Latency (ms):
         min:                                    0.00
         avg:                                    0.36
         max:                                  471.49
         95th percentile:                        0.02
         sum:                                 9997.75

Threads fairness:
    events (avg/stddev):           27929.0000/0.00
    execution time (avg/stddev):   9.9978/0.00

Para arquivos artificiais pequenos, 4K parece ser duas vezes mais rápido para leituras e 0,25 mais rápido para gravações.


Outra edição. Fiz o mesmo teste, mas copiando 110G de um pacote de arquivos variando de 2,5Mb (95%tile) a 300Mb.

Tanto a unidade formatada em 512 quanto a formatada em 4096 levou 20m30s +-4s

filesystems
  • 1 respostas
  • 41 Views
Martin Hope
mitchus
Asked: 2025-02-07 00:03:27 +0800 CST

Reinicialização mágica com um teclado Lenovo Compact USB

  • 6

Tenho uma máquina Linux de mesa, que estou usando com meu pequeno teclado Lenovo.

Este teclado não tem uma tecla SysReq, o que significa que não consigo invocar a magia REISUB quando as coisas não dão certo.

Posso definir outro atalho de teclado que faça a mesma coisa?

Usando o Ubuntu 22.04 no momento.

linux
  • 1 respostas
  • 25 Views
Martin Hope
Thierry Blanc
Asked: 2025-02-06 18:15:46 +0800 CST

removendo instruções de chaves contendo chaves aninhadas dentro

  • 8

Um problema típico do látex:

\SomeStyle{\otherstyle{this is the \textit{nested part} some more text...}}

Agora eu quero remover tudo \SomeStyle{...}, mas não o conteúdo. O conteúdo contém chaves aninhadas. A linha acima deve se tornar:

\otherstyle{this is the \textit{nested part} some more text...}

Questões:

  1. Algum editor de LaTeX oferece uma maneira de fazer isso?
  2. Qual editor/script faz isso?
  3. Como fazer isso com sed? [🤓]

Minha solução é um script bash usando sed.

  1. preparar texto: marcar substituir string com ascii bell, adicionar nova linha após cada chave
  2. loop: find { -> adiciona X ao espaço de espera, find } -> remove X do espaço de espera, mantém o espaço vazio -> remove o fechamento }
  3. restaurar novas linhas e sino ascii para o anterior

O script funciona, mas falha com: \badstyle{w}\badstyle{o}\badstyle{r}\badstyle{d} Ele se tornará: wo}rd}

a ramificação para :f parece não funcionar.

F=$(sed 's|\\|\\\\|g;s|{|\\{|g' <<< "$1"  )

# mark all removestrings with ascii bell and newline
# add newline after each { and }  
SEDpre='
s|'"$F"'|\a%\n|g

s|\{|\{\n|g
s|\}|\}\n|g
'


SEDpost='
:a;N;$!ba;
s|\a%\n||g

s|\{\n|\{|g
s|\}\n|\}|g
'

# count the brackets
SED='
/\a%/{
:a
        n
:f
        /\{/{x;s|$|X|;x;ba}
        /\}/{x;
                s|X||;
                /^$/{x;bb}
                x
                ba
            }
}
b
:b  
/\}/{   
    s|\}||;
    N;
    s|\n||;
    /\a%/bf
     }
'

sed -r -E  "$SEDpre"  "$2"  | sed -rE "$SED"  | sed -rE "$SEDpost" 
text-processing
  • 5 respostas
  • 529 Views
Martin Hope
James78
Asked: 2025-02-06 09:02:37 +0800 CST

A linha de patch recebe erro

  • 6

Tenho um script e um patch que levei para algum lugar para compilar uma imagem (raiz de compilação do Linux) e adicionei algumas linhas e agora recebo um erro durante o patch, o erro é assim:

diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate

index fecf82fcaa..fff80d6efc 100755

--- a/package/base-files/files/bin/config_generate

+++ b/package/base-files/files/bin/config_generate

@@ -312,10 +312,10 @@ generate_static_system() {

o problema parece estar nos números -312,10 +312,10

ideia?

obrigado

EDIT: aqui mais algumas informações, durante a compilação do OpenWrt, eu quero adicionar algumas mudanças automaticamente, essas mudanças estarão em um script, e ele aplicará o patch em alguns arquivos. Ou seja: essa parte

generate_static_system() {
    uci -q batch <<-EOF
        delete system.@system[0]
        add system system
        set system.@system[-1].hostname='OpenWrt'
        set system.@system[-1].timezone='EST5EDT,M3.2.0,M11.1.0'
        set system.@system[-1].zonename='America/New York'
        set system.@system[-1].ttylogin='0'
        set system.@system[-1].log_size='384'
        set system.@system[-1].urandom_seed='0'

para:

generate_static_system() {
    uci -q batch <<-EOF
        delete system.@system[0]
        add system system
        set system.@system[-1].hostname='james_router2'
        set system.@system[-1].timezone='EST5EDT,M3.2.0,M11.1.0'
        set system.@system[-1].zonename='America/Toronto'
        set system.@system[-1].ttylogin='0'
        set system.@system[-1].log_size='384'
        set system.@system[-1].urandom_seed='0'

esta é uma parte de um arquivo maior, em:

package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate

imagem_arquivo

scripting
  • 1 respostas
  • 173 Views
Martin Hope
elbarna
Asked: 2025-02-06 07:21:18 +0800 CST

Uma espécie de coluna diferente usando tipos diferentes, funciona, só uma coisa estranha com espaços

  • 5

Eu tenho esse arquivo

1  you
3  me
2  their
4  us

este pipe funciona bem (ele ordena a primeira coluna por número, a segunda por letras) é um pipe de outro usuário encontrado aqui

paste <(awk '{print $1}' file.txt | sort -k1n) <(awk '{print $2}' \
file.txt | gsort -V)

mas agora use uma palavra com espaços

1  "and me"
3  me
2  their
4  us

O mesmo comando produz isso

1   me
2   their
3   us
4   "and

Como produzir um resultado como esse?

1   and me
2   their
3   us
4

Eu tentei:

  • remover número 4

  • use "e eu"

  • use 'e eu'

Mas me dê o resultado incorreto

sort
  • 1 respostas
  • 37 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