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
Alberto Pianon
Asked: 2023-10-26 17:06:44 +0800 CST

Por que o tempo do sistema de arquivos está sempre alguns ms atrás do tempo do sistema no Linux?

  • 27

No Linux, parece que o tempo do sistema de arquivos está sempre alguns milissegundos atrás do tempo do sistema, levando a inconsistências se você quiser verificar se um arquivo foi modificado antes ou depois de um determinado tempo em intervalos de tempo muito estreitos (milissegundos).

Em qualquer sistema Linux com um sistema de arquivos que suporte resolução de nanossegundos (tentei com ext4 com inodes de 256 bytes e ZFS), se você tentar fazer algo como:

date +%H:%M:%S.%N; echo "hello" > test1; stat -c %y test1 | cut -d" " -f 2

o segundo valor de saída (hora de modificação do arquivo) está sempre alguns milissegundos atrás do primeiro (hora do sistema), por exemplo:

17:26:42.400823099
17:26:42.395348462

enquanto deveria ser o contrário, já que o arquivo test1é modificado após chamar o datecomando.

Você pode obter o mesmo resultado em python:

import os, time

def test():
    print(time.time())
    with open("test1", "w") as f:
        f.write("hello")
        print(os.stat("test1").st_mtime)

test()
1698255477.3125281
1698255477.3070245

Por que é tão? E existe uma maneira de evitá-lo, para que a hora do sistema seja consistente com a hora do sistema de arquivos? A única solução alternativa que encontrei até agora é obter o "tempo" do sistema de arquivos (seja lá o que isso signifique na prática) criando um arquivo temporário fictício e obtendo seu horário de modificação, assim:

def get_filesystem_time():
    """
    get the current filesystem time by creating a temporary file and getting
    its modification time.
    """
    with tempfile.NamedTemporaryFile() as f:
        return os.stat(f.name).st_mtime

mas me pergunto se existe uma solução mais limpa.

linux
  • 2 respostas
  • 1084 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
Fravadona
Asked: 2022-04-14 00:25:04 +0800 CST

Como evitar que os anexos automáticos ao .bashrc sejam eficazes?

  • 27

Estou procurando uma maneira de anular o comportamento indesejável de alguns instaladores que anexam código .bashrcpara forçar o carregamento de seu ambiente automaticamente. O problema surgiu algumas vezes, principalmente com o Conda, e em alguns casos o usuário acabou com uma conta quebrada que o impedia de fazer login mais.

Eu tentei adicionar um documento aqui não fechado no final do .bashrc, assim:

# .bashrc

#...

: <<'__END__'

O que funciona, mas gera avisos irritantes de erros de análise .

Qual seria uma maneira limpa de fazer isso (sem tornar o .bashrc somente leitura)?

bash
  • 3 respostas
  • 1677 Views
Martin Hope
cas
Asked: 2019-10-01 02:06:39 +0800 CST

one-liner vs script

  • 27

Tenho notado muitas perguntas e respostas e comentários expressando desdém por (e às vezes até medo de) escrever scripts em vez de frases curtas. Então, gostaria de saber:

  • Quando e por que devo escrever um script autônomo em vez de um "one-liner"? Ou vice-versa?

  • Quais são os casos de uso e os prós e contras de ambos?

  • Algumas linguagens (por exemplo, awk ou perl) são mais adequadas para one-liners do que outras (por exemplo, python)? Se sim, por quê?

  • É apenas uma questão de preferência pessoal ou existem boas razões (ou seja, objetivas) para escrever um ou outro em circunstâncias particulares? Quais são esses motivos?

Definições

  • one-liner: qualquer sequência de comandos digitados ou colados diretamente em uma linha de comando do shell . Muitas vezes envolvendo pipelines e/ou uso de linguagens como sed, awk, perl, e/ou ferramentas como grepou cutou sort.

    É a execução direta na linha de comando que é a característica definidora - o comprimento e a formatação são irrelevantes. Um "one-liner" pode estar todo em uma linha, ou pode ter várias linhas (por exemplo, sh for loop, ou código awk ou sed incorporado, com feeds de linha e recuo para melhorar a legibilidade).

  • script: qualquer sequência de comandos em qualquer idioma(s) interpretado(s) que são salvos em um arquivo e, em seguida, executados. Um script pode ser escrito inteiramente em um idioma, ou pode ser um wrapper de shell-script em torno de vários "one-liners" usando outros idiomas.


Eu tenho minha própria resposta (que postarei mais tarde), mas quero que isso se torne um Q&A canônico sobre o assunto, não apenas minha opinião pessoal.

scripting
  • 10 respostas
  • 8282 Views
Martin Hope
dz902
Asked: 2019-05-23 18:35:20 +0800 CST

O que significa ${!#} no script Shell? [duplicado]

  • 27
Essa pergunta já tem resposta aqui :
Como ${!#} funciona no bash para obter o último argumento da linha de comando? (1 resposta)
Fechado há 3 anos .

Encontrei isso em um script de shell malicioso ofuscado, começando com:

${!#}${*^} <<<...

Não foi possível encontrar nenhuma referência a ${!#}, mas quando echo'd, ele gera -bash. Isso é uma referência secreta para o shell em execução? Por que há um traço extra então?

Obrigado!

shell-script
  • 1 respostas
  • 10333 Views
Martin Hope
exit_status
Asked: 2019-05-20 02:34:24 +0800 CST

É seguro redirecionar stdout e stderr para o mesmo arquivo sem cópias do descritor de arquivo?

  • 27

Eu começo no diretório vazio.

$ touch aFile
$ ls
aFile

Então eu lsdois argumentos, um dos quais não está neste diretório. Redireciono os dois fluxos de saída para um arquivo chamado output. Eu uso >>para evitar escrever simultaneamente.

$ ls aFile not_exist >>output 2>>output
$ cat output
ls: cannot access 'not_exist': No such file or directory
aFile

O que parece funcionar. Há algum perigo para esta abordagem?

io-redirection stdout
  • 3 respostas
  • 2491 Views
Martin Hope
Rick
Asked: 2019-03-08 20:07:40 +0800 CST

Por que /etc/passwd seria usado toda vez que alguém executasse o comando `ls -l`?

  • 27

Leia da APUE , fique curioso:

O arquivo de senha é usado sempre que um usuário efetua login em um sistema UNIX e sempre que alguém executa um ls -lcomando.

passwd ls
  • 1 respostas
  • 3147 Views
Martin Hope
Levi Uzodike
Asked: 2019-02-01 11:10:41 +0800 CST

A tubulação, deslocamento ou expansão de parâmetros é mais eficiente?

  • 27

Estou tentando encontrar a maneira mais eficiente de iterar certos valores que são um número consistente de valores distantes um do outro em uma lista de palavras separadas por espaço (não quero usar uma matriz). Por exemplo,

list="1 ant bat 5 cat dingo 6 emu fish 9 gecko hare 15 i j"

Então, eu quero poder apenas iterar na lista e acessar apenas 1,5,6,9 e 15.

EDIT: Eu deveria ter deixado claro que os valores que estou tentando obter da lista não precisam ser diferentes em formato do resto da lista. O que os torna especiais é apenas sua posição na lista (neste caso, posição 1,4,7...). Então a lista poderia ser1 2 3 5 9 8 6 90 84 9 3 2 15 75 55, mas eu ainda gostaria dos mesmos números. E também, quero poder fazer isso assumindo que não sei o tamanho da lista.

Os métodos que eu pensei até agora são:

Método 1

set $list
found=false
find=9
count=1
while [ $count -lt $# ]; do
    if [ "${@:count:1}" -eq $find ]; then
    found=true
    break
    fi
    count=`expr $count + 3`
done

Método 2

set list
found=false
find=9
while [ $# ne 0 ]; do
    if [ $1 -eq $find ]; then
    found=true
    break
    fi
    shift 3
done

Método 3 Tenho certeza de que a tubulação torna essa a pior opção, mas eu estava tentando encontrar um método que não usasse set, por curiosidade.

found=false
find=9
count=1
num=`echo $list | cut -d ' ' -f$count`
while [ -n "$num" ]; do
    if [ $num -eq $find ]; then
    found=true
    break
    fi
    count=`expr $count + 3`
    num=`echo $list | cut -d ' ' -f$count`
done

Então, o que seria mais eficiente, ou estou perdendo um método mais simples?

shell-script pipe
  • 8 respostas
  • 3466 Views
Martin Hope
Tim
Asked: 2019-01-31 06:04:57 +0800 CST

O `curl -v` mostra a solicitação HTTP completa, incluindo o corpo?

  • 27

Achei user=user&password=passwordque estaria no corpo do pedido, mas não consigo encontrá-lo. Cadê? Mostra -vo pedido completo incluindo o corpo? Obrigado.

$ curl --data "user=user&password=password" -v http://google.com/
*   Trying 172.217.3.110...
* TCP_NODELAY set
* Connected to google.com (172.217.3.110) port 80 (#0)
> POST / HTTP/1.1
> Host: google.com
> User-Agent: curl/7.58.0
> Accept: */*
> Content-Length: 27
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 27 out of 27 bytes
< HTTP/1.1 405 Method Not Allowed
< Allow: GET, HEAD
< Date: Wed, 30 Jan 2019 14:01:40 GMT
< Content-Type: text/html; charset=UTF-8
< Server: gws
< Content-Length: 1589
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< 
<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 405 (Method Not Allowed)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
  </style>
  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>405.</b> <ins>That’s an error.</ins>
  <p>The request method <code>POST</code> is inappropriate for the URL <code>/</code>.  <ins>That’s all we know.</ins>
* Connection #0 to host google.com left intact
curl
  • 2 respostas
  • 55142 Views
Martin Hope
don_crissti
Asked: 2018-12-23 12:44:21 +0800 CST

Por que o awk para e espera se o nome do arquivo contém = e como contornar isso?

  • 27
awk 'processing_script_here' my=file.txt

parece parar e esperar indefinidamente...
O que está acontecendo aqui e como faço para que funcione?

awk filenames
  • 3 respostas
  • 1999 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