Bagaimana cara saya mengatur pekerjaan Cron?

534

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?

Gabriel Solomon
sumber

Jawaban:

655

Masukan script shell di salah satu folder tersebut: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyatau /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,55dalam 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 .

LassePoulsen
sumber
7
Ini adalah seluruh sistem dan dijalankan dengan hak istimewa tinggi. Saya tidak akan meletakkan apa pun di sana kecuali ada kebutuhan mendesak untuk akses atau izin. Sebagai aturan praktis, cobalah untuk melakukan hal-hal tanpa kemampuan. Oleh karena itu, saya menyukai jawaban ini dengan lebih baik: ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/…
H Marcelo Morales
5
@Marcelo Morales, Yang juga akan menjalankan perintah yang diberikan sebagai root! jika Anda di sisi lain tidak menggunakan sudo maka Anda akan membuat crontab pengguna dan ini akan dijalankan sebagai pengguna yang membuatnya!
LassePoulsen
4
* / 15 * * * * / path / to / command sangat berguna bagi saya! Terima kasih!
Andrew Odendaal
18
Perlu dicatat bahwa perubahan ini diterapkan secara otomatis, Anda tidak perlu memulai ulang / memuat ulang apa pun.
Molomby
6
Tip praktis lainnya adalah bahwa alih-alih */15 * * * * /path/to/command, Anda dapat melakukannya @reboot /path/to/commanduntuk menjalankan sesuatu saat startup.
Kenneth Worden
102

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/crontabyang 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

Lil o
sumber
1
Berikut ini adalah manipulator cron interaktif yang manis yang akan memberi Anda bahasa Inggris ke cron time crontab.guru
CTS_AE
52

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.

Javier Rivera
sumber
3
tidak tersedia untuk 16,04 rupanya bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060
TankorSmash
@TankorSmash Anda bisa mendapatkannya di sini
M. Becerra
Persyaratan paket tidak dapat dipenuhi pada 16.04
Odysseus Ithaca
26

Saya merekomendasikan Penjadwal Tugas KDE ( kde-config-cron) Instal 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.

masukkan deskripsi gambar di sini

gertvdijk
sumber
11

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.

Antonio
sumber
Itu tidak ditemukan untuk Ubuntu 16.04
SaidbakR
Silakan lihat di 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
Antonio
10

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 -esudah 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
Craig van Tonder
sumber
2

Contoh menjalankan skrip test_cron.sholeh 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 $USERdi 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 mynamesaya menambahkan tugas baru untuk dijalankan test_cronsetiap 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)
Alexander
sumber