É ruim editar o arquivo cron manualmente?

12

Geralmente é instruído a introduzir novos trabalhos cron através de linhas de comando; mas achei mais fácil (com um melhor controle das tarefas cron atuais) editar manualmente (no editor de texto) o arquivo cron do usuário /var/spool/cron/crontabs/root.

É perigoso editar o arquivo no editor de texto?

Os comentários no arquivo padrão são confusos. A primeira linha diz

# DO NOT EDIT THIS FILE - edit the master and reinstall.

Mas a quarta linha diz

# Edit this file to introduce tasks to be run by cron.
Googlebot
fonte
2
Por que não colocar as coisas em /etc/cron.d?
Zoredache
Pode ser uma boa ideia; mas não quis dizer qual arquivo editar, estou comparando a edição do arquivo pelo editor ou executando o comando crontab.
Googlebot
@ Tudo o que eu acho que a única diferença é a verificação de sintaxe feita pelo crontab-e. É apenas um buffer de texto com verificação de sintaxe. Você também pode alterar seu editor habitual e o crontab-e carregaria nele. A importância do xyntax é que todo o arquivo será ignorado se você cometer um erro. Mesmo se você usar uma ferramenta externa, use o crontab-e para ler o arquivo e envie-o de volta ao crontab-e quando terminar. Fazendo isso, você não precisa mais se preocupar com a sintaxe. É melhor dividir os arquivos das tarefas do usuário e do sistema, portanto você deve usar o /etc/cron.d melhor para as tarefas de usuário / teste.
M3nda

Respostas:

22

Se você modificar o arquivo do usuário em crontabs, ele deverá funcionar. No entanto, há duas questões a serem consideradas:

  1. Se você digitou incorretamente a entrada cron no arquivo, você não será avisado ao invés de usar o crontab -ecomando
  2. Você não pode editar seu arquivo de usuário no crontabs diretamente sem fazer login como root ou usando o sudo. Você receberá um erro de permissão negada.

Editar

Mais um ponto a acrescentar. Ao editar o arquivo diretamente, você poderá ser avisado pelo editor de texto se o abrir duas vezes (dois usuários acessando o mesmo arquivo). No entanto, a lista cron será substituída ao usar a crontab -epartir de duas sessões de shell diferentes do mesmo usuário. Essa é outra diferença.

Khaled
fonte
pontos muito sutis! Eu nunca enfrentei (sabia) o segundo problema, pois sempre trabalho como raiz.
Googlebot
4
Além disso, o "não editar" no arquivo padrão ocorre porque uma atualização / reinstalação pode substituir esse arquivo.
Chris S
Você não mencionou que um usuário que edita o crontab perde diretamente a verificação santax crontab -efornecida.
Adam F
1
@ AdamF: É sobre isso que o ponto 1 está falando!
Khaled
8

Se bem entendi, você está editando o arquivo manualmente com um editor de texto porque não deseja usar o crontab -e. Acho que é porque ele está usando o vi como editor e você não está familiarizado com ele.

Você altera o crontab -e (e outras coisas que precisam de um editor) para usar o editor nano mais familiar executando

export EDITOR=nano

antes

crontab -e

Você pode tornar o nano o editor padrão permanente editando seu arquivo ~ / .bash_profile para incluir export EDITOR=nanono final.

Para responder à sua pergunta, você não deve editar o arquivo diretamente, pois ele pode ser substituído sem que você saiba. A quarta linha diz o que diz porque vem do crontab que você deve editar manualmente (diria isso como a primeira linha).

Jonathan Amend
fonte
Obrigado pela resposta descritiva. Estou completamente familiarizado com o crontab command vi editor; mas eu uso o gedit (não no terminal ssh), pois me conecto diretamente ao servidor na minha área de trabalho linux.
Googlebot
Também recomendo adicionar o comando EDITOR de exportação ao seu arquivo bashrc para evitar gravá-lo sempre que você fizer login no ssh.
M3nda
1
export VISUAL=vi

Esta é a maneira correta de alterar o editor do crontab.

user981836
fonte