Saya pernah mendengar crontab adalah pilihan yang baik, tetapi bagaimana cara saya menulis baris dan di mana saya meletakkannya di server?
Saya pernah mendengar crontab adalah pilihan yang baik, tetapi bagaimana cara saya menulis baris dan di mana saya meletakkannya di server?
Jawaban:
Berikut tutorial yang bagus tentang apa itu crontab dan bagaimana menggunakannya di Ubuntu. Baris crontab Anda akan terlihat seperti ini:
00 00 * * * ruby path/to/your/script.rb
( 00 00
menunjukkan tengah malam - 0 menit dan 0 jam - dan *
artinya setiap hari setiap bulan.)
Sintaksis: mm hh dd mt wd perintah mm menit 0-59 jam 0-23 hari di bulan 1-31 mt bulan 1-12 hari dalam seminggu 0-7 (Minggu = 0 atau 7) perintah: apa yang ingin Anda jalankan semua nilai numerik dapat diganti dengan * yang berarti semua
/etc/crontab
(di Ubuntu), tetapi ketika Anda menjalankan crontab -e
Anda sedang mengedit crontab khusus pengguna, yang tidak mengizinkan kolom ini. Ubuntu IIRC mencegah keluar /etc/crontab
secara manual karena mungkin ditimpa. Lihat di sini: stackoverflow.com/questions/8475694/…
sudo crotab -u root -e
dari halaman manual
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
Adalah baik untuk mencatat "nama panggilan" khusus yang dapat digunakan (didokumentasikan di halaman manual), khususnya "@reboot" yang tidak memiliki alternatif waktu dan tanggal.
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
Anda juga dapat menggunakan trik ini untuk menjalankan tugas cron Anda beberapa kali per menit.
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
Untuk menambahkan pekerjaan cron, Anda dapat melakukan salah satu dari tiga hal berikut:
tambahkan perintah ke crontab pengguna, seperti yang ditunjukkan di atas (dan dari crontab, bagian 5, halaman manual).
crontab -e -u <username>
crontab -e
EDITOR
variabel lingkungan
env EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
buat skrip / program sebagai tugas cron, dan tambahkan ke /etc/cron.*ly
direktori anacron sistem
chmod a+x /etc/cron.daily/script_runs_daily.sh
- membuatnya dapat dieksekusiman anacron
chmod a+x <file>
/etc/crontab
atau /etc/anacrontab
untuk dijalankan pada waktu yang ditentukan/etc/anacrontab
, dan mendefinisikan cron./etc/cron.d/0hourly
Atau, Anda dapat membuat crontables sistem di /etc/cron.d
.
/etc/cron.d
tidak perlu dapat dieksekusi.someuser
, dan penggunaan /bin/bash
sebagai shell dipaksa. File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
SHELL=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
Terkadang Anda perlu menentukan PATH dan GEM_PATH menggunakan crontab dengan rvm.
Seperti ini:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb
Panduan cepat untuk mengatur pekerjaan cron
Buat file teks baru, contoh: mycronjobs.txt
Untuk setiap pekerjaan harian (00:00, 03:45), simpan baris jadwal di mycronjobs.txt
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
Kirim pekerjaan ke cron (setiap kali Anda menjalankan ini, cron menghapus apa yang telah disimpan dan memperbarui dengan informasi baru di mycronjobs.txt )
crontab mycronjobs.txt
Informasi Berguna Ekstra
Lihat pekerjaan cron saat ini
crontab -l
Hapus semua pekerjaan cron
crontab -r
Anda dapat menjalankan skrip shell dengan dua cara, baik menggunakan cron job atau dengan menulis skrip shell
Mari kita asumsikan nama skrip Anda adalah "yourscript.sh"
Pertama periksa izin pengguna skrip. gunakan perintah di bawah ini untuk memeriksa izin pengguna skrip
ll script.sh
Jika skrip di root, gunakan perintah di bawah ini
sudo crontab -e
Kedua jika skrip menampung pengguna "ubuntu", maka gunakan perintah di bawah ini
crontab -e
Tambahkan baris berikut di crontab Anda: -
55 23 * * * /path/to/yourscript.sh
Cara lain untuk melakukan ini adalah dengan menulis skrip dan menjalankannya di backgroud
Ini adalah skrip di mana Anda harus meletakkan nama skrip Anda (misalnya: - youscript.sh) yang akan berjalan pada 23:55 setiap hari
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
simpan dalam file (beri nama "every-day.sh")
sleep 1d - artinya menunggu selama satu hari dan kemudian berjalan lagi.
sekarang beri izin untuk skrip Anda. gunakan perintah di bawah ini: -
chmod + x every-day.sh
sekarang, jalankan skrip shell ini di latar belakang dengan menggunakan "nohup". Ini akan terus mengeksekusi skrip bahkan setelah Anda keluar dari sesi Anda.
gunakan perintah di bawah ini untuk menjalankan skrip.
nohup ./every-day.sh &
Catatan: - untuk menjalankan "yourscript.sh" pukul 23.55 setiap hari, Anda harus menjalankan skrip "every-day.sh" tepat pukul 23.55 sore.