Quando o cron executa seu trabalho, ele faz isso em um ambiente que não é o mesmo que o seu ambiente atual do shell.
Isso significa, por exemplo, que ./script.sh
pode não ser encontrado.
Existem duas soluções:
*/1 * * * * ( cd $HOME/mydir && ./script.sh )
ou
*/1 * * * * $HOME/mydir/script.sh
Ou seja, especifique exatamente onde o script pode ser encontrado.
A primeira alternativa pode ser preferível se você não usar nomes de caminhos absolutos para o arquivo de saída dentro do script.
Se você escolher a segunda opção, modifique seu script para saber onde o arquivo de saída está:
#!/bin/bash
echo "$USER" >"$HOME/mydir/cron.txt"
ou
#!/bin/bash
( cd "$HOME/mydir" && echo "$USER" >cron.txt )
Observe que a linha #!
precisa conter o caminho absoluto correto para bash
(o seu caminho é relativo).
Deve-se notar também que o cron em alguns Unices (Linux) não define USER
para o nome de usuário do usuário que está executando o cron job. Nesses sistemas, use $LOGNAME
ou defina USER
a $LOGNAME
ao invocar o script:
*/1 * * * * env USER=$LOGNAME $HOME/mydir/script.sh