+ Responder ao Tópico



  1. #1

    Padrão problemas com crontab

    Prezados,

    Criei o seguinte script:

    #!bin\bash
    /etc/init.d/samba stop

    Salvei na pasta /home/scripts com o nome stop_samba.sh e dei permissão de execução.

    No crontab coloquei da seguinte forma:
    # m h dom mon dow command
    0 20 * * * * sh /home/scripts/stop_samba.sh

    Ou seja, todo dia às 20h o script irá parar o serviço do samba.
    Mas não está funcionando. O Script executado diretamente funciona normalmente, mas agendado pelo cron não funciona.
    Alguem sabe onde está errado ?

    Agradeço desde já

    Leo Malkes

  2. #2

    Padrão

    Já tentou mudar:
    #!bin\bash

    Por:
    #!/bin/bash

    ?

    E no cron, substitua:
    0 20 * * * * sh /home/scripts/stop_samba.sh

    por:
    0 20 * * * * /home/scripts/stop_samba.sh

  3. #3

    Padrão

    de fato, usar "\" está errado (no script) - rss

    faça seu script ser executavel: chmod -fv 0755 <seu_script>

    altere o crontab para:

    0 20 * * * /home/scripts/stop_samba.sh

  4. #4

    Padrão

    Citação Postado originalmente por irado Ver Post
    de fato, usar "\" está errado (no script) - rss

    faça seu script ser executavel: chmod -fv 0755 <seu_script>

    altere o crontab para:

    0 20 * * * /home/scripts/stop_samba.sh
    Pessoal o script já esta com permissão para ser executado. E com relação a / do bin\bash não faz diferença, afinal está comentando. É só uma prática para indicar que é um script

  5. #5

    Padrão

    Citação Postado originalmente por malkes Ver Post
    Pessoal o script já esta com permissão para ser executado. E com relação a / do bin\bash não faz diferença, afinal está comentando. É só uma prática para indicar que é um script

    é mesmo? intão tá divirta-se.

  6. #6

    Padrão

    Pessoal o script já esta com permissão para ser executado. E com relação a / do bin\bash não faz diferença, afinal está comentando. É só uma prática para indicar que é um script
    Não, o "#" na primeira linha de um script não é apenas um comentário. Esse recurso é usado desde o Unix e serve pra vc informar qual o interpretardor será usado pra interpretar o script em questão... Ele é importante sim...

    O que está acontecendo é que vc está executando ele no shell precedidio pelo interpretador "sh"... por isso funciona... mas tenta dar um "/home/scripts/stop_samba.sh" sem o "sh" antes no shell e ve que mensagem aparece...

    Oura coisa é a quantidade de "*" no comando do cron... Dá uma olhada como o IRADO colocou no post anterior...

    Resumindo: Altere no script a primeira linha para #!/bin/bash e no cron, coloque como o IRADO falou.

  7. #7

    Padrão

    Oi Irado,
    Eu li em algum tutorial onde o #!\bin\bash era apenas formalidade. Fiz um teste aqui tirando-o do script e funcionou normalmente. De qualquer forma o problema do cron+script não é por causa dele. Enfim, continuo na luta, se tiver alguma sugestão estou aceitando.
    Atenciosamente,
    LM

  8. #8

    Padrão

    para que vc paralize um serviço, vc precisa ser root; no seu caso, em particular, vc criou o crontab como root? Se criou como usuário comum, não funciona mesmo.

    ps:
    hj fiquei preguiçoso (rs), amanhã - provavelmente - dou umas dicas pra vc verificar se o crontab funciona, coisinha simples mas hj tô com fome e sono.

    boa noite

  9. #9

    Padrão

    bem.. vamos tentar acertar isso.
    crie um script assim:
    nome /tmp/teste.sh
    conteúdo:

    #!/bin/bash
    touch /tmp/teste.txt

    faça-o executavel:

    chmod -fv 0755 /tmp/teste.sh

    agora edite o crontab:

    crontab -e

    conteúdo:
    SHELL="/bin/bash"
    */5 * * * * /tmp/teste.sh

    salve e saia.

    nos primeiros 5 minutos (primeira execução) será criado um arquivo vazio, /tmp/teste.txt; a cada 5 minutos seguintes, a data do mesmo será alterada:
    -rw-r--r-- 1 irado 0 Mai 1 20:20 teste.txt
    -rw-r--r-- 1 irado 0 Mai 1 20:25 teste.txt

    se funcionar, indica que vc acertou na "receita". Se não funcionar, comece de novo, até acertar.

    DEPOIS poderá usar o seu script real lembrando que, para "matar" um serviço vc terá que criar o crontab como "root", ou larga-lo lá dentro do /etc/cron.daily (mas aí só aciona 4h da manhã)