Como definir o PATH do cron globalmente (ou seja, para todos os usuários) permanentemente?

8

Precisamos ter / usr / local / bin no caminho do cron para todos os usuários. Existe uma maneira de configurá-lo em todo o sistema, sem precisar editar o crontab de cada usuário?

Nós tentamos adicionar o PATH ao / etc / crontab:

# grep PATH /etc/crontab
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Mas quando os usuários têm isso no crontab:

$ crontab -l | grep PATH
* * * * * echo $PATH > /tmp/current_cron_path

... revela que o caminho deles ainda está definido como padrão:

$ cat /tmp/current_cron_path
/usr/bin:/bin
    
por grosser 16.07.2010 / 14:30

4 respostas

4

Você pode configurar o seu PATH no arquivo de configuração do crontab como mostrado no primeiro código, exceto lá . Primeiro, especifique as variáveis env e, em seguida, especifique as tarefas.

UPD: Devido ao fato de que o link está quebrado, aqui está um trecho:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
    
por 16.07.2010 / 15:06
3

Configurar a variável PATH deve funcionar no Ubuntu, como você diz que não está funcionando?

Refira-se a # 14: Linux Crontab: 15 exemplos impressionantes de trabalho Cron

    
por 19.07.2010 / 10:59
1

Também não consegui encontrar uma solução para isso. O mais próximo que cheguei de uma solução decente é o seguinte (tirado do link ).

  • Altere o shell para seu trabalho cron e aponte-o para um script bash. Ou seja, no topo do cronjob, adicione: %código%
  • Neste script de shell, carregue as variáveis de ambiente e especifique outras variáveis. Certifique-se de incluir as seguintes 4 linhas no topo. Ele redefine a variável SHELL para bash e executa um shell bash para executar os cronjobs.

Por exemplo:

#!/bin/bash
set -e

source /etc/environment
source /etc/profile
# restore SHELL env var for cron
SHELL=/bin/bash

# execute the cron command in an actual shell
exec /bin/bash --norc "$@"

Desvantagem: isso requer que você especifique o SHELL=/path/to/setup/cron.bash no topo de cada cronjob. De cabeça: você estará usando variáveis de ambiente regulares, e você não terá que se preocupar em manter variáveis consistentes entre cron e outros

    
por 12.08.2015 / 14:01
0

Se você pode ser root, você pode tentar editar /etc/init.d/cron e mudar o PATH lá? Eu não testei isso, mas seria interessante verificar.

    
por 05.08.2010 / 00:45

Tags