GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan di untuk pekerjaan cron sekali pakai di Linux

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. ]


Linux
  1. Menggunakan AppImage untuk manajemen paket Linux

  2. Mendefinisikan Pekerjaan Sistem Menggunakan Cron di Linux

  3. Linux:Jalankan tugas cron di latar depan

  1. Cron Job:Panduan Lengkap untuk Pemula 2022

  2. pekerjaan Opsi Perintah Di Linux

  3. Menggunakan variabel dalam SQLCMD untuk Linux

  1. Kiat Linux untuk menggunakan cron untuk menjadwalkan tugas

  2. Menggunakan pekerjaan CRON untuk mengunjungi url?

  3. Hapus file log menggunakan tugas cron