Solaris “crontab -e” travando via vi

1

Eu me deparei com um problema ontem com o bloqueio de edição do Solaris e do crontab, o que me fez imaginar qual é a melhor maneira de proteger várias edições simultâneas do mesmo crontab no Solaris. Confirmei que o comportamento existe no Solaris até 11.2.10.5.0.

EDITOR=vi
OS=Solaris 10, 11
SHELL=bash
RBAC=pfexec

Agora, normalmente, o vi usa arquivos .filename.swp para impedir várias edições simultâneas do mesmo arquivo, sejam elas de vários usuários ou várias chamadas do mesmo usuário. No entanto, "crontab -e" cria e transmite um arquivo temporário com um nome baseado em / tmp / crontabXXXXXX para $ EDITOR, e várias invocações simultâneas de "crontab -e" passarão diferentes arquivos temporários para $ EDITOR, permitindo potencialmente a reversão de alterações para o crontab quando ele é aberto de dois lugares ao mesmo tempo, ou quando uma sessão suspensa é morta devido ao tempo limite de TTY, como aconteceu comigo. Além disso, não há nenhum aviso do $ EDITOR na segunda chamada de "crontab -e", pois o arquivo que está sendo editado é diferente.

Como posso evitar que esse problema ocorra? O uso de um nome de arquivo temporário pseudo-aleatório evita que o bloqueio embutido no vi funcione, portanto, endereçar essa parece ser a rota ideal. Talvez a questão seja mais fundamental e precise ser levantada como um bug do sistema operacional. A página man do crontab do Solaris não deixa muita esperança, já que ela afirma que "modificações simultâneas do mesmo arquivo crontab podem levar a resultados inesperados", mas espero que alguém tenha uma resposta.

    
por Ric F 13.07.2015 / 06:04

1 resposta

1

Se isso realmente for uma preocupação, você terá que escrever algo como, como a página do manual sugere, não está embutido.

Você pode escrever um wrapper para o crontab (1) que fez a verificação de bloqueio / bloqueio antes de executar o próprio crontab (1).

Neste resposta

Toda essa ideia não parece um empreendimento trivial.

    
por 31.07.2015 / 20:47

Tags