Come posso impostare una variabile PATH a livello di sistema per cron su Centos 6.4


1

Vorrei assicurarmi che ogni crontab specifico dell'utente abbia lo stesso ambiente PATH. Ho provato a impostare il PERCORSO in / etc / crontab ma sembra che questo file di configurazione non sia letto da crond.

Di seguito sono riportati i pacchetti relativi a cron installati sul mio computer:

root@machine:~> rpm -qa | grep cron
cronolog-1.6.2-10.el6.x86_64
cronie-anacron-1.4.4-7.el6.x86_64
cronie-noanacron-1.4.4-7.el6.x86_64
crontabs-1.10-33.el6.noarch
cronie-1.4.4-7.el6.x86_64

AGGIORNAMENTO: my / etc / crontab

Scusa per il ritardo della risposta.

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

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

Christian, ti preghiamo di unire i tuoi account seguendo la procedura qui - devi accedere con le tue vecchie credenziali per poter modificare la domanda, aggiungere commenti, ecc. Grazie.
slhck,

Risposte:


0

Sei sicuro di aver impostato $PATHcorrettamente? Dai un'occhiata a man 5 crontab:

An  active  line in a crontab will be either an environment setting or a cron com‐
mand.  The crontab file is parsed from top to bottom, so any environment  settings
will affect only the cron commands below them in the file.  An environment setting
is of the form,

    name = value

where the spaces around the equal-sign (=) are optional, and any  subsequent  non-
leading  spaces  in  value  will be part of the value assigned to name.  The value
string may be placed in quotes (single or double, but matching) to preserve  lead‐
ing  or  trailing  blanks.  To  define an empty variable, quotes must be used. The
value string is not parsed for environmental substitutions or replacement of vari‐
ables, thus lines like

    PATH = $HOME/bin:$PATH

will not work as you might expect. And neither will this work

    A=1
    B=2
    C=$A $B
There will not be any subsitution for the defined variables in the last value.

An alternative for setting up the commands path is using the fact that many shells
will treat the tilde(~) as substitution of $HOME, so if  you  use  bash  for  your
tasks you can use this:

     SHELL=/bin/bash
     PATH=~/bin:/usr/bin/:/bin

Ciao terdon, grazie per la tua risposta. Non ci sono variabili nella mia definizione PATH. Ho già provato a mettere la stringa tra virgolette, ma non funziona neanche.
john.dough,

@christian strano. Potresti pubblicare /etc/crontabciò che viene ignorato?
terdon,

@christian non pubblica mai aggiornamenti come commenti, sono impossibili da leggere e si perdono nel disordine. Modifica invece la tua domanda originale.
terdon,

Ulteriori suggerimenti per questo problema? Puoi vedere il crontab ignorato nel mio post iniziale come aggiornamento.
john.dough,

@christian /etc/crontabnon è un file di configurazione, è il crontab a livello di sistema. Pertanto, qualsiasi impostazione impostata non verrà ereditata dai crontab specifici dell'utente. Non un bug ma una funzionalità in altre parole. Spiacenti, non so come impostare un cronpath a livello di sistema diverso dall'impostazione di un percorso a livello di sistema.
terdon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.