it-swarm-id.com

Bagaimana cara saya mengatur pekerjaan Cron?

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?

524
Gabriel Solomon

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 mis. 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 yang dapat Anda gunakan daftar, mis. 5,34,55 dalam bidang menit berarti berjalan pada 5 lewat, 34 lewat, dan 55 lewat berapa pun jam yang ditentukan.

Anda juga dapat menggunakan interval. Mereka didefinisikan seperti ini: */20. Contoh ini berarti setiap tanggal 20, jadi pada 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 .

641
LassePoulsen

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 cukup crontab -e (yang akan menggunakan default editor) 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 konten pengguna crontab dengan crontab -l.

Untuk menambahkan pekerjaan cron yang dijalankan sebagai root, Anda dapat mengedit crontab root dengan menjalankan Sudo crontab -e.

Cara yang paling fleksibel adalah dengan menggunakan sistem crontab /etc/crontab yang hanya dapat diedit 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 baris)

Anda dapat melihat isi file sistem crontab dengan cat /etc/crontab.

Rincian lebih lanjut di: https://help.ubuntu.com/community/CronHowto

100
Li Lo

Jika Anda lebih suka melakukannya menggunakan GUI, Anda dapat pergi ke Pusat Perangkat Lunak dan menginstal tugas terjadwal (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.

52
Javier Rivera

Saya merekomendasikan Penjadwal Tugas KDE (kde-config-cron)Install kde-config-cron . Akses dari Pengaturan Sistem di Penjadwal Tugas modul 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.

enter image description here

25
gertvdijk

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.

11
Antonio

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
9
Craig van Tonder

Contoh menjalankan skrip test_cron.sh oleh cron setiap menit di Ubuntu 18.04 menggunakan tautan simbolik:

file test_cron.sh:

#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log

Jika Anda ingin menggunakan variabel lingkungan dalam skrip Anda seperti $USER di jalur, lebih baik mengetikkan path 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

Jalur ke 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 sebagai myname Saya menambahkan tugas baru untuk mengeksekusi 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)
1
Alexander