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

Kiwy's questions

Martin Hope
Kiwy
Asked: 2024-07-02 20:43:00 +0800 CST

systemctl daemon-reload: mostra a diferença entre a configuração em execução e o arquivo atual

  • 6

Eu executo o seguinte comando:

systemctl status tomcat10.service
#and get the following warning: 
Warning: The unit file, source configuration file or drop-ins of tomcat10.service changed on disk. Run 'systemctl daemon-reload' to reload units.

Se eu olhar para o arquivo da unidade

ls -l /usr/lib/systemd/system/tomcat10.service
-rw-r--r-- 1 root root 1161 Jul  2 12:36 /usr/lib/systemd/system/tomcat10.service

O arquivo foi modificado ou pelo menos modificado.

No entanto, mesmo se eu comparar a configuração atual em execução usando alguma engenhoca como esta:

systemctl cat tomcat10.service | diff /usr/lib/systemd/system/tomcat10.service -
# Warning: tomcat10.service changed on disk, the version systemd has loaded is 
outdated.
# This output shows the current version of the unit's original fragment and drop-in files.
# If fragments or drop-ins were added or removed, they are not properly reflected in this output.
# Run 'systemctl daemon-reload' to reload units.
0a1
> # /usr/lib/systemd/system/tomcat10.service

Mas neste caso não consigo ver nada diferente e a mensagem me confunde, estou realmente comparando o congig em execução com a configuração atual? e se eu não sou nada como mudança, então por que o systemd está me pedindo um daemon-reload?
Então, minha pergunta é como posso comparar de forma confiável a configuração da unidade systemctl em execução com a configuração de inicialização atual?
E de forma mais ampla, como saber o que mudou ao fazer ou está prestes a mudar quando/antes de digitar systemctl daemon-reload.

systemd
  • 1 respostas
  • 20 Views
Martin Hope
Kiwy
Asked: 2024-06-24 19:52:23 +0800 CST

find -printf para o momento da criação do arquivo não está funcionando conforme o esperado, é um bug?

  • 13

Estou tentando imprimir a data de nascimento do arquivo ( crtime), estou trabalhando com ext4 e suporte para crtime enable:

stat a
  File: a
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 254,5   Inode: 393233      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1006/    user)   Gid: ( 1006/    user)
Access: 2024-06-24 13:35:25.672343713 +0200
Modify: 2024-06-24 13:35:25.672343713 +0200
Change: 2024-06-24 13:35:25.672343713 +0200
 Birth: 2024-06-24 13:35:25.672343713 +0200

ao tentar exibir a data de nascimento find -printf '%B@'conforme indicado no manual:

%Bk    File's  birth  time,  i.e., its creation time, in the format 
specified by k, which is the same as for %A. 
This directive produces an empty string if the underlying operating 
system  or  filesystem does not support birth times.

Eu obtenho esse resultado:

find -name a -printf '%B@ %p\n' 
-1.-000000010 ./a

É um bug ou um recurso que não conheço ou algo mais. Estou usando o find versão 4.9.0-5 (e testei a versão -4 também).

Eu tentei no Ubuntu e no Debian.

debian
  • 1 respostas
  • 277 Views
Martin Hope
Kiwy
Asked: 2018-12-12 01:11:02 +0800 CST

Saída de tratamento awk csv linha malformada para stderr

  • 1

Eu tenho um script que pega vários arquivos CSV de uma pasta e os junta em um arquivo gzip com um campo extraído do nome do arquivo:

awk -F";" 'BEGIN { OFS = FS }
FNR == 1 { match(FILENAME, "([0-9]{8})", a); JOBID = a[1]; print $0, JOBID }
FNR > 1 { print $0, JOBID }' Event_*txt | gzip > agzipfile.gz

Meu objetivo é usar NFpara verificar se a linha contém 5 campos e se não imprimir esta linha para stderr ou para outro arquivo.
Mas eu não entendi ou encontrei uma maneira adequada de fazer isso.
É possível e como?
PS: estou usando GNUawk

awk csv
  • 1 respostas
  • 107 Views
Martin Hope
Kiwy
Asked: 2018-06-27 05:19:32 +0800 CST

Resultado inconsistente do desempenho do tamanho do bloco de leitura/gravação, meu teste é preciso?

  • 1

Estou tentando fazer alguns testes em termos de tamanho de bloco do sistema de arquivos para identificar algum gargalo potencial em um trabalho de grade devido a IO ruim. Percebo muito incremento de arquivo pequeno de 8096 B durante o trabalho enquanto o tamanho do bloco do FS é:

stat -fc %s /my/filesytem
1048576

O que está longe de ser o ideal. Para simular tal comportamento criei dois pequenos arquivos aleatórios de 1GB a 20GB com dde /dev/urandomcomo fonte, e tentei este código python:

#!/bin/python
bsize=8096
print('File random.20g1')
print(strftime("%Y-%m-%d_%H:%M:%S"))
f1= open('random.20g1','rb')
f2= open('random.20g1.dest','wb')

while True:
   b = f1.read(bsize)
   if b:
       f2.write(b)
   else:
       break
print(strftime("%Y-%m-%d_%H:%M:%S"))

E eu tentei o mesmo com bsize=1048576.

Primeiro observo uma pequena diferença de tempo de leitura/gravação de 4 segundos entre um tamanho de bloco de 8096 e 1048576 (4 segundos a menos para o tamanho de bloco grande).
Este primeiro resultado foi promissor mas depois de mais testes, como aumentar o tamanho do arquivo para 20GB ou fazer o mesmo com 10 arquivos de GB observo sempre a mesma diferença de 4/3 segundos em termos de desempenho e o ganho nunca escala qualquer que seja o Arquivo.

Estou fazendo algo errado no meu procedimento de teste ou parece bom para você?
Eu teria esperado alguma melhora no aumento do tamanho do arquivo, por exemplo.

io performance
  • 1 respostas
  • 1023 Views
Martin Hope
Kiwy
Asked: 2018-06-21 02:39:46 +0800 CST

Como executar o comando antes do login do usuário no linux

  • 11

Essa é uma pergunta que já vi várias vezes para vários tipos de Linux, então vamos tentar ser exaustivos.
Qual é o método para executar script/comando/programa antes e depois do login do usuário em sua sessão da área de trabalho?

lightdm gdm
  • 2 respostas
  • 20806 Views
Martin Hope
Kiwy
Asked: 2018-05-25 03:50:10 +0800 CST

Extraia o valor de FILENAME em awk e use-o como um novo campo

  • 1

Estou trabalhando em um arquivo CSV nomeado Event_42417555_2018-05-23_16\:45\:28-log.txte formatado assim:

timestamp;fullpath;event;size
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_OPEN;2324
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_ACCESS;2324
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_CLOSE_NOWRITE;2324
1521540649.02;/home/workdir/quad_list_14.json;IN_OPEN;2160
1521540649.03;/home/workdir/quad_list_14.json;IN_ACCESS;2160
1521540649.03;/home/workdir/quad_list_14.json;IN_CLOSE_NOWRITE;2160

O que eu quero é adicionar uma coluna a este arquivo com base em um valor no nome do arquivo extraído com regex [0-9]{8}(e remover o cabeçalho).

1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_OPEN;2324;42417555
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_ACCESS;2324;42417555
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_CLOSE_NOWRITE;2324;42417555
1521540649.02;/home/workdir/quad_list_14.json;IN_OPEN;2160;42417555
1521540649.03;/home/workdir/quad_list_14.json;IN_ACCESS;2160;42417555
1521540649.03;/home/workdir/quad_list_14.json;IN_CLOSE_NOWRITE;2160;42417555

Com as ferramentas gnu é fácil, seria assim (pouco testado e quase certo que há algum problema com aspas de alguma forma):

#!/bin/bash
#$1 being the filename
JOBID=$(grep -oE "[0-9]{8}" "${1}")
sed -E "s/(.*)/\1;$JOBID/" "${1}"

Eu quero conseguir isso awkaté agora aqui o que funcionou melhor :

awk -F";"  'JOBID=substr(FILENAME ,match(FILENAME,"[0-9]{8}"),8); \  
BEGIN { OFS=";"} { if ($1 != "timestamp") print $0,JOBID; }' \  
Event_42417555_2018-05-23_16\:45\:28-log.txt | head

timestamp;fullpath;event;size
timestamp;fullpath;event;size
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_OPEN;2324
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_OPEN;2324;42417555
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_ACCESS;2324
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_ACCESS;2324;42417555
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_CLOSE_NOWRITE;2324
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_CLOSE_NOWRITE;2324;42417555

Eu tenho minha variável e ela está definida corretamente, mas não consigo encontrar a posição adequada para ela.
Se eu mover o JOBID=substr(FILENAME ,match(FILENAME,"[0-9]{8}"),8);
não consigo acessar a variável.
O problema aqui é que o arquivo é processado duas vezes, uma corretamente (embora minha condição seja ignorada) e a outra onde considerou minha variável

awk text-processing
  • 1 respostas
  • 957 Views
Martin Hope
Kiwy
Asked: 2018-04-27 06:21:51 +0800 CST

Por que o memmap IO é ignorado em /proc/[PID]/io

  • 3

Eu tenho um problema /proc/[PID]/io e memmap, preciso criar o perfil do aplicativo IO que usa a biblioteca python astropy .
Um dos problemas que tenho é que os bytes totais de leitura/gravação de IO estão incorretos em /proc/[PID]/io.

Eu tenho um roteiro copy.sh:

#!/bin/bash
cp huge.fits huge.2.fits
#python copyfits.py
#python copyfitsMemmapOFF.py
sleep 5 
cat /proc/$$/io

Eu comento a cplinha e a linha que desejo executar para cada teste.

copyfits.pycontém:

from astropy.io import fits    
hdulist = fits.open('huge.fits', mode='readonly')
hdulist.writeto('huge.2.fits')
hdulist.close()

copyfitsMemmapOFF.pycontém:

    from astropy.io import fits    
    hdulist = fits.open('huge.fits', mode='readonly', memmap=False)
    hdulist.writeto('huge.2.fits')
    hdulist.close()

aqui estão os resultados de IO para cada solução:

cp huge.fits huge.2.fits

rchar: 9749929202
wchar: 9749551680

python copyfits.py

**rchar: 8399421**
wchar: 9749551685

python copyfitsMemmapOFF.py

rchar: 9757502959
wchar: 9749551685

Entendo que o memmap desativado levará a resultados de E/S inconsistentes ao usar essa variável para monitorar quanto o aplicativo lê arquivos. Como/por que memmap não são contados no IO padrão e como posso descobrir sobre esses IO?
Porque se for o kernel em vez do arquivo de leitura do aplicativo, o arquivo ainda será acessado.

memory io
  • 1 respostas
  • 355 Views
Martin Hope
Kiwy
Asked: 2018-04-12 07:28:57 +0800 CST

Otimização de script para encontrar nomes de arquivo duplicados em CSV enorme

  • 4

Tenho vários arquivos CSV de 1MB a 6GB gerados por inotifyscript com uma lista de eventos formatados como:
timestamp;fullpath;event;size.

Esses arquivos são formatados assim:

timestamp;fullpath;event;size
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_OPEN;2324
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_ACCESS;2324
1521540649.02;/home/workdir/ScienceXMLIn/config.cfg;IN_CLOSE_NOWRITE;2324
1521540649.02;/home/workdir/quad_list_14.json;IN_OPEN;2160
1521540649.03;/home/workdir/quad_list_14.json;IN_ACCESS;2160
1521540649.03;/home/workdir/quad_list_14.json;IN_CLOSE_NOWRITE;2160
1521540649.03;/home/workdir/ScienceXMLIn/masterbias_list.asc;IN_OPEN;70
1521540649.03;/home/workdir/ScienceXMLIn/masterbias_list.asc.1;IN_OPEN;80
1521540649.03;/home/workdir/ScienceXMLIn/masterbias_list.asc.2;IN_OPEN;70
1521540649.03;/home/workdir/otherfolder/quad_list_14.json;IN_OPEN;2160
1521540649.03;/home/workdir/otherfolder/quad_list_14.json;IN_CLOSE_NOWRITE;2160

Meu objetivo é identificar o arquivo com o mesmo nome que aparece em pastas diferentes.
Neste exemplo, o arquivo quad_list_14.jsonaparece nos formatos /home/workdir/otherfoldere /home/workdir/.

Minha saída desejada é simples apenas a lista de arquivos que aparece em mais de uma pasta, neste caso ficaria assim:

quad_list_14.json

Para fazer isso, escrevi este pequeno trecho de código:

#this line cut the file to only get unique filepath
PATHLIST=$(cut -d';' -f 2 ${1} | sort -u)
FILENAMELIST=""

#this loop build a list of basename from the list of filepath
for path in ${PATHLIST}
do
    FILENAMELIST="$(basename "${path}")
${FILENAMELIST}"
done

#once the list is build, I simply find the duplicates with uniq -d as the list is already sorted
echo "${FILENAMELIST}" | sort | uniq -d

Não use este código em casa, é terrível, eu deveria substituir este script por um onliner como este:

#this get all file path, sort them and only keep unique entry then
#remove the path to get the basename of the file 
#and finally sort and output duplicates entry.
cut -d';' -f 2 ${1} | sort -u |  grep -o '[^/]*$' | sort | uniq -d

Meu problema, porém, permanece e muitos arquivos e o mais curto leva 0,5 segundo, mas o mais longo leva 45 segundos em um SSD (e meu disco de produção não será tão rápido) para encontrar o nome do arquivo duplicado em uma pasta diferente.

Preciso melhorar esse código para torná-lo mais eficiente. Minha única limitação é que não consigo carregar totalmente os arquivos na RAM.

bash awk
  • 3 respostas
  • 106 Views
Martin Hope
Kiwy
Asked: 2018-02-28 08:36:15 +0800 CST

/proc/[PID]/stat exibe estatísticas cumulativas de CPU sobre processos filho

  • 2

Não tenho certeza de expressar esta pergunta corretamente e tentei ler o man proc, mas não consigo encontrar uma resposta adequada e não consegui encontrar uma maneira simples de verificá-la.
Tento obter o consumo de CPU/RAM para um PID, mas não sei quantos processos filhos serão convertidos pelo programa e quero obter a quantidade total de consumo de CPU e RAM, não apenas o processo principal.
Eu sei de fato e experiência que /proc/[PID]/ioé de fato cumulativo em todos os processos filhos, mas gostaria de saber e, se possível, com provas, se o mesmo se aplica a /proc/[PID]/stat.

proc
  • 1 respostas
  • 4311 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