GNU/Linux >> Belajar Linux >  >> Linux

eksekusi crontab tidak memiliki variabel lingkungan yang sama dengan pengguna yang mengeksekusi

Cron selalu berjalan dengan lingkungan yang sebagian besar kosong. HOME , LOGNAME , dan SHELL ditetapkan; dan PATH yang sangat terbatas . Oleh karena itu, disarankan untuk menggunakan jalur lengkap ke executable, dan mengekspor variabel apa pun yang Anda perlukan dalam skrip saat menggunakan cron .

Ada beberapa pendekatan yang dapat Anda gunakan untuk mengatur variabel lingkungan Anda di cron , tetapi semuanya sama dengan menyetelnya di skrip Anda.

Pendekatan 1:

Tetapkan setiap variabel yang Anda perlukan secara manual di skrip Anda.

Pendekatan 2:

Sumber profil Anda:

. $HOME/.bash_profile (atau . $HOME/.profile )

(Biasanya Anda akan menemukan bahwa file di atas akan bersumber dari file lain (mis. ~/.bashrc --> /etc/bashrc --> /etc/profile.d/* ) - jika tidak, Anda juga dapat mengambilnya.)

Pendekatan 3:

Simpan variabel lingkungan Anda ke file (jalankan sebagai pengguna yang diinginkan):

env > /path/to/my_env.sh

Kemudian impor melalui skrip cron Anda:

env - `cat /path/to/my_env.sh` /bin/sh

Pendekatan 4:

Dalam beberapa kasus, Anda dapat menyetel global cron variabel di /etc/default/cron . Namun, ada elemen risiko untuk ini, karena ini akan disetel untuk semua cron pekerjaan.


Linux
  1. Cara Mengatur/Membuat Variabel Lingkungan dan Shell di Linux

  2. Bagaimana Cara Mengatur Variabel Lingkungan Pada Baris Perintah Dan Membuatnya Muncul Dalam Perintah?

  3. Perbedaan Penggunaan Antara Variabel Shell Dan Variabel Lingkungan?

  1. Menggunakan Variabel Lingkungan Dalam File Tmux.conf?

  2. Crontab Log:Cara Mencatat Keluaran Skrip Cron Saya

  3. Di mana saya dapat mengatur variabel lingkungan yang akan digunakan crontab?

  1. Cara Mengatur dan Menghapus Variabel Lingkungan Lokal, Pengguna dan Sistem di Linux

  2. Apa Cara Distro/shell-agnostik Terbaik Untuk Mengatur Variabel Lingkungan?

  3. Di mana set variabel lingkungan $HOME?