Eu tentei fazer backup do meu Crontab para arquivo usando o seguinte comando: crontab -l > backup/crontab
. Mas isso cria apenas um arquivo vazio no diretório backup
e nenhuma saída é impressa no terminal. O código de saída desse comando é 0
.
Se eu fizer crontab -l
sem redirecionamento, recebo a saída esperada:
/5 * * * * /path/to/script
...
Por que meu comando está falhando ao gravar meu conteúdo do Crontab no arquivo e o que devo fazer para que isso funcione?
Estou usando o Centos 7.7
e as seguintes versões dos pacotes Cron instalados:
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-23.el7.x86_64
cronie-anacron-1.4.11-23.el7.x86_64
Shell que eu uso é GNU bash, version 4.2.46
.
EDITAR:
[user@host ~]$ crontab -l > backup/crontab
[user@host ~]$ ll backup
total 248K
drwx------. 28 user user 4,0K 31.10. 09:30 .
drwxr-xr-x. 7 user user 4,0K 1.10. 12:58 ..
-rw-rw-r--. 1 user user 0 31.10. 09:30 crontab
...
Backup é um diretório local e tem a seguinte política Selinux: staff_u:object_r:user_home_t:s0
.
EDIT2:
crontab -l > /tmp/crontab
funciona e outros locais onde também tenho acesso de gravação, mas quando o destino está dentro do meu diretório inicial, ele falha. Eu me pergunto se selinux
está causando isso.
Para redirecionar fielmente a saída do console, salve a saída como uma string, usando aspas para preservar absolutamente o conteúdo, assim:
ou, conforme comentários (que eu não pensei rápido o suficiente, desculpas!)
Isso evita que a saída redirecionada seja interpretada de alguma forma... por exemplo, a barra no início do seu exemplo crontab. Observe que "echo -e" interpretará sequências de escape - por exemplo. caracteres como \n, \r, \t etc. - então use "echo" sem a opção.
Na maioria dos sistemas, o redirecionamento simples (crontab -l > filename), conforme você usa, deve funcionar bem.