Como executar o comando a cada 10 segundos (sem cron)?


36

Quando executo cron, recebo esta falha

cron: não é possível abrir ou criar /var/run/crond.pid: permissão negada

Então, como fazer isso sem cron?

PS: Eu quero verificar se o arquivo no svn mudou e eu tenho um script especial para ele.


Se você não tiver permissão, tente executar o cron com sudo.
Anônimo

4
Lembre-se de que o cron não fará algo a cada 10 segundos, o mais granular que obtém é uma vez por minuto.
Cesium

Se você deseja criar cronjobs, é necessário executar crontab -epara iniciar o editor. Para listar os crons atuais, executecrontab -l
Lekensteyn

@ Anonymous Eu não sei a senha do root, então o sudo não vai me ajudar.
UAdapter 26/11/11

Respostas:


59

Para acessar sua cronconfiguração pessoal, você deve usar o comando crontab -e(para editar sua tabela cron).

Alternativa é o watchcomando:

watch -n10 command args

Finalmente, para monitorar os eventos do sistema de arquivos de forma mais eficaz, você poderia usar inotifywait, a partir inotify-toolsdo pacote.


11
Vale a pena notar, talvez, seria melhor agrupar seus comandos entre aspas duplas ou você pode acabar com resultados inesperados. watch -n<timeout> "command(s) arg(s)"comowatch -n2 "ps ux | grep ss5"
Aquiles

Achei difícil watchaceitar comandos longos e complicados usando pipes e aspas. O loop while abaixo funcionou, mas é claro que sempre se deve dormir primeiro para evitar pidões fugitivos.
rjurney

@rjurney: deve ser o suficiente para envolver todo o comando entre aspas, simples ou melhor duplo:watch -n10 "ls -l | grep $foo"
enzotib

@enzotib O problema surge quando há aspas nos comandos, pois aspas dentro de aspas dentro de (Deus me ajude) citações se aproximam impossível no bash. Em teoria, deveria ser possível, mas raramente alcanço aspas aninhadas no bash sem desistir e seguir uma rota diferente.
rjurney 28/04

32

Você pode escrever um script de shell que possui sleepum loop while.

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done

5
while truenão requer colchetes quadrados, caso contrário, "true" é interpretado como uma string e cada string é tão boa quanto "true".
enzotib

11
@enzotib assim que você poderia muito bem escrever enquanto cerca
Eduard Florinescu

Enquanto isso funciona, você deve sempre dormir primeiro, porque algo pode ocorrer, fazendo com que a etapa do sono não seja atingida; nesse caso, você tem um pid fugitivo inundando alguma coisa.
rjurney 25/04

4

O gnome-schedule (clique no botão paraInstall now!usar o Software Center)
é uma interface gráfica do usuário que aproveita o poder do vixie-cron, dcron e no para gerenciar seu arquivo crontab e fornecer uma maneira fácil de agendar tarefas no seu computador. Ele suporta tarefas recorrentes (periódicas) e tarefas que acontecem apenas uma vez no futuro. Está escrito em Python usando pygtk.

Recursos impressionantes

  • Oferece suporte a títulos e ícones personalizados para suas tarefas, para que sejam mais fáceis de acompanhar
  • Os modelos oferecem suporte para que você não precise criar a mesma tarefa repetidamente; eles são salvos no gconf e podem facilmente enviá-los com, digamos, uma distribuição Linux
  • Se executado como root, você pode editar as tarefas crontab e "at" de qualquer usuário.
  • Sequências legíveis por humanos, como "Toda hora" em vez de "0 * * * *"
  • Modo avançado para especialistas em crontab
  • Fornece um "applet de painel" onde você pode gerenciar tarefas em um menu suspenso
  • Expressões comuns predefinidas como: a cada minuto, a cada semana, amanhã, na próxima semana Um calendário permite que você escolha o dia em que deseja executar uma tarefa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.