Saya perlu menjalankan skrip setiap hari. Skrip harus dijalankan sebagai pengguna tertentu (mis. Pengguna1) bukan sebagai root. Jadi saya meletakkan file cron di /etc/cron.d dan memasukkan nama pengguna di baris (kolom ke-2). Tetapi itu memberikan kesalahan mengatakan bahwa perintah tidak ditemukan. Saya menduga bahwa skrip tidak dijalankan sebagai lingkungan pengguna1. Apakah saya melewatkan sesuatu?
19
Jawaban:
Hanya
/etc/crontab
dan file dalam/etc/cron.d/
memiliki bidang nama pengguna. Dalam file itu Anda dapat melakukan ini:Dari crontab root,
sudo crontab -e
Anda dapat menggunakan:Atau Anda dapat menggunakan crontab aktual pengguna seperti ini:
The Kolom kedua di file crontab adalah untuk jam yang Anda inginkan pekerjaan untuk dijalankan pada. Apakah maksud Anda bidang keenam?
sumber
/etc/cron.d/
file adalah bagian dari/etc/crontab
.sudo
juga tidak ada gunanya. Saya akan menghapus bagian itu.sudo su...
umumnya tidak perlu;sudo -u <user> <command>
biasanya cukup. (B) sudo akan tersedak pada beberapa sistem jika tidak ada TTY yang terpasang (seperti ketika dijalankan oleh cron). Itu bisa diperbaiki di file sudoers Anda.Anda mungkin perlu mengatur PATH untuk pengguna itu, jika executable yang Anda gunakan ada di, katakanlah, / usr / local / bin. Untuk mengatur PATH, letakkan sesuatu seperti ini di depan cronjobs:
Cara lain adalah dengan menentukan secara lengkap path ke sample_executable di cronjob Anda, jadi:
Jika sample_executable merujuk pada executable yang tidak ada dalam PATH standar, Anda harus menggunakan opsi pertama.
sumber
Direktori khas untuk crontab pengguna ada di / var / spool / cron / crontab. Format file adalah yang tidak menyertakan nama pengguna. Crontab pengguna dimiliki oleh pengguna dan dinamai setelah pengguna dengan mode 0600. Ini paling baik ditangani dengan menulis file tab Anda dan gunakan
crontab -u username filename
untuk mengatur entri cron apa pun yang Anda inginkan untuk pengguna itu.sumber