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?
Jawaban:
Masukan script shell di salah satu folder tersebut: /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 ketika Anda terbiasa. Strukturnya adalah:
minute hour day-of-month month day-of-week command
Untuk semua angka Anda dapat menggunakan daftar, misalnya 5,34,55
dalam bidang menit berarti berjalan pada 5 lewat, 34 lewat, dan melewati 55 jam berapa pun yang didefinisikan.
Anda juga dapat menggunakan interval. Mereka didefinisikan seperti ini: */20
. Contoh ini berarti setiap tanggal 20, jadi di kolom menit itu sama dengan 0,20,40
.
Jadi, jalankan perintah setiap hari Senin jam 5.30 sore:
30 17 * * 1 /path/to/command
atau setiap 15 menit
*/15 * * * * /path/to/command
Perhatikan bahwa hari-hari dari 0-6 di mana 0 adalah hari Minggu.
Anda dapat membaca lebih lanjut di sini .
*/15 * * * * /path/to/command
, Anda dapat melakukannya @reboot /path/to/command
untuk menjalankan sesuatu saat startup.
Jika pekerjaan yang ingin Anda jalankan dapat dijalankan dengan hak 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 secara sederhana 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 simpan file tersebut.
Anda dapat melihat isi crontab pengguna dengan crontab -l
.
Untuk menambahkan pekerjaan cron yang dijalankan sebagai root, Anda dapat mengedit crontab root dengan menjalankan sudo crontab -e
.
Cara paling fleksibel adalah dengan menggunakan crontab sistem /etc/crontab
yang hanya dapat Anda edit dengan hak akses root. Dalam file ini, setiap perintah pengguna harus dijalankan seperti yang ditentukan, sehingga Anda dapat menjalankan perintah Anda sebagai root (jika Anda memerlukan tingkat hak istimewa itu) atau pengguna lain pada 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 saluran)
Anda dapat melihat isi dari file sistem crontab dengan cat /etc/crontab
.
Lebih detail di: https://help.ubuntu.com/community/CronHowto
Jika Anda lebih suka melakukannya menggunakan GUI, Anda dapat pergi ke Pusat Perangkat Lunak dan menginstal tugas yang Dijadwalkan (atau menjalankan sudo apt-get install gnome-schedule
). Ini akan memberikan GUI yang kuat untuk menambahkan tugas cron.
Perhatikan bahwa jika Anda menggunakan metode ini, tugas-tugas secara default akan dieksekusi sebagai pengguna Anda sendiri, bukan sebagai root. Ini biasanya hal yang baik.
Saya merekomendasikan Penjadwal Tugas KDE ( kde-config-cron
) . Akses dari Pengaturan Sistem di modul Penjadwal Tugas di sana.
Ia mengelola Crontab pribadi dan sistem, dan kemudahan membuat batas waktu sangat mengejutkan saya (lihat tangkapan layar di bawah). Saya pikir bagian ini sangat diremehkan.
Penjadwal Tugas KDE tidak akan berfungsi di Ubuntu biasa. Ini hanya berfungsi di Sistem KDE seperti KUbuntu. Untuk sistem non KDE Anda lebih suka menggunakan gnome-schedule
$ sudo apt-get install gnome-schedule
Aplikasi ini adalah tugas Terjadwal di Dash.
I can't install gnome schedule on Ubuntu 16.04
@ askubuntu.com/questions/785657/… . Ada paket untuk mengunduh @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/… . Lakukan saja$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
Saya ingin mengatur pekerjaan Cron untuk dijalankan melalui skrip bash, jadi mengeksekusi skrip akan menambah pekerjaan cron.
Saya menyadari bahwa ketika Anda menggunakan:
crontab -e
Kemudian ia menciptakan file:
/var/spool/cron/crontabs/root
Di mana root adalah nama pengguna yang menjalankan menjalankan perintah crontab. Jadi berdasarkan ini dan setidaknya pada 14,04, kita dapat menjalankan perintah bash berikut untuk membuat pekerjaan Cron baru:
echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root
Kami juga perlu mengatur kepemilikan yang benar untuk file:
chown root:root /var/spool/cron/crontabs/root
Dan atur izin 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 simbolik:
test_cron.sh
mengajukan:
#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log
Jika Anda ingin menggunakan variabel lingkungan di skrip Anda seperti $USER
di jalur, lebih baik mengetikkan jalur yang tepat, bash tidak akan tahu variabel Anda pada waktu eksekusi.
myname
adalah nama pengguna (bagian dari grup root, saya tidak yakin bahwa hak akses root diperlukan).
Bolehkan pengguna untuk mengatur tugas cron, file akan dibuat jika perlu:
sudo nano /etc/cron.allow
root
myname
Jalan menuju skrip adalah /home/myname/shell/test_cron.sh
Saya mengubah pemilik dan membuatnya dapat dieksekusi:
sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh
Saya menambahkan tautan simbolis:
sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron
Dicatat saat myname
saya menambahkan tugas baru untuk dijalankan 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/syslog
Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)