Makinemdeki tüm zamanlanmış cron işlerinin bir listesini nasıl alabilirim?

Sistem yöneticim makinemde bir sürü cron işi ayarladı. Hangi saat için neyin planlandığını tam olarak bilmek istiyorum. Bu listeyi nasıl alabilirim?

Çözüm

Linux sisteminizin nasıl kurulduğuna bağlı olarak, şuraya bakabilirsiniz:

  • /var/spool/cron/* (crontabs kullanıcısı)
  • /etc/crontab (sistem genelinde crontab)

Ayrıca, birçok dağıtımda var:

  • /etc/cron.d/* Bu yapılandırmalar /etc/crontab ile aynı sözdizimine sahiptir

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

Bunlar basitçe, dizin adlarına göre saatlik, günlük, haftalık veya aylık olarak çalıştırılan yürütülebilir dosyaları içeren dizinlerdir.

Bunun da ötesinde, at jobs (/var/spool/at/* kontrol edin), anacron (/etc/anacrontab ve /var/spool/anacron/*) ve muhtemelen unuttuğum diğerlerine sahip olabilirsiniz.

Yorumlar (7)

Çoğu Cron ile (örneğin Vixie-Cron - Debian/Ubuntu varsayılanı, Cronie - Fedora varsayılanı, Solaris Cron ...) mevcut kullanıcı için zamanlanmış cron işlerinin listesini alırsınız:

$ crontab -l

veya başka bir kullanıcı için

# crontab -l -u juser

Tüm kullanıcıların crontab'larını almak için tüm kullanıcılar üzerinde döngü oluşturabilir ve bu komutu çağırabilirsiniz.

Alternatif olarak, biriktirme dosyalarına bakabilirsiniz. Genellikle /var/spool/cron dizini altında kaydedilirler, örneğin vcron için aşağıdaki dizin

/var/spool/cron/crontabs

adresinde bulunan sistem genelindeki crontab aracılığıyla işleri yapılandırabilen root kullanıcısı hariç tüm kullanıcıların yapılandırılmış tüm crontab'larını içerir.

/etc/crontab

cronie]1 (Fedora/CentOS'ta varsayılan) ile, sistem cron işleri için .d tarzı bir yapılandırma dizini de vardır:

/etc/cron.d

(Her zaman olduğu gibi, .d dizini farklı paketlerin parçası olan yapılandırma girdilerini korumayı kolaylaştırır).

Kolaylık sağlamak için, çoğu dağıtım ayrıca bağlantılı / depolanmış betiklerin periyodik olarak çalıştırıldığı bir dizin sağlar, örn:

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

Bu betiklerin zamanında çalıştırılması genellikle sistem crontab'ındaki run-parts girdileri veya anacron aracılığıyla yönetilir.

Systemd]3 ile (örneğin Fedora, CentOS 7, ...) periyodik iş yürütme ayrıca timer units aracılığıyla yapılandırılabilir. Etkinleştirilmiş sistem zamanlayıcıları şu yolla görüntülenebilir:

$ systemctl list-timers

Root dışındaki kullanıcıların da zamanlayıcıların yapılandırıldığı çalışan kullanıcı systemd örneklerine sahip olabileceğini unutmayın. Örneğin, Fedora'da, varsayılan olarak, oturum açmış olan her kullanıcı için bir kullanıcı systemd örneği başlatılır. Bunlar şu yolla tanınabilir:

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

Bu kullanıcı zamanlayıcıları şu yolla listelenebilir:

$ systemctl --user list-timers

List-timerskomutunu vermenin bir alternatifi, zamanlayıcı birim dosyalarını (kalıp:*.timer`) ve normal sistem ve kullanıcı systemd yapılandırma dizinlerinde bunlara sembolik bağlantıları aramaktır:

$ 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

(Normal hizmet birimlerinde olduğu gibi, bir zamanlayıcı birimi doğru systemd yapılandırma dizininde sembolik bir bağlantı oluşturularak etkinleştirilir).

Ayrıca bakınız:

Yorumlar (8)

Verilen kullanıcı için tüm cronları listelemek için.

crontab -u kullanıcı adı -l;

Tüm kullanıcılar için tüm cronları listelemek için

Süper kullanıcı olarak çalıştırın

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