Jump to content

Shell script linux


dario1133

Recommended Posts

Isso é capaz de dar, desde que corras o script manualmente :|

O melhor seria acrescentares uma linha ao teu crontab. Corre (na consola):

crontab -e

E acrescenta esta linha:

0 23 * * * rm /DIRETORIA/Lixo/*.* > /dev/null

Não te esqueças de substituir DIRETORIA pelo caminho para a pasta Lixo.

Assim, o Cron (daemon que serve para agendar a execução de programas) vai correr esse comando todos os dias às 11 da noite.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

  • 2 weeks later...

O crontab é um serviço que executa tarefas periodicamente. Podes ver que tarefas estão a ser executadas pelo teu crontab ( há um por utilizador se não me engano ) com o comando:

crontab -l

Ora, para acrescentares uma tarefa ( que pode ser o teu script de remoção, ou um script em python, ou o executar de um binário ) ao crontab, tens que o editar.

crontab -e

Se for a primeira vez, ele vai-te pedir que editor de texto queres usar. Aconselho-te ( e ele também ) o nano. Aparece-te um ficheiro tipo isto:

# m h  dom mon dow  command

# indica um comentário, ou seja, a linha não é "executada".

m - minutos ( 0 - 59 )

h - horas ( 0 - 23 )

dom - dia do mês ( 1 - 31 )

mon - mês ( 1 - 12 ou jan, feb, mar, etc )

dow - dia da semana ( 0 - 6 ou sun, mon, etc  ) ( começa a domingo )

Crias o script hello.sh com o conteúdo:

echo 'hello!' >> ~/hello.txt

Este script cria-te um ficheiro hello.txt na home e quando é executado escreve uma linha nova a dizer hello!

Para o executares todos os minutos, com o cron, fazes:

# m h  dom mon dow  command

  *  *    *    *          *        /caminho/para/hello.sh

Ou seja, executas o script TODOS os minutos, TODAS a horas, TODOS os dias, TODOS os meses. É o que teres um asterisco em todo o lado quer dizer.

Imagina que o queres uma vez por hora:

# m h  dom mon dow  command

  0  *    *    *          *        /caminho/para/hello.sh

Assim defines que ele só se executa no primeiro minuto de cada hora.

Segue os links que te deram anteriormente para uma explicação mais detalhada.

Link to comment
Share on other sites

  • 2 weeks later...

ok eu entendi, mas eu tenho de fazer isso num script, e nao indo à consola escrever crontab -e.

eu encontrei um script parecido com o que quero mas é para guardar o conteudo do directorio home para um ficheiro de texto sendo executado todos os dias as 24h, é o seguinte:

#!/bin/bash

sudo cat 30 12 * * * ls -lR /home > backup_directoria.odt >> /etc/crontab

dialog --title 'Directoria home' --msgbox 'Conteudo do directorio "home" criada com sucesso num ficheiro do tipo .odt'

0 0

eu quero algo parecido mas que sirva para criar uma pasta 'lixo' e apagar o conteudo da pasta as 23h.

podem -me ajudar?

espero ter sido claro.

obrigado

Link to comment
Share on other sites

os exemplos que me deram sao todos indo ao crontab e agendar, eu entendi mas eu cria que o script fizesse isso automaticamente, ter só o script quer atraves de algum comando agendasse o que quero.

não ha maneira de por o script a fazer aquilo que faria se fosse ao crontab acrescentar a linha:

0 23 * * * rm /DIRETORIA/Lixo/*.* > /dev/null

?????

Link to comment
Share on other sites

Evita Triple-Posts 🙂

Tu o mais que podes fazer é ter um script que te cria a directoria e depois faz upload do ficheiro para o crontab. O crontab, como já devias ter lido da documentação toda que aqui se pôs, pode ser editado ou pode ler ficheiros. Por isso, se queres mesmo fazer isso automaticamente (o que não entendo uma razão para tal), fazes um script mais ou menos como o aí em cima mas que passe argumentos directamente ao crontab. Coisa que não sei fazer. O mais que podes fazer é fazer algo tipo:

echo '* 23 * * * * blabla' > temp_cron.txt
crontab temp_cron.txt
rm temp_cron.txt

Isto deve funcionar como queres..

Link to comment
Share on other sites

Peço desculpa pelos posts.

Pois eu sei que pode ler ficheiros, só não sei é como,  já andei à procura e nada, aparece só exemplos como os que me deram aqui, acrescentando uma linha de código no crontab. Quero que faça automaticamente porque é para entregar e não para eu usar, como tal convém que corra automaticamente.

#!/bin/bash

mk dir Lixo

echo '* 23 * * * * rm /Desktop/Lixo/*.*' > temp_cron.txt

crontab temp_cron.txt

rm temp_cron.txt

Assim está bem para aquilo que pretendo??

Link to comment
Share on other sites

Não vou ser eu que vou editar o teu último post, copiar o conteúdo, colá-lo no de cima. E depois apagar o 2o. Vais tu fazê-lo ok? 🙂

Sim, deve ser isso que tu queres. Experimenta. Porque não fazes simplesmente o ficheiro do crontab e envias juntamente com o programa? E o script só o teria que chamar. É isso que faço nas minhas coisas. Algum problema no cron, só se tem q mudar o ficheiro e não andar a ver o script.

Link to comment
Share on other sites

Boa Noite

Bem mudei de ideias e prefiro executar como no 1º exemplo que me deram.

Fiz um script, o seguinte para me criar a minha pasta:

#!/bin/bash

mkdir /home/ubuntu/Documentos/Lixo/ 

a pasta foi criada nos documentos, e acrescentei-lhe um ficheiro.txt

depois fui à consola fiz crontab -e, e acrescentei a seguinte linha:

10 23 * * * rm /home/ubuntu/Documentos/Lixo/*.* > /dev/null

fiz ctrl O, para guardar, depois enter, depois ctrl X para sair.

depois na consola coloquei crontab -l, e mostrou a linha que acrescentei.

mas não funcionou, às 23:10 devia apagar o ficheiro que guardei na pasta lixo, mas nao fez nada.

Podem-me detectar o erro?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.