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

phg's questions

Martin Hope
phg
Asked: 2018-10-05 03:32:56 +0800 CST

chamando fsync() em arquivos na memória

  • 0

De fsync(2):

fsync() transfers ("flushes") all modified in-core data of (i.e., modified
buffer cache pages for) the file referred to by the file descriptor fd to
the disk  device  (or  other permanent  storage  device)

Que efeitos o fsync pode ter se o fd foi obtido por uma das APIs na memória como shm_open(3p) ou `memfd_create(2)*? Alguma vez é necessário confirmar explicitamente as alterações no objeto de memória?

linux posix
  • 1 respostas
  • 791 Views
Martin Hope
phg
Asked: 2018-09-14 23:26:39 +0800 CST

Contar linhas com mais de 80 colunas, levando em consideração as guias corretamente

  • 7

Para contar linhas com mais de 80 colunas estou, atualmente, usando este comando:

$ git grep -h -c -v '^.\{,80\}$' **/*.{c,h,p{l,y}} \
    |awk 'BEGIN { i=0 } { i+=$1 } END { printf ("%d\n", i) }'
44984

Infelizmente, o repositório usa guias para recuar, portanto, o greppadrão é impreciso. Existe alguma maneira de ter as regexguias de tratamento na largura padrão de 8 caracteres, como wc -Lacontece?

Para os propósitos desta pergunta, podemos supor que os colaboradores foram disciplinados o suficiente para recuar consistentemente, ou que eles têm git commitganchos em vez de disciplina.

Por motivos relacionados ao desempenho, prefiro uma solução que funcione dentro git-grep(1)ou talvez outra grepferramenta, sem pré-processamento de arquivos .

grep
  • 4 respostas
  • 1339 Views
Martin Hope
phg
Asked: 2018-09-14 02:04:30 +0800 CST

Faça *lembrar* interpretar a saída de *$shell()*

  • 3

O remember(1) fornece uma função shell()documentada da seguinte forma:

   shell(s_cmd [,i_maxlen])
          Executes cmd as a system command, and returns the first 511
          characters  of  output resulting  from  cmd. Any  whitespace
          character in the output is converted to a space. Note that if
          RUN OFF has been executed, or the -r command-line option has
          been used, shell() will result in an error, and cmd will not be
          executed.

          …

Eu gostaria que qualquer coisa s_cmdque escrevesse no stdout fosse interpretada pelo próprio lembrete . Por exemplo.:

$ echo REM Sep 13 2018 MSG test >/tmp/test.rem
$ tail -2 ~/.reminders
SET tmp shell("cat /tmp/test.rem", -1)
$tmp

Onde $tmpestá minha tentativa malsucedida de inserir a saída do comando na linha acima. Ao executar rem(1), não retorna erro, mas também não interpola $tmp:

$ rem
Reminders for Thursday, 13th September, 2018 (today):

…
$tmp 

Presumo que isso $tmpseja interpretado como uma REM …declaração implícita.

(A INCLUDEdiretiva não funciona neste contexto porque preciso que a saída da inclusão seja gerada in situ.)

remind
  • 1 respostas
  • 344 Views
Martin Hope
phg
Asked: 2018-08-25 01:25:10 +0800 CST

Por que montagens de ligação repetidas criam entradas para o diretório de origem?

  • 3

Por que uma montagem de ligação repetida cria várias entradas em /proc/mounts?

# md -p /mnt/test-mount/{source,target}
# mount --bind /mnt/test-mount/{source,target}
# grep test-mount /proc/mounts 
/dev/sda3 /mnt/test-mount/target ext4 rw,relatime 0 0
# mount --bind /mnt/test-mount/{source,target}
# grep test-mount /proc/mounts 
/dev/sda3 /mnt/test-mount/target ext4 rw,relatime 0 0
/dev/sda3 /mnt/test-mount/target ext4 rw,relatime 0 0
/dev/sda3 /mnt/test-mount/source ext4 rw,relatime 0 0

Após a primeira montagem de ligação, havia uma entrada mapeando o volume de origem para o ponto de montagem. Após a segunda invocação, temos uma entrada adicional para o ponto de montagem mais uma para o prefixo de origem.

Da mesma forma, findmnt relata que a fonte é montada em bind para si mesma:

# findmnt |grep test-mount
├─/mnt/test-mount/target                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│ └─/mnt/test-mount/target                     /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
└─/mnt/test-mount/source                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime

Após outra repetição, acabo com três entradas para a fonte, quatro para o destino:

# mount --bind /mnt/test-mount/{source,target
# findmnt |grep test-mount
├─/mnt/test-mount/target                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│ └─/mnt/test-mount/target                     /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│   └─/mnt/test-mount/target                   /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│     └─/mnt/test-mount/target                 /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
└─/mnt/test-mount/source                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
  └─/mnt/test-mount/source                     /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
    └─/mnt/test-mount/source                   /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime

A progressão é 1, 3, 7, 15, … , ou seja, n = 1 + 2^(n-1) , fazendo com que o número de entradas adicionais dobre a cada operação de montagem.

Qual é o motivo disso?

linux mount
  • 1 respostas
  • 584 Views
Martin Hope
phg
Asked: 2018-07-12 07:05:32 +0800 CST

impedir a montagem de ligação no login, se montado

  • 0

No login, uma montagem de ligação é criada. Em ~/.pam_mount.conf.xml:

  <volume options="bind" user="phg" mountpoint="/nix" path="/store/nix" />

Isso precisa ser feito apenas uma vez por inicialização. Observe que não tenho acesso às montagens fstab ou systemd.

A montagem de ligação em si funciona. No entanto, ele está sendo executado em todos os logins . Como posso ter dezenas, centenas de logins na caixa via SSH, isso preenche a tabela de montagem rapidamente. Apenas alguns minutos atrás, a caixa foi inutilizada devido à exaustão de recursos por causa disso.

Detectar uma montagem de ligação existente é fácil, mas com pam_mount.so não vejo um meio de fazer a montagem depender do resultado de, digamos, um script.

Daí a minha pergunta:

  • Como posso impedir que a montagem de ligação seja executada mais de uma vez ou
  • como posso tornar as montagens de ligação repetidas sem operação para evitar que as montagens se acumulem?

Veja também: https://github.com/karelzak/util-linux/issues/448

linux mount
  • 2 respostas
  • 471 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