it-swarm-id.com

Bagaimana saya bisa mendapatkan daftar semua pekerjaan cron terjadwal di komputer saya?

Sysadmin saya telah mengatur banyak pekerjaan cron di komputer saya. Saya ingin tahu persis apa yang dijadwalkan untuk jam berapa. Bagaimana saya bisa mendapatkan daftar itu?

215
Frank

Bergantung pada bagaimana sistem linux Anda diatur, Anda dapat melihat:

  • /var/spool/cron/* (crontab pengguna)
  • /etc/crontab (crontab seluruh sistem)

juga, banyak distro memiliki:

  • /etc/cron.d/* Konfigurasi ini memiliki sintaks yang sama dengan /etc/crontab

  • /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly

Ini hanyalah direktori yang berisi executable yang dieksekusi setiap jam, harian, mingguan atau bulanan, sesuai dengan nama direktori mereka.

Selain itu, Anda dapat memiliki pekerjaan (periksa /var/spool/at/*), anacron (/etc/anacrontab dan /var/spool/anacron/*) dan mungkin yang lain saya lupa.

150
jsbillings

Dengan sebagian besar Crons (mis. Vixie-Cron - Debian/Ubuntu default, Cronie - default Fedora, Solaris Cron ...) Anda mendapatkan daftar pekerjaan cron terjadwal untuk pengguna saat ini melalui:

$ crontab -l

atau untuk pengguna lain via

# crontab -l -u juser

Untuk mendapatkan crontab untuk semua pengguna, Anda dapat mengulang semua pengguna dan memanggil perintah ini.

Atau, Anda dapat mencari file spool. Biasanya, mereka disimpan di bawah /var/spool/cron, mis. untuk direktori berikut vcron

/var/spool/cron/crontabs

berisi semua crontab yang dikonfigurasikan dari semua pengguna - kecuali pengguna root yang juga dapat mengonfigurasi pekerjaan melalui crontab seluruh sistem, yang terletak di

/etc/crontab

Dengan cronie (default pada Fedora/CentOS), ada .d direktori konfigurasi gaya untuk pekerjaan cron sistem, juga:

/etc/cron.d

(Seperti biasa, .d direktori menyederhanakan mempertahankan entri konfigurasi yang merupakan bagian dari paket yang berbeda.)

Untuk kenyamanan, sebagian besar distribusi juga menyediakan direktori tempat skrip tertaut/disimpan dieksekusi secara berkala, mis .:

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

Eksekusi skrip yang tepat waktu biasanya dikelola melalui run-parts entri dalam sistem crontab atau via anacron .

Dengan Systemd (mis. Pada Fedora, CentOS 7, ...) eksekusi pekerjaan berkala juga dapat dikonfigurasi melalui nit timer . Penghitung waktu sistem yang diaktifkan dapat ditampilkan melalui:

$ systemctl list-timers

Perhatikan bahwa pengguna di samping root mungkin memiliki instance sistem pengguna berjalan di mana timer juga dikonfigurasikan. Misalnya, pada Fedora, secara default, instance systemd pengguna dimulai untuk setiap pengguna yang saat ini login. Mereka dapat dikenali melalui:

$ ps aux | grep 'systemd[ ]--user'

Pengatur waktu pengguna tersebut dapat dicantumkan melalui:

$ systemctl --user list-timers

Alternatif untuk menerbitkan list-timers perintah adalah untuk mencari file unit timer (pola: *.timer) dan tautan simbolis ke mereka di direktori konfigurasi sistem dan sistem userd yang biasa:

$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
              -o -path '/home/*/.config/systemd/*' ')' \
      -name '*.timer'  2> /dev/null

(Seperti halnya unit layanan normal, unit timer diaktifkan melalui pembuatan tautan simbolik di direktori config systemd kanan.)

Lihat juga:

149
maxschlepzig

Untuk membuat daftar semua crons untuk pengguna yang diberikan.

crontab -u username -l;

Untuk membuat daftar semua crons untuk semua pengguna

Jalankan sebagai pengguna super

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done