Nhật ký cron / crontab ở đâu?


753

Tôi muốn xác minh rằng công việc định kỳ của tôi đang thực hiện và vào thời gian nào. Tôi tin rằng có một bản ghi cho sudo crontab -ecông việc của tôi , nhưng ở đâu?

Tôi đã tìm kiếm trên google và tìm thấy các đề xuất để tìm kiếm /var/log(trong đó tôi không thấy bất cứ điều gì có 'cron' trong tên) và để chỉnh sửa tệp /etc/syslog.confmà tôi cũng không có.

Câu trả lời:


895

Trên cài đặt mặc định, các công việc cron được đăng nhập vào

/var/log/syslog

Bạn có thể thấy chỉ các công việc cron trong logfile đó bằng cách chạy

 grep CRON /var/log/syslog

Nếu bạn chưa cấu hình lại bất cứ điều gì, các mục sẽ ở trong đó.


46
Nếu không có MTA được cài đặt, cron chỉ cần ném đầu ra công việc đi.
Barry Kelly

11
Nhật ký cron có thể nằm trong một tệp khác trong /var/log/thư mục. Kiểm tra cron.log hoặc tương đương.
Navigatron

4
Điều này không cho tôi đầu ra từ công việc. nó chỉ đưa ra một thông điệp chung rằng cron đã được xử lý.
chovy

2
trên AWS, đó là / var / log / cron
tsukimi

5
@shadi bạn cũng có thể grep -i CRONtìm kiếm trường hợp không nhạy cảm
nafg

236

Bạn có thể tạo tệp cron.log để chỉ chứa các mục CRON hiển thị trong syslog. Lưu ý rằng các công việc CRON vẫn sẽ hiển thị trong syslog nếu bạn làm theo các hướng dẫn sau.

Mở tập tin

/etc/rsyslog.d/50-default.conf

Tìm dòng bắt đầu bằng:

#cron.*

bỏ ghi chú dòng đó, lưu tệp và khởi động lại rsyslog:

sudo service rsyslog restart

Bây giờ bạn sẽ thấy một tệp nhật ký cron ở đây:

/var/log/cron.log

Hoạt động cron bây giờ sẽ được ghi vào tệp này (ngoài syslog).

Lưu ý rằng trong cron.log, bạn sẽ thấy các mục nhập khi cron chạy các tập lệnh trong /etc/cron.hourly, cron.daily, v.v. - ví dụ:

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Tuy nhiên, bạn sẽ không thấy thêm thông tin về những tập lệnh nào thực sự được chạy bên trong /etc/cron.daily hoặc /etc/cron.hourly, trừ khi các tập lệnh này trực tiếp xuất ra cron.log (hoặc có thể cho một số tệp nhật ký khác).

Nếu bạn muốn xác minh xem một crontab đang chạy và không phải tìm kiếm nó trong cron.log hoặc syslog, hãy tạo một crontab chuyển hướng đầu ra thành tệp nhật ký bạn chọn - đại loại như:

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

Điều này sẽ chuyển hướng tất cả đầu ra tiêu chuẩn và các lỗi có thể được tạo ra bởi tập lệnh được chạy đến tệp nhật ký được chỉ định.


1
Với ý kiến ​​của tôi, câu trả lời này là tốt hơn trong tương lai. Vì vậy, tập tin syslog của bạn là rõ ràng hơn.
shgnInc

9
Để loại trừ nhật ký cron khỏi syslog, bạn có thể thay đổi dòng *.*;auth,authpriv.none -/var/log/syslogthành *.*;auth,authpriv.none,cron.none -/var/log/syslog.
Koen.

Trên CentOS 6 của chúng tôi, cron. * Được xác định trong /etc/rsyslog.conf, trong khi tôi trống trong thư mục rsyslog.d.
Scott Chu

viết 2>&1tắt của từ gì
John Joe

2
@JohnJoe 2> & 1 được sử dụng để chuyển stderr sang thiết bị xuất chuẩn, bằng cách này, bạn cũng sẽ nhận được stderr để đăng nhập tệp.
Sampo Sarrala

79

Đôi khi nó có thể hữu ích để liên tục theo dõi nó, trong trường hợp đó:

tail -f /var/log/syslog | grep CRON

10
Chà, có lẽ bạn muốn sử dụng -F, tệp này sẽ theo tệp thay đổi tên, để khi nó bị cắt / chuyển sang, ví dụ: /var/log/syslog.1.gzbạn vẫn đang theo dõi /var/log/syslogtệp hiện tại . Theo tài liệu của người đàn ông, điều này giống như chạytail xxxx -f --retry
Momer 17/12/14

37

Bạn cũng có thể hướng đầu ra của các cronjobs riêng vào nhật ký riêng của họ để dễ đọc hơn, bạn sẽ chỉ cần nối thêm đầu ra của ngày ở đâu đó.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

4
đúng, nhưng nếu dòng này không chạy do lỗi cú pháp, sẽ không có gì được ghi trong nhật ký đầu ra được chỉ định.
Raptor

11
Bạn có thể giải quyết điều này bằng cách nối thêm 2> & 1 sau khi tệp nhật ký được chỉ định. Cách tốt nhất là kiểm tra cronjobs của bạn trước khi thêm chúng vào crontab, và sau đó có mặt cho lần chạy theo lịch trình đầu tiên để đảm bảo rằng crontab được định dạng đúng.
Andrew Meyer

10

Nếu bạn đã systemdcài đặt trên hệ thống của mình, bạn có thể hiển thị nhật ký công việc định kỳ bằng cách sử dụng journalctllệnh.

Ví dụ: trên Ubuntu 17.10 của tôi:

journalctl -u cron.service

9

Đây là một câu hỏi rất cũ, nhưng không có câu trả lời nào trong số này có vẻ thỏa đáng.

Trước tiên, hãy thực hiện công việc cron của bạn mỗi phút, sau đó chạy cron dưới dạng không phải daemon (tạm thời, chỉ cần giết bất kỳ crond nào có thể đã bắt đầu) với đăng nhập thử nghiệm:

crond -nx test

Và xem nhật ký thực hiện chương trình của bạn chảy qua thiết bị đầu cuối của bạn.


7
Không chạy vào ngày 14.04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-.

8

Đó là /var/log/syslogtheo mặc định.

Nhưng nó có thể được thiết lập để tạo một cron.log riêng, hữu ích hơn.

Q & A này mô tả quá trình:

16.04: Làm cách nào để tôi tạo cron tạo cron.log và theo dõi nó trong thời gian thực?

Ngoài ra trong câu trả lời này là các hướng dẫn để tạo một wcronlệnh hiển thị nó gần như thời gian thực. Thêm vào đó, nó liên kết đến một câu trả lời khác,

Làm thế nào để thay đổi cấp độ nhật ký cron?

cho thấy cách thay đổi cấp độ nhật ký để bao gồm nhiều hơn là chỉ bắt đầu công việc - cấp 15 cũng sẽ hiển thị lỗi và thời gian kết thúc.


5

Fedoar 29 và RHEL 7

journalctl -t CROND

Từ journalctlhướng dẫn:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.

3

Bạn có thể chuyển hướng đầu ra của cron sang tệp tmp

Chẳng hạn như: 00 11 07 * * / bin / bash /home/ubfox/command.sh> / tmp / output 2> & 1

Lỗi và đầu ra bình thường, cả hai sẽ được chuyển hướng đến cùng một tệp


2

Giống như đã đề cập trước đó, các công việc định kỳ được đăng nhập vào /var/log/syslog

Bạn có thể chuyển syslog sang grep và lọc các bản ghi CRON, như thế này

less /var/log/syslog | grep CRON 

Bạn có thể tìm kiếm thông qua nhật ký crontab của bạn, như thế này

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

Bạn có thể tìm kiếm thông qua nhật ký lịch sử crontab của bạn được lưu trữ trong các tệp gz, như thế này

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Nó luôn được coi là tốt khi có cơ chế ghi nhật ký, bạn có thể nhanh chóng thiết lập ELK cho máy chủ của mình, bạn cũng có thể thử nghiệm với logz .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.