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 / computer / Perguntas / 1782231
Accepted
Peter Andres
Peter Andres
Asked: 2023-05-04 03:36:25 +0800 CST2023-05-04 03:36:25 +0800 CST 2023-05-04 03:36:25 +0800 CST

Posso especificar um tempo específico com segundos com Linux crontab?

  • 772
49 18 * * * mpv ~/Musik/Donau.mp3

Este comando reproduziria o Donau.mp3arquivo exatamente às 18h49. Como eu poderia, por exemplo, especificar 6:49:50pm?

linux
  • 2 2 respostas
  • 2054 Views

2 respostas

  • Voted
  1. Best Answer
    Gilles Quénot
    2023-05-04T03:38:20+08:002023-05-04T03:38:20+08:00

    Usando systemdo temporizador: https://wiki.archlinux.org/title/Systemd/Timers

    Você também pode especificar segundos:

    OnCalendar=Mon,Tue *-*-01..04 18:49:50
    

    Ou assim, 'hacking' crontab:

    49 18 * * * sleep 50; mpv ~/Musik/Donau.mp3
    

    Não espere que esta última solução seja precisa devido à forma como cronfunciona.

    • 22
  2. Austin Hemmelgarn
    2023-05-04T19:50:14+08:002023-05-04T19:50:14+08:00

    Este comando reproduziria o arquivo "Donau.mp3" exatamente às 18h49.

    Não exatamente 18h49, exatamente 18h49. Essa é uma distinção importante que, na verdade, explica em parte por que a maioria das implementações do cron não pode fazer o que você deseja.

    Em um nível alto, o que o crond realmente faz é dormir por aproximadamente 60 segundos, depois verificar quais tarefas precisam ser executadas e dispará-las, depois dormir novamente por aproximadamente 60 segundos menos o tempo que levou para verificar e iniciar as tarefas neste ciclo.

    No entanto, nenhum dos mecanismos usados ​​para suspender um processo por algum tempo em sistemas do tipo UNIX permite um tempo de ativação exato . Eles apenas permitem que você especifique um limite inferior no horário de ativação. Por exemplo, no código C, sleep(10);irá dormir por pelo menos 10 segundos, mas pode dormir por mais tempo do que isso (na verdade, quase sempre vai dormir pelo menos um quanta de agendamento a mais do que isso). Normalmente, a discrepância é inferior a 200 ms, mas é totalmente possível que seja significativamente mais longa se o sistema estiver muito carregado ou se o processo que está sendo ativado tiver uma prioridade excepcionalmente baixa.

    Para o caso usual de crond de dormir por 60 segundos, o jitter de alguns segundos é geralmente insignificante, porque ele pode apenas ajustar quanto tempo dorme no próximo ciclo para compensar. Se, no entanto, ele estivesse tentando executar as coisas a cada segundo, o jitter de mais de meio segundo seria suficiente para causar problemas de confiabilidade e possivelmente perder eventos.

    Isso levanta a questão de por que o systemd permite que você especifique carimbos de data/hora até o segundo para unidades de cronômetro. A realidade é que ele também não agenda com essa precisão . O Systemd oferece resolução por segundo porque opera de maneira fundamentalmente diferente do crond, em vez de verificar todos os ciclos de tarefas que precisam ser executadas, o systemd define os cronômetros para serem ativados quando uma tarefa precisa ser executada. Em um sistema idealizado com jitter de tempo mínimo, isso permite que ele realmente acione as coisas com esse nível de precisão. Na prática, porém, não é incomum em um sistema ocupado que as unidades de timer programadas com essa precisão estejam um ou dois segundos atrasadas.

    Como eu poderia (por exemplo) especificar 6:49'50pm?

    Se você realmente precisa desse nível de precisão, a resposta correta é usar um sistema operacional em tempo real para o que quer que esteja fazendo, não um sistema operacional de compartilhamento de tempo.

    Você pode chegar perto disso em um sistema Linux executando o crond com uma prioridade de agendamento em tempo real, mas fazer isso com segurança requer uma quantidade significativa de esforço para garantir que as tarefas não herdem essa prioridade (o que representaria um risco não trivial de causar problemas para qualquer outra coisa em execução no sistema), mas isso ainda não permitirá que você escolha os horários exatos até o segundo para executar os trabalhos.

    • 7

relate perguntas

  • Como eu faria minha máquina Linux parecer que está executando o Windows?

  • Existe um equivalente a cd - para cp ou mv?

  • execute o contêiner do docker como root

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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