Como executar um comando como se fosse chamado pelo cron

3

Eu escrevo um script e o defino como um cron job. Mas devido a uma diferença de variáveis de ambiente, não funciona como deveria.

Nesse caso, altero um pouco com crontab -e e defino um horário de trabalho cron mais próximo e aguardo o próximo minuto para mostrar o resultado. Eu sinto que essa é uma abordagem totalmente absurda, mas eu não conheço melhor maneira de fazer isso.

Se houver uma maneira de executar um script como se fosse chamado dentro do cron job, eu o usaria.

Alguém sabe como fazer isso?

    
por ironsand 26.03.2014 / 01:32

2 respostas

1

Aqui está como fazer o contrário: forçando a execução do cron a usar seu ambiente de login:

bash -lc "your_command"

Do manual do bash:

-c string     If the -c option is present, then commands are read from string.
              If there are arguments after the string, they are assigned to the
               positional parameters, starting with $0.
-l            Make bash act as if it had been invoked as a login shell
               (see INVOCATION below).

INVOCATION (um pouco despojado):

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.

Para saber mais:

por 26.03.2014 / 01:38
0

A melhor maneira é usar at .

Aqui estão alguns exemplos

 echo $PWD/script.sh | at now

ou

 echo "reboot" | at 5:00

ou

 echo "mail -s test user@host" | at now + 1 hour

Aqui estão alguns exemplos de data / hora

    
por 26.03.2014 / 01:59

Tags