Cronjob uma vez por dia no Ubuntu 12.04 [duplicado]

1

Eu configurei um VPS com o Ubuntu 12.04 e agora quero executar um cronjob uma vez por dia.

A linha de comando é a seguinte:

    mono /root/Folder/Aplication.exe

Eu olhei e olhei em torno da internet, mas não consigo entender como fazê-lo. Por exemplo, quero executar este comando a cada 24 horas à meia-noite.

Agradeço antecipadamente por ler minha pergunta e, claro, por todas as respostas.

    
por ManouHH 08.01.2017 / 18:52

2 respostas

1

Como existem algumas diferenças complementares entre a resposta do @ Guss e a minha, deixarei.

Aqui você é uma ilustração sobre a configuração cronjobs ( source ):

* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
  • Se você quer executar um trabalho pelo seu $ USER todos os dias às 00:15 horas, você precisa editar o arquivo crontab do usuário (que está localizado em /var/spool/cron/crontabs/<user_name> ). Você pode fazer isso pelo comando crontab -e . (Talvez haja uma caixa de diálogo, onde você deve escolher o editor de texto do terminal padrão.) No final do arquivo crontab , adicione a próxima linha:

    15 0 * * * /usr/bin/mono /root/Folder/Aplication.exe > /var/log/mono.daily.log 2>&1
    
    • /usr/bin/mono é recomendado usar o caminho completo para o comando no Cron. Para encontrá-lo, você pode usar sudo updatedb && sudo whereis mono .
    • > /var/log/mono.daily.log esta parte irá redirecionar a saída para um arquivo de log, caso você queira rastrear o que acontece com o seu cronjob . Se você quiser manter os dados de registro dos dias anteriores, use >> em vez de > .
    • 2>&1 esta parte colocará as mensagens de erro no arquivo de log.
  • Se você deseja executar um trabalho por root , edite o arquivo crontab : sudo crontab -e e adicione a linha mostrada acima.

  • Além disso, para os cronjobs diários , você pode adicionar um arquivo executável na pasta /etc/cron.daily . Para encontrar um exemplo, verifique alguns dos arquivos existentes nessa pasta.

por pa4080 08.01.2017 / 20:02
1

Você executa tarefas agendadas no Ubuntu (e em outros Linuxes) usando o cron. Uma coisa que é importante lembrar sobre o cron, é que existem "tabelas cron do usuário" e "tabelas cron do sistema".

Se você deseja que seu aplicativo seja executado no contexto de um usuário, é relativamente simples: faça login como esse usuário e execute crontab -e . Você entraria em um editor onde você edita a tabela cron manualmente.

Em uma tabela cron do usuário, você tem 6 campos:

<minute> <hour> <day-of-month> <month> <day-of-week> <command ...>

O campo é separado por espaços, exceto " command ", que se estende até o final da linha (com algumas ressalvas). Leia man 5 crontab para os detalhes sangrentos.

Para executar algo todos os dias, você pode querer escolher um horário e, em seguida, programá-lo nos dois primeiros campos, deixando todos os outros campos como um asterisco (ou seja, "vale tudo"). Então a expressão

1 2 * * * mono /root/Folder/Aplication.exe

Executaria seu aplicativo mono todos os dias (todos os dias de cada mês, independentemente do dia da semana - esses são os três asteriscos) às 2h01 (os dois primeiros campos).

Agora, porque vejo que você instalou seu aplicativo em /root , presumo que você queira executar este aplicativo como um aplicativo do sistema - o que também faz mais sentido ao configurar um servidor em um VPS de qualquer maneira. Um crontab do sistema é muito semelhante a um crontab de usuário, exceto que é armazenado em um arquivo no diretório /etc e possui um campo adicional especificando sob qual usuário você deseja executá-lo - o que provavelmente será root . Então, a expressão pode ser assim:

1 2 * * * root mono /root/Folder/Aplication.exe

e você provavelmente vai querer colocar isso em um novo arquivo que você cria em /etc/cron.d/ - talvez /etc/cron.d/myapp (note que não há extensão - isso é de propósito). Em /etc/ , há vários outros arquivos e diretórios crontab, que podem ser realmente úteis para coisas como execuções diárias, como /etc/cron.daily - leia sobre eles na página do manual crontab files que eu mencionei acima.

Notas

  1. Não execute o Ubuntu 12.04 - é super obsoleto. Melhor tentar 16,04
  2. Checkout Crontab.Guru para todas as suas necessidades de expressão em crontab.
por Guss 08.01.2017 / 19:11