Saya ingin menjadwalkan tugas untuk dijalankan secara teratur dan telah mendengar bahwa Cron adalah cara untuk melakukan ini.
Bagaimana cara menambahkan pekerjaan Cron di Ubuntu?
Saya ingin menjadwalkan tugas untuk dijalankan secara teratur dan telah mendengar bahwa Cron adalah cara untuk melakukan ini.
Bagaimana cara menambahkan pekerjaan Cron di Ubuntu?
Letakkan skrip shell di salah satu folder ini: /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
atau /etc/cron.weekly
.
Jika ini tidak cukup untuk anda, anda dapat menambahkan tugas yang lebih spesifik misalnya dua kali sebulan atau setiap 5 menit. Pergi ke terminal dan ketik:
crontab -e
Ini akan membuka crontab pribadi Anda (file konfigurasi cron). Baris pertama dalam file itu menjelaskan semuanya! Di setiap baris Anda dapat menentukan satu perintah untuk dijalankan dan jadwalnya, dan formatnya cukup sederhana saat Anda menguasainya. Struktur adalah:
minute hour day-of-month month day-of-week command
Untuk semua nomor yang Anda dapat menggunakan daftar, misalnya. 5,34,55
di bidang menit berarti Berjalan pada 5 masa lalu, 34 masa lalu, dan 55 masa lalu Jam apa pun yang ditentukan.
Anda juga dapat menggunakan interval. Mereka didefinisikan seperti ini: */20
. Contoh ini berarti Setiap tanggal 20, jadi di kolom menit itu setara dengan 0,20,40
.
Jadi untuk menjalankan perintah setiap hari Senin pukul 5: 30 sore:
30 17 * * 1 /path/to/command
atau setiap 15 menit
*/15 * * * * /path/to/command
Perhatikan bahwa hari-of-minggu pergi dari 0-6 di mana 0 adalah hari Minggu.
Anda dapat Baca lebih lanjut di sini.
Jika pekerjaan yang ingin Anda jalankan dapat dijalankan dengan hak istimewa yang sama dengan pengguna Anda, saya sarankan menggunakan crontab pengguna yang dapat Anda edit dengan menjalankan EDITOR="gedit" crontab -e
(yang akan menggunakan gedit untuk mengedit file crontab) atau hanya crontab -e
(yang akan menggunakan editor default) di terminal.
Jika Anda ingin menjalankan sesuatu setiap 10 menit, misalnya, Anda menambahkan baris seperti ini
*/10 * * * * /usr/bin/somedirectory/somecommand
dan menyimpan file.
Anda dapat melihat isi dari pengguna crontab dengan crontab -l
.
Untuk menambahkan tugas cron yang berjalan sebagai root, Anda dapat mengedit crontab root dengan menjalankan sudo crontab -e
.
Cara yang paling fleksibel adalah dengan menggunakan sistem crontab /etc/crontab
yang dapat Anda edit hanya dengan hak akses root. Dalam file ini, pengguna setiap perintah harus dijalankan seperti yang ditentukan, sehingga anda dapat menjalankan perintah Anda sebagai root (jika Anda memerlukan tingkat hak istimewa itu) atau pengguna lain di sistem.
Misalnya, jika Anda ingin menjalankan sesuatu setiap 10 menit sebagai root, Anda akan menambahkan baris seperti ini
*/10 * * * * root /usr/bin/somedirectory/somecommand
(perhatikan penambahan pengguna ke baris)
Anda dapat melihat isi dari file sistem crontab dengan cat /etc/crontab
.
Rincian lebih lanjut di: https://help.ubuntu.com/community/CronHowto
Jika Anda lebih suka melakukannya menggunakan GUI, Anda dapat pergi ke pusat Perangkat Lunak dan menginstal Tugas terjadwal (atau lari sudo apt-get install gnome-schedule
). Ini akan memberikan GUI yang kuat untuk menambahkan tugas cron.
Perhatikan bahwa jika Anda menggunakan metode ini, tugas secara default akan dijalankan sebagai pengguna Anda sendiri, bukan sebagai root. Ini biasanya hal yang baik.
Saya sarankan KDE Tugas Scheduler (kde-config-cron
) . Akses dari Pengaturan Sistem dalam Penjadwal Tugas modul di sana.
Ini mengelola crontab pribadi dan sistem, dan kemudahan membuat batas waktu sangat mengejutkan saya (lihat tangkapan layar di bawah). Saya pikir bagian ini benar-benar diremehkan.
Penjadwal Tugas KDE tidak akan berfungsi di Ubuntu biasa. Ini hanya berfungsi di sistem KDE seperti KUbuntu. Untuk sistem non KDE Anda akan lebih memilih untuk menggunakan gnome-schedule
$ sudo apt-get install gnome-schedule
Aplikasi ini dijadwalkan tugas di dasbor.
Saya ingin mengatur tugas Cron untuk dijalankan melalui skrip bash, Jadi menjalankan skrip akan menambahkan tugas cron.
Saya menyadari bahwa ketika Anda menggunakan:
crontab -e
Kemudian menciptakan file:
/var/spool/cron/crontabs/root
Di mana root adalah nama pengguna yang menjalankan perintah crontab. Jadi berdasarkan ini dan setidaknya di 14.04, kita dapat menjalankan perintah bash berikut untuk membuat tugas Cron baru:
echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root
Kita juga perlu mengatur kepemilikan yang benar untuk file:
chown root:root /var/spool/cron/crontabs/root
Dan mengatur hak akses yang benar:
chmod 600 /var/spool/cron/crontabs/root
Jika ketika Anda menjalankan crontab -e
sudah ada pekerjaan Cron dalam daftar, maka Anda dapat menambahkan ke daftar menggunakan perintah berikut:
echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root
Contoh menjalankan skrip test_cron.sh
oleh cron setiap menit di Ubuntu 18.04 menggunakan tautan simbolis:
test_cron.sh
berkas:
#!/bin/bashecho "System backuped" >> /media/myname/data/backup/backup_tmp.log
Jika Anda ingin menggunakan variabel lingkungan dalam skrip Anda seperti $USER
di jalur lebih baik mengetik jalur yang tepat, bash tidak akan mengetahui variabel Anda pada waktu eksekusi.
myname
adalah nama pengguna (bagian dari grup root, Saya Tidak yakin bahwa hak akses root diperlukan).
Izinkan pengguna untuk mengatur pekerjaan cron, file akan dibuat jika perlu:
sudo nano /etc/cron.allowrootmyname
Jalan menuju script adalah /home/myname/shell/test_cron.sh
Saya mengubah pemilik dan membuatnya dapat dieksekusi:
sudo chown myname /home/myname/shell/test_cron.shchmod +x /home/myname/shell/test_cron.sh
Saya menambahkan tautan simbolis:
sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron
Login sebagai myname
Saya menambahkan tugas baru untuk dieksekusi test_cron
setiap menit.
crontab -e*/1 * * * * test_cron
Untuk memeriksa apakah perintah dalam daftar:
crontab -l*/1 * * * * test_cron
Untuk memeriksa eksekusi
grep -i cron /var/log/syslogNov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
Mengingat Anda memiliki beberapa pekerjaan cron dengan pengguna tertentu dan mereka tidak berbagi jadwal yang sama. Anda hanya dapat Sederhana Membuat file di bawah /etc/cron.d/
Katakanlah nama file adalah myjobs
kemudian tulis saja semua penjadwal anda di file itu dan kemudian jalankan perintah berikut.
crontab -u <username> /etc/cron.d/myjobs