it-swarm-vi.com

Làm cách nào để có được danh sách tất cả các công việc định kỳ theo lịch trên máy của tôi?

Sysadmin của tôi đã thiết lập một loạt các công việc định kỳ trên máy của tôi. Tôi muốn biết chính xác những gì được lên lịch cho thời gian. Làm thế nào tôi có thể có được danh sách đó?

215
Frank

Tùy thuộc vào cách hệ thống linux của bạn được thiết lập, bạn có thể xem trong:

  • /var/spool/cron/* (người dùng crontabs)
  • /etc/crontab (crontab toàn hệ thống)

ngoài ra, nhiều distro có:

  • /etc/cron.d/* Các cấu hình này có cùng cú pháp như /etc/crontab

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

Đây chỉ đơn giản là các thư mục chứa các tệp thực thi được thực thi hàng giờ, hàng ngày, hàng tuần hoặc hàng tháng, theo tên thư mục của chúng.

Trên hết, bạn có thể có việc làm (kiểm tra /var/spool/at/*), anacron (/etc/anacrontab/var/spool/anacron/*) và có lẽ những người khác tôi đang quên.

150
jsbillings

Với hầu hết các Crons (ví dụ Vixie-Cron - Mặc định Debian/Ubuntu, mặc định Cronie - Fedora, Solaris Cron ...), bạn có được danh sách các công việc cron được lên lịch cho người dùng hiện tại thông qua:

$ crontab -l

hoặc cho người dùng khác thông qua

# crontab -l -u juser

Để có được crontabs cho tất cả người dùng, bạn có thể lặp qua tất cả người dùng và gọi lệnh này.

Ngoài ra, bạn có thể tra cứu các tập tin spool. Thông thường, chúng được lưu dưới /var/spool/cron, ví dụ. cho vcron thư mục sau

/var/spool/cron/crontabs

chứa tất cả các crontab được định cấu hình của tất cả người dùng - ngoại trừ người dùng root cũng có thể định cấu hình các công việc thông qua crontab trên toàn hệ thống, được đặt tại

/etc/crontab

Với cronie (mặc định trên Fedora/CentOS), có .d thư mục cấu hình kiểu cho các công việc cron hệ thống, cũng:

/etc/cron.d

(Như mọi khi, .d thư mục đơn giản hóa việc duy trì các mục cấu hình là một phần của các gói khác nhau.)

Để thuận tiện, hầu hết các bản phân phối cũng cung cấp một thư mục trong đó các tập lệnh được liên kết/lưu trữ được thực hiện định kỳ, ví dụ:

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

Việc thực thi kịp thời các tập lệnh này thường được quản lý thông qua run-parts mục trong hệ thống crontab hoặc thông qua anacron .

Với Systemd (ví dụ: trên Fedora, CentOS 7, ...) việc thực hiện công việc định kỳ có thể được định cấu hình thông qua đơn vị hẹn giờ . Bộ hẹn giờ hệ thống được kích hoạt có thể được hiển thị thông qua:

$ systemctl list-timers

Lưu ý rằng người dùng bên cạnh root cũng có thể có các phiên bản systemd người dùng đang chạy trong đó bộ định thời được cấu hình. Ví dụ: trên Fedora, theo mặc định, một phiên bản systemd người dùng được bắt đầu cho mỗi người dùng hiện đang đăng nhập. Họ có thể được nhận ra qua:

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

Những bộ định thời người dùng có thể được liệt kê qua:

$ systemctl --user list-timers

Một cách khác để ban hành list-timers Lệnh là tìm kiếm các tập tin đơn vị hẹn giờ (mẫu: *.timer) và các liên kết tượng trưng đến chúng trong các thư mục cấu hình hệ thống và người dùng thông thường:

$ 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

(Giống như các đơn vị dịch vụ thông thường, đơn vị hẹn giờ được bật thông qua việc tạo liên kết tượng trưng trong thư mục cấu hình systemd bên phải.)

Xem thêm:

149
maxschlepzig

Để liệt kê tất cả các crons cho người dùng nhất định.

tên người dùng crontab -u;

Để liệt kê tất cả các crons cho tất cả người dùng

Chạy nó như một siêu người dùng

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