Cron
adalah salah satu UNIXisme yang paling dikenal di dunia komputer. Bahkan orang IT yang tidak mengelola server Linux telah mendengar tentang binatang misterius itu, "pekerjaan cron." Dan admin Linux tahu bahwa pekerjaan cron sangat berguna. Bahkan, dapat dikatakan bahwa cron
sistem adalah nenek moyang awal dari menggila otomatisasi. Jika ada sesuatu yang Anda tahu bisa dilupakan oleh manusia, cron
adalah jawabannya.
Namun, di mana cron
excels adalah pengulangan, dan terkadang Anda tidak membutuhkan pekerjaan untuk dijalankan setiap jam atau setiap hari atau setiap minggu. Anda hanya perlu pekerjaan untuk dieksekusi sesuai jadwal, dan menyetel alarm untuk mengingatkan diri sendiri sepertinya tidak seperti cara UNIX. Yang Anda butuhkan adalah at
perintah, utilitas kecil yang dapat Anda gunakan untuk membuat antrian pekerjaan yang dijadwalkan untuk dijalankan di waktu tertentu di masa depan.
Penyiapan
Sebelum menggunakan at
perintah, Anda harus memiliki skrip shell yang ingin Anda luncurkan pada suatu waktu. Seperti biasa, skrip Anda harus memiliki baris "kuki ajaib" atau "shebang" di bagian atas file untuk menyetel shell mana yang akan digunakan untuk eksekusinya.
Untuk contoh ini, buat skrip sederhana yang membuat file di /tmp
:
#!/bin/sh
DATE=`date --utc +%s`
echo "hello world $DATE" | tee /tmp/at.log
exit 0
Jadikan skrip dapat dieksekusi, lalu lakukan uji coba:
$ chmod +x test.sh
$ ./test.sh
Lihat konten /tmp/at.log
file skrip yang dibuat:
$ cat /tmp/at.log
hello world 1588482185
Menjadwalkan pekerjaan
Anda dapat menjadwalkan pekerjaan menggunakan stempel waktu atau dengan bahasa alami. Jika Anda menggunakan bahasa alami atau format waktu sederhana, maka tidak ada opsi yang diperlukan sebelum menentukan waktu.
Misalnya, untuk menjadwalkan test.sh
untuk langsung berjalan, anda tinggal menggunakan kata kunci now
:
$ at now -f test.sh
warning: commands will be executed using /bin/sh
job 1 at Mon Feb 24 01:23:00 2020
$ cat /tmp/at.log
hello world 1588482620
Anda dapat mengatur offset dari sekarang menggunakan minutes
, hours
, days
, weeks
, atau years
.
$ at now + 1 day -f test.sh
warning: commands will be executed using /bin/sh
job 2 at Tue Feb 25 01:27:00 2020
years
kata kunci tidak berdokumen, dan seconds
tidak didukung. Anda juga dapat menentukan waktu umum, seperti midnight
, noon
, dan teatime
(itu pukul 16:00).
Waktu sederhana juga berhasil:
$ at 21:12 -f test.sh
warning: commands will be executed using /bin/sh
job 3 at Mon Feb 24 21:12:00 2020
Untuk menjadwalkan tanggal kalender pada waktu tertentu, Anda harus menggunakan -t
opsi dan format waktu yang sesuai dengan POSIX. Misalnya, menggunakan format YYYYMMDDHHMM:
$ at -t 202003141509 -f test.sh
warning: commands will be executed using /bin/sh
job 4 at Sat Mar 14 15:09:00 2020
[ Mencari otomatisasi sistem yang lebih canggih? Mulailah dengan The Automated Enterprise, buku gratis dari Red Hat. ]
Pipa
Anda dapat mengirim perintah ke at
melalui pipa UNIX:
$ echo "hello world" > /tmp/at.log | at now
warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:28:00 2020
$ cat /tmp/at.log
hello world
Tugas batch
batch
perintah (atau at -b
) mengeksekusi perintah sedini mungkin sumber daya sistem memungkinkan. Jika beban sistem Anda tinggi, Anda dapat menggunakan batch
untuk membuat tugas Anda berjalan saat ada siklus CPU yang tersisa.
$ echo "Cycles to spare" > /tmp/at.log | batch
warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:31:00 2020
Melihat antrean Anda
atq
perintah menampilkan at
antre. Ini memberi Anda ID pekerjaan, waktu setiap pekerjaan dijadwalkan untuk dijalankan, antrian setiap pekerjaan dikelompokkan menjadi (a
untuk at
antrian atau b
untuk batch
antrian), dan nama pengguna pemilik antrian. Pemilik antrian biasanya adalah Anda sendiri, kecuali jika Anda menjalankan atq
sebagai root, dalam hal ini Anda melihat at
semua pengguna antrian.
$ atq
2 Tue Feb 25 01:27:00 2020 a seth
3 Mon Feb 24 21:12:00 2020 a seth
4 Sat Mar 14 15:09:00 2020 a seth
5 Mon Feb 24 01:31:00 2020 b seth
Anda dapat membuat dan memberi nama antrean Anda sendiri menggunakan karakter tunggal c-z atau A-Z . Keduanya a
dan b
adalah sebutan khusus untuk at
dan batch
, dan setiap antrian dengan huruf besar diperlakukan sebagai batch
pekerjaan. Antrian dengan nama yang mengikuti abjad a
dan b
dijalankan dengan meningkatkan kebaikan.
Mempratinjau pekerjaan Anda
Saat Anda mengirim perintah atau skrip ke at
, direktori kerja Anda saat ini, lingkungan (tidak termasuk BASH_VERSINFO
, DISPLAY
, EUID
, GROUPS
, SHELLOPTS
, TERM
, UID
, dan _
), dan umask dipertahankan. Jika perintah Anda mengharapkan pengaturan lingkungan tertentu, maka Anda harus mengaturnya sambil meneruskan perintah ke at
atau timpa dalam skrip Anda.
Untuk melihat bagaimana perintah Anda akan dijalankan, gunakan -c
pilihan beserta nomor pekerjaan:
$ at -c 4
#!/bin/sh
# atrun uid=1006 gid=1006
# mail seth 0
umask 22
CPLUS_INCLUDE_PATH=/usr/lib64/qt/include; export CPLUS_INCLUDE_PATH
MANPATH=/usr/local/man:/usr/man:/usr/lib64/adoptopenjdk12.0.2/man; export MANPATH
KDE_MULTIHEAD=false; export KDE_MULTIHEAD
[...]
Menghapus pekerjaan
Anda dapat menghapus pekerjaan yang tertunda dari at
antrian menggunakan atrm
perintah dan ID pekerjaan. Jika Anda tidak mengetahui ID pekerjaan, gunakan atq
untuk melihat antrean Anda terlebih dahulu.
$ atq
6 Fri Jan 01 00:00:00 2038 a seth
$ atrm 6
$ atq
Penjadwalan dengan di
at
perintahnya sedikit seperti cron
yang lebih kecil sistem. Ini berguna untuk eksekusi perintah satu kali, dan mudah digunakan. Jika Anda telah menggunakan cron
atau sleep
untuk mengimbangi waktu eksekusi suatu perintah, lihat at
dan batch
.
[ Perlu mempelajari lebih lanjut tentang administrasi sistem Linux? Pertimbangkan untuk mengambil kursus administrasi sistem Red Hat. ]