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

Ole Tange's questions

Martin Hope
Ole Tange
Asked: 2024-12-30 03:53:08 +0800 CST

Por que não consigo interceptar `write` em `seq`?

  • 7

Com base na velocidade de E/S do arquivo Limit que criei https://git.data.coop/tange/tangetools/src/branch/master/iothrottle

Funciona para alguns programas:

iothrottle -i 10M cat foo > bar # Yes, here you could just use pv
iothrottle -o 1M ffmpeg -i foo.mp3 foo.wav
iothrottle -o 1M cp -a foodir /other/fs/foodir

Isto não:

iothrottle -o 1M cp -a foodir /same/fs/foodir

porque no mesmo sistema de arquivos cpusa uma única chamada para copy_file_rangecada arquivo.

Estou bem com essa limitação.

Também não funciona para seq. Quando corro, strace seq 100000recebo:

write(1, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14"..., 8192) = 8192
write(1, "\n1861\n1862\n1863\n1864\n1865\n1866\n1"..., 4096) = 4096
write(1, "2680\n2681\n2682\n2683\n2684\n2685\n26"..., 4096) = 4096
write(1, "499\n3500\n3501\n3502\n3503\n3504\n350"..., 4096) = 4096
write(1, "18\n4319\n4320\n4321\n4322\n4323\n4324"..., 4096) = 4096
write(1, "7\n5138\n5139\n5140\n5141\n5142\n5143\n"..., 4096) = 4096
write(1, "\n5957\n5958\n5959\n5960\n5961\n5962\n5"..., 4096) = 4096
write(1, "6776\n6777\n6778\n6779\n6780\n6781\n67"..., 4096) = 4096
write(1, "595\n7596\n7597\n7598\n7599\n7600\n760"..., 4096) = 4096
write(1, "14\n8415\n8416\n8417\n8418\n8419\n8420"..., 4096) = 4096
write(1, "3\n9234\n9235\n9236\n9237\n9238\n9239\n"..., 3838) = 3838

Então parece que chama write(e não alguma mmapoutra mágica), e assim deveria funcionar.

Mas quando eu corro: IOTHROTTLE_DEBUG=1 iothrottle -o 1M seq 10000 >/dev/nullEu recebo:

init called: default read_limit=0, write_limit=0
IOTHROTTLE_READ=0
IOTHROTTLE_WRITE=1048576
Final read_limit=0, write_limit=1048576
allowed: 608 written: 0
allowed: 617 written: 0

Isso me diz que iothrottleintercepta apenas 2 chamadas para write.

O que estou perdendo?

shared-library
  • 1 respostas
  • 38 Views
Martin Hope
Ole Tange
Asked: 2024-10-08 05:18:04 +0800 CST

Limitar velocidade de E/S de arquivo

  • 17

Estou procurando um comando semelhante ao ioniceand trickleand pv -Land tc-, mas que coloque limites de E/S em arquivos.

ioniceolha para dispositivos de bloco na máquina local. Quero que isso funcione para E/S de arquivo em geral. Se não funcionar para encfs montados em NFS, é inútil para mim.

tricklemolda a E/S da rede - não a E/S do sistema de arquivos. Então, se meu programa acessa um arquivo no encfs, ele não terá nenhuma pista se ele está montado em cima do NFS ou de um diretório local.

tcé semelhante a trickle: Ele molda a E/S da rede - não a E/S do sistema de arquivos.

pv -Lsó funciona em pipes. Preciso que funcione em todos os arquivos que o programa abre. Pense no Firefox: ele abre arquivos para leitura e escrita em vários threads.

Eu quero isso:

thecommand --read 5M --write 1M firefox

limitar firefoxa leitura de arquivos a 5 MB/s e a gravação a 1 MB/s.

firefoxé apenas um exemplo: quero que funcione para qualquer programa que abra arquivos diferentes para leitura e escrita.

Quero que a limitação funcione não importa se firefoxo acesso é a um arquivo local ou a um arquivo em NFS/tmpfs/encfs/SSHFS/RandomFS.

Não tem problema se ele só funcionar em programas vinculados dinamicamente (ou seja, não tem problema se ele fizer alguma mágica LD_PRELOAD).

Existe uma fera dessas?

nfs
  • 4 respostas
  • 1277 Views
Martin Hope
Ole Tange
Asked: 2024-06-16 19:09:16 +0800 CST

Inicialize a partir de USB - redirecione para SSD

  • 5

Reinstalei meu antigo HP ProBook 6460b com Ubuntu 24.04.

Ele não inicializa mais no SSD (mesmo problema https://askubuntu.com/questions/1490970/my-hp-does-not-boot-after-fresh-ubuntu-22-04-install ).

Este não é um problema de ordem de inicialização do BIOS: o disco rígido é listado imediatamente após o USB e funcionou anteriormente. Então, algo no processo de instalação do Ubuntu causou isso.

Se eu mover o disco para um cabo adaptador USB, poderei inicializar a partir do SSD sem problemas.

Portanto, a máquina inicializa bem a partir do disco, desde que seja via USB.

Como posso criar um pequeno disco USB com informações suficientes para direcionar o processo de inicialização para o SSD? (Nos velhos tempos, estou pensando no GRUB com dispositivo root = SSD interno /dev/sda).

O HP 6460b possui suporte experimental para UEFI. A inicialização por USB funciona se o UEFI estiver ativado ou desativado.

boot
  • 1 respostas
  • 49 Views
Martin Hope
Ole Tange
Asked: 2024-04-26 01:47:57 +0800 CST

Turris Omnia (resolvedor de nó): t.co não resolve. twitter.com faz

  • 4

Meu Turris Omnia não consegue resolver t.co, mas não tem problemas com outros domínios como twitter.com ou x.co. Os nomes locais (hpdisk.lan) também funcionam:

root@turris:~# ping t.co
ping: t.co: Name does not resolve

root@turris:~# ping twitter.com
PING twitter.com (104.244.42.193) 56(84) bytes of data.
64 bytes from 104.244.42.193 (104.244.42.193): icmp_seq=1 ttl=58 time=11.5 ms

tange@turris:~$ ping x.co
PING x.co (148.72.51.157) 56(84) bytes of data.
64 bytes from 157.51.72.148.host.secureserver.net (148.72.51.157): icmp_seq=1 ttl=42 time=139 ms

tange@turris:~$ ping hpdisk.lan
PING hpdisk.lan (192.168.1.30) 56(84) bytes of data.
64 bytes from 192.168.1.30 (192.168.1.30): icmp_seq=1 ttl=64 time=0.374 ms

O roteador não tem problemas em consultar os servidores de nomes de autenticação, portanto, não é causado por algum problema de filtragem ou roteamento de rede:

root@turris:/tmp/log# dig @a.r06.twtrdns.net. t.co

; <<>> DiG 9.18.24 <<>> @a.r06.twtrdns.net. t.co
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13597
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 8, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;t.co.                          IN      A

;; ANSWER SECTION:
t.co.                   300     IN      A       104.244.42.197

Pesquisar u.co causa esse tráfego (e bastante semelhante para [as,uz].co):

14:36:00.469554 IP 100.100.246.190.51757 > 156.154.105.25.53: 20216% [1au] A? U.CO. (33)
14:36:00.484396 IP 156.154.105.25.53 > 100.100.246.190.51757: 20216- 0/6/1 (639)
14:36:00.485495 IP 100.100.246.190.55245 > 193.108.91.245.53: 25634% [1au] A? Ns50.DoMAInCoNtROL.COm. (51)
14:36:00.500380 IP 193.108.91.245.53 > 100.100.246.190.55245: 25634*- 1/0/1 A 173.201.72.25 (67)
14:36:00.500659 IP 100.100.246.190.60650 > 173.201.72.25.53: 49104% [1au] A? U.Co. (33)
14:36:00.513975 IP 173.201.72.25.53 > 100.100.246.190.60650: 49104*- 2/2/1 A 15.197.142.173, A 3.33.152.147 (120)

Procurar t.co não causa tráfego. Parece que o Knot Resolver pensa que é autorizado para t.co

Eu tentei reiniciar o roteador. Isso não resolveu o problema.

root@turris:~# uname -a
Linux turris 5.15.148 #0 SMP Tue Apr 2 01:04:13 2024 armv7l GNU/Linux
root@turris:~# kresd --version
Knot Resolver, version 5.7.1
root@turris:~# netstat -anp |grep 0:53
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      18768/kresd
udp        0      0 0.0.0.0:53              0.0.0.0:*                           18768/kresd
tange@turris:~$ cat /etc/resolv.conf 
search lan
nameserver 127.0.0.1
nameserver ::1
root@turris:/tmp/log# cat /var/log/resolver 
Apr 27 11:52:30 turris kresd[8728]: [system] warning: hard limit for number of file-descriptors is only 4096 but recommended value is 524288
Apr 27 11:52:50 turris kresd[12702]: [system] warning: hard limit for number of file-descriptors is only 4096 but recommended value is 524288
dns
  • 1 respostas
  • 26 Views
Martin Hope
Ole Tange
Asked: 2023-11-05 20:38:40 +0800 CST

Por que 'H'/72/0x48 é o segundo byte mais comum em executáveis?

  • 64

Eu corri isso:

cat /usr/bin/* |
  perl -ne 'map {$a{$_}++} split//; END{print map { "$a{$_}\t$_\n" } keys %a}' |
  grep --text . | sort -n | plotpipe --log y {1}

e consegui isso:

número de ocorrências de valor de byte

(Mesmo com um log do eixo y, ainda parece exponencial! Há mais de 100x entre o topo e o fundo)

Olhando para os números:

:
31919597        ^H
32983719        ^B
33943030        ^O
39130281        \213
39893389        $
52237360        \211
53229196        ^A
76884442        \377
100776756       H
746405320       ^@

Não é de surpreender que ^@ (NUL) seja o byte mais comum em executáveis. \377 (255) e ^A (1) também fazem sentido intuitivamente para mim.

Mas o que faz com que 'H' (72) seja o segundo byte mais comum em executáveis ​​- muito mais comum que 255 e 1?

x86
  • 1 respostas
  • 7277 Views
Martin Hope
Ole Tange
Asked: 2023-04-02 00:10:46 +0800 CST

Qual processo intercepta ALT-TAB no KDE?

  • 6

Percebi que o KDE para de responder ao ALT-TAB (e CTRL-F1/CTRL-F2) do nada.

Qual processo devo reiniciar para fazê-lo funcionar novamente?

Isso pode ser feito sem fechar todas as janelas?

Tentei:

$ kquitapp5 plasm
"Application plasm could not be found using service org.kde.plasm and path /MainApplication."
$ kquitapp5 plasma-desktop
"Application plasma-desktop could not be found using service org.kde.plasma-desktop and path /MainApplication."
$ kquitapp5 plasmashell
"Application plasmashell could not be found using service org.kde.plasmashell and path /MainApplication."
$ plasmashell --replace &
kde
  • 1 respostas
  • 35 Views
Martin Hope
Ole Tange
Asked: 2023-03-22 06:10:14 +0800 CST

rsync o arquivo `a`b

  • 27

Sim, eu sei o que você está pensando: "Quem diabos nomeia seu arquivo `a`b?"

Mas vamos supor que você tenha um arquivo chamado `a`b(possivelmente feito por um usuário maluco do Mac - obviamente não por você), e você deseja rsyncisso. A solução óbvia:

rsync server:'./`a`b' ./.;
rsync 'server:./`a`b' ./.;

dá:

bash: line 1: a: command not found
rsync: [sender] link_stat "/home/tange/b" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1865) [Receiver=3.2.7]
rsync: [Receiver] write error: Broken pipe (32)

Até:

$ rsync 'server:./\`a\`b' ./.;
bash: line 3: a\: command not found
rsync: [sender] link_stat "/home/tange/\b" failed: No such file or directory (2)
:

Qual é o rsynccomando que devo executar?

$ rsync --version
rsync  version 3.2.7  protocol version 31
rsync
  • 3 respostas
  • 1557 Views
Martin Hope
Ole Tange
Asked: 2023-02-27 03:47:24 +0800 CST

FreeBSD11: Falha na verificação do certificado

  • 6

Meu FreeBSD 11 dá:

[root@freebsd11 ~]# pkg install perl
Updating FreeBSD repository catalogue...
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
pkg: https://pkg.freebsd.org/FreeBSD:11:amd64/latest/meta.txz: Authentication error
repository FreeBSD has no meta file, using default settings
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
pkg: https://pkg.freebsd.org/FreeBSD:11:amd64/latest/packagesite.pkg: Authentication error
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
Certificate verification failed for /O=Digital Signature Trust Co./CN=DST Root CA X3
34406394360:error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed:/usr/src/crypto/openssl/ssl/s3_clnt.c:1269:
pkg: https://pkg.freebsd.org/FreeBSD:11:amd64/latest/packagesite.txz: Authentication error
Unable to update repository FreeBSD
Error updating repositories!

Acho que isso é causado por um certificado expirado, mas não tenho ideia de como corrigi-lo.

freebsd
  • 2 respostas
  • 39 Views
Martin Hope
Ole Tange
Asked: 2022-11-22 14:46:37 +0800 CST

Depurar condição de corrida segfault

  • 9

Posso provocar uma condição de corrida que forneça uma saída semelhante a esta em dmesg:

[ 5432.541379] perl[408327]: segfault at 22 ip 0000564eb8af9cc2 sp 00007ffec318cea0 error 6 in perl[564eb8af7000+1a1000]
[ 5432.541402] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.541638] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660093] perl[408400]: segfault at 22 ip 00005654e7ec3cc2 sp 00007ffe47312cc0 error 6
[ 5432.660106] perl[408415]: segfault at 22 ip 000055b15d088cc2 sp 00007ffe67124210 error 6
[ 5432.660119]  in perl[5654e7ec1000+1a1000]
[ 5432.660131]  in perl[55b15d086000+1a1000]
[ 5432.660133] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.660142] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.660221] sleep[408436]: segfault at 0 ip 00007f18c67150b2 sp 00007ffdaf402820 error 4 in ld-linux-x86-64.so.2[7f18c66fa000+2a000]
[ 5432.660248] Code: 00 00 00 00 00 0f 1f 00 41 55 48 8d 05 50 1e 01 00 49 89 f5 49 89 c9 41 54 49 89 d4 48 89 c2 48 81 ec 18 04 00 00 85 ff 75 53 <41> 80 7d 00 00 48 8d 0d 2b 1e 01 00 4c 8d 05 d4 11 01 00 4c 0f 44
[ 5432.660417] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660480] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660543] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.660593] perl[408406]: segfault at 22 ip 000055d5887c3cc2 sp 00007ffcf1af5220 error 6 in perl[55d5887c1000+1a1000]
[ 5432.660629] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.660888] Core dump to |/usr/share/apport/apport pipe failed
[ 5432.661682] perl[408391]: segfault at 22 ip 00005645d25a8cc2 sp 00007ffc836eb8b0 error 6 in perl[5645d25a6000+1a1000]
[ 5432.661718] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5432.661969] Core dump to |/usr/share/apport/apport pipe failed
[ 5433.228271] perl[408513]: segfault at 22 ip 000055bc88f1bcc2 sp 00007ffc31bb1ab0 error 6 in perl[55bc88f19000+1a1000]
[ 5433.228302] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5433.306971] perl[408642]: segfault at 22 ip 000055e76e66dcc2 sp 00007ffd37469c20 error 6 in perl[55e76e66b000+1a1000]
[ 5433.306999] Code: 83 f8 05 0f 87 cf 00 00 00 0f b7 6b 22 66 81 fd 00 04 77 64 01 ed 8d 7d 05 48 63 ff 48 c1 e7 03 be 01 00 00 00 e8 4e ef ff ff <66> 89 68 22 48 89 c3 66 89 68 24 4c 89 68 08 49 8b 45 00 48 89 03
[ 5433.307203] Core dump to |/usr/share/apport/apport pipe failed
[ 5433.820922] perl[408816]: segfault at 20 ip 0000557b90fb3463 sp 00007ffcd78bb6f0 error 4 in perl[557b90f88000+1a1000]
[ 5433.820953] Code: 89 df e8 60 9a 0e 00 48 8b 83 e0 00 00 00 48 8b 40 10 48 8b 13 48 85 c0 0f 85 79 ff ff ff e8 44 fc 06 00 48 8b 83 e0 00 00 00 <83> 78 20 00 79 2d 83 7b 30 00 7f 1b 48 8b bb f8 02 00 00 48 83 3f
[ 5433.821219] Core dump to |/usr/share/apport/apport pipe failed

(Como sleeptodos os programas podem segfault?!)

Já experimentei de vez em quando que ele desativa outros programas na máquina.

Infelizmente, o programa para gerar a condição de corrida é bastante grande: ( https://git.savannah.gnu.org/cgit/parallel.git/tree/testsuite/tests-to-run/parallel-local-30s.sh ) e Não posso torná-lo muito menor sem que a condição de corrida desapareça.

O teste gera no total mais de 10.000 perlprocessos de comunicação + programas shell comuns ( sleep, sort, md5sum, bash, paste, wc).

Eu testei que esse problema pode ser reproduzido em meu laptop e meu servidor de 512 GB (portanto, não é causado por, digamos, RAM ruim, superaquecimento ou falta de memória).

Como faço para depurar isso e transformá-lo em um relatório de bug decente para as pessoas relevantes? (E quem são as pessoas relevantes? Se ambos perle sleepsegfault, talvez estejamos assumindo uma condição de corrida no kernel? Ou no bash? Ou libc?)

Editar

Eu instalei o FreeBSD12 (Vagrant). E o teste roda perfeitamente no FreeBSD12. Isso me faz pensar que o kernel é o culpado. Também pode ser que o Vagrant de alguma forma faça o FreeBSD12 não falhar.

Tanto o laptop quanto o servidor executam o Ubuntu22.04, portanto, tente executar um kernel diferente. Talvez Debian ou CentOS. Também devo tentar se o Ubuntu22.04 falhar no Vagrant.

Funciona: FreeBSD12(Vagrant), Centos8(Vagrant), Ubuntu20.04(Vagrant), Ubuntu22.04(laptop t), Ubuntu22.10(Vagrant).

Falha: Ubuntu22.04(laptop a, servidor r).

Eu poderia ter encontrado o culpado:

echo 2 > /proc/sys/vm/overcommit_memory

Se eu fizer isso:

echo 0 > /proc/sys/vm/overcommit_memory

a condição de corrida desaparece no servidor r.

Mas por que diabos isso causaria esses erros?

Editar

Marcus sugere que pode ter a ver com a alocação de memória e, quando vejo outros processos morrerem durante a execução, geralmente é com "xmalloc: não é possível alocar pequenos números de bytes".

Como testamos se essa teoria está correta?

linux
  • 1 respostas
  • 46 Views
Martin Hope
Ole Tange
Asked: 2022-07-06 23:14:12 +0800 CST

O Firefox descarrega a guia após um curto período de tempo - como ajustar o tempo?

  • 0

Eu usei anteriormente o plugin Dormancy que descarrega uma guia quando está inativa por mais de X minutos.

O Firefox no meu laptop faz isso automaticamente - não há necessidade de instalar o Dormancy, o que é bom. Mas não consigo encontrar onde ajusto o tempo (parece que são 5 minutos, mas preciso que seja mais de 15).

$ uname -a
Linux travel 5.15.0-39-lowlatency #42-Ubuntu SMP PREEMPT Fri Jun 10 12:00:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Firefox: 101.0.1 (64-bit)


firefox
  • 1 respostas
  • 80 Views
Martin Hope
Ole Tange
Asked: 2022-01-27 04:08:13 +0800 CST

ssh lê stdin sem ser solicitado a

  • 4

Estes não fazem o mesmo:

$ seq 1000000 | (ssh localhost sleep 1; wc -l)
675173
$ seq 1000000 | (ssh localhost sleep 1 </dev/null; wc -l)
1000000

Qual é a razão para sshler stdin?

ssh pipe
  • 2 respostas
  • 508 Views
Martin Hope
Ole Tange
Asked: 2020-01-09 23:04:08 +0800 CST

Por que o governador da CPU não respeita o limite máximo de velocidade da CPU?

  • 1

Eu corri:

sudo parallel cpufreq-set -c {} -u 2000MHz ::: 0 1 2 3

ainda quando eu estresso a CPU, cpufreq-inforetorna:

analyzing CPU 2:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 2
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency: 4294.55 ms.
  hardware limits: 800 MHz - 2.90 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 2.29 GHz.

2,29 GHz é superior a 2,00 GHz. E esse comportamento é visto para todos os núcleos.

É como se ignorasse completamente o limite de frequência.

Por que isso acontece? Existe uma maneira de evitar que isso aconteça?

$ uname -a
Linux travel 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ cat /proc/cpuinfo
processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz
stepping        : 7
microcode       : 0x2f
cpu MHz         : 1792.712
cache size      : 3072 KB
physical id     : 0
siblings        : 4
core id         : 1
cpu cores       : 2
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 4585.01
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
cpu-frequency
  • 1 respostas
  • 407 Views
Martin Hope
Ole Tange
Asked: 2019-12-28 22:16:22 +0800 CST

Leia STDIN com tempo limite

  • 1

Eu quero ler STDIN, mas no máximo por 5 segundos. Depois disso, quero processar os dados que li até agora.

selectparece ser feito exatamente para isso: Aguarde até que haja entrada ou até o tempo limite.

Se houver entrada, devo apenas ler esse não-bloqueio.

Então eu assumi que isso funcionaria:

#!/usr/bin/perl -w

use strict;
use Fcntl;

open(my $in, "<&", "STDIN") or die;
my $buf = "";
my $readsize = 10;

# Make $in non-blocking
fcntl($in, &F_SETFL, fcntl($in, &F_GETFL, 0) | &O_NONBLOCK);
while(not eof($in)) {
    my $starttime = time();
    my $rin = my $win = my $ein = '';
    vec($rin, fileno($in),  1) = 1;
    while(time() < $starttime + 5 and length $buf < $readsize) {
        # Wait up to 5 seconds for input                                                               
        select($rin, $win, $ein, $starttime + 5 - time());
        # Read everything that is available in the inputbuffer                                         
        while(read($in,$buf,$readsize,length $buf)) {}
    }
    print "B:",$buf;
    $buf = "";
}

Quando executado como:

(echo block1;sleep 1; echo block1; sleep 6;echo block2)|
  perl nonblockstdin.pl 

os blocos são mesclados. Eles deveriam ter sido dois blocos porque o bloco2 começa 6 segundos depois.

O que estou fazendo errado?

perl
  • 2 respostas
  • 1074 Views
Martin Hope
Ole Tange
Asked: 2019-07-11 21:28:53 +0800 CST

Como digo ao GNU Parallel para não citar a string de substituição

  • 3

O GNU Parallel cita as strings de substituição por padrão para que elas não sejam expandidas pelo shell. Mas em certos casos você realmente quer que a string de substituição seja interpretada pelo shell.

Por exemplo

$ cat variables.txt
--var1 0.1 --var2 0.2
--var1 0.11 --var3 0.03

Aqui eu quero que o GNU Parallel seja executado:

myprogram --var1 0.1 --var2 0.2
myprogram --var1 0.11 --var3 0.03

Como isso é feito?

Como é feito, se apenas algumas das strings de substituição devem ser interpretadas:

Por exemplo

$ ls
My file1.txt
My file2.txt

E eu quero esta corrida:

myprogram --var1 0.1 --var2 0.2 'My file1.txt'
myprogram --var1 0.11 --var3 0.03 'My file1.txt'
myprogram --var1 0.1 --var2 0.2 'My file2.txt'
myprogram --var1 0.11 --var3 0.03 'My file2.txt'
gnu-parallel quoting
  • 1 respostas
  • 750 Views
Martin Hope
Ole Tange
Asked: 2019-06-24 12:43:26 +0800 CST

Por que abrir /proc/cpuinfo leva 17 ms?

  • 2

Executando isso

strace -ff -tt perl -e 'open(A,"<","/proc/cpuinfo");'

dá isso:

22:36:10.365187 openat(AT_FDCWD, "/proc/cpuinfo", O_RDONLY) = 3
22:36:10.382061 ioctl(3, TCGETS, 0x7fffb127ea50) = -1 ENOTTY (Inappropriate ioctl for device)

/proc/cpuinfoé um arquivo na memória que não requer acesso a um disco lento. Por que está demorando 17 ms para abrir?

Eu testei 10 vezes em um sistema ocioso e o tempo é muito consistente.

$ uname -a
Linux hk 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
proc
  • 1 respostas
  • 219 Views
Martin Hope
Ole Tange
Asked: 2019-05-02 11:50:06 +0800 CST

configuração ssh para "prefixar" torsocks

  • 1

Eu posso acessar meu telefone usando:

torsocks ssh myphone

se eu tiver isso no meu .ssh/config:

Host myphone
  User u0_a162
  Port 2222
  HostName umqkh75wp2chf5av5esqhtyzedmw4it76dvs7ild2rikbcek6eyqfsqd.onion

Posso de alguma forma adaptar o .ssh/configpara que eu possa simplesmente escrever isso e executar o mesmo:

ssh myphone

Posso de alguma forma mover o torsocksinto .ssh/config- possivelmente com ProxyCommand ou similar?

ssh tor
  • 1 respostas
  • 199 Views
Martin Hope
Ole Tange
Asked: 2019-02-14 14:18:54 +0800 CST

Comando para resolver o nome de domínio fornecendo apenas o endereço IP/in-addr.arpa

  • 0

Atualmente, estou retornando o endereço IP de um host ou retornando o registro in-addr.arpa:

host $1 |
  perl -pe 's/.* mail is .*//; s/\n//;s/.* has address //;s/.* domain name pointer //;s/.* not found: .*/'$1'/g';

Existe uma ferramenta mais autorizada que forneça apenas o endereço IP/in-addr.arpa e nenhuma outra saída?

dns
  • 1 respostas
  • 163 Views
Martin Hope
Ole Tange
Asked: 2018-11-23 00:42:11 +0800 CST

killall apenas para este terminal

  • 2

Ao depurar, costumo usar killallpara matar um processo. Este é realmente um mau hábito porque pode haver mais processos em execução com o mesmo nome no sistema.

Normalmente, o processo que eu quero matar é um descendente do mesmo pai (ou avô) de onde killallfoi iniciado. Muitas vezes eu quero matar um programa iniciado no mesmo terminal ou um terminal em outra guia (no Konsole).

Existe uma maneira de dizer killall(ou outro assassino) para limitar o escopo aos processos iniciados a partir deste terminal ou processos que são descendentes do mesmo (grande) pai?

kill
  • 1 respostas
  • 424 Views
Martin Hope
Ole Tange
Asked: 2018-10-21 01:20:58 +0800 CST

kscreenlocker_greet: Desativar controles VLC

  • 1

Ao bloquear minha tela, recebo os controles do VLC para o vídeo em reprodução ativa na tela de bloqueio.

Como posso desabilitar esses controles?

kde vlc
  • 1 respostas
  • 227 Views
Martin Hope
Ole Tange
Asked: 2018-06-11 13:36:08 +0800 CST

Caracteres não-ascii não são mais exibidos no bash

  • 3

Atualizado: Este não é um problema do sistema de arquivos.

Eu costumava ser capaz de entrar:

$ echo kødpålæg

Mas agora bash/zsh mude isso para:

bash$ echo kddddddddplg
zsh$ echo k<c3><b8>dp<c3><a5>l<c3><a6>g

Eu posso executar cate inserir 'kødpålæg' sem problemas:

$ cat
kødpålæg
kødpålæg

Isso é tanto com este ambiente:

$ locale   
LANG=C
LANGUAGE=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

e neste:

$ locale 
LANG=da_DK.utf8
LANGUAGE=da_DK.utf8
LC_CTYPE="da_DK.utf8"
LC_NUMERIC="da_DK.utf8"
LC_TIME="da_DK.utf8"
LC_COLLATE="da_DK.utf8"
LC_MONETARY="da_DK.utf8"
LC_MESSAGES="da_DK.utf8"
LC_PAPER="da_DK.utf8"
LC_NAME="da_DK.utf8"
LC_ADDRESS="da_DK.utf8"
LC_TELEPHONE="da_DK.utf8"
LC_MEASUREMENT="da_DK.utf8"
LC_IDENTIFICATION="da_DK.utf8"
LC_ALL=da_DK.utf8

cshnão muda 'kødpålæg'.

Como posso recuperar o comportamento antigo, para que eu possa inserir 'kødpålæg'?

A execução de qualquer um deles fornece o comportamento antigo:

LC_ALL=en_GB.utf-8 luit
LC_ALL=da_DK.utf-8 luit
LC_ALL=en_GB.iso88591 luit
LC_ALL=da_DK.iso88591 luit

mas apenas para essa única sessão.

Este:

$ od -An -vtx1
ø

Dá:

 c3 b8 0a

Portanto, parece que a entrada do Konsole para o bash é UTF8.

$ konsole --version
QCoreApplication::arguments: Please instantiate the QApplication object first
Qt: 5.5.1
KDE Frameworks: 5.18.0
Konsole: 15.12.3

$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ zsh --version
zsh 5.1.1 (x86_64-ubuntu-linux-gnu)

$ dpkg -l csh
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version       Architecture  Description
+++-=================-=============-=============-========================================
ii  csh               20110502-2.1u amd64         Shell with C-like syntax
bash locale
  • 2 respostas
  • 1864 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