Cách thêm nhật ký vào crontab bằng dấu thời gian


9

Trong crontab, tôi đã lên lịch một kịch bản sao lưu hàng ngày. Bây giờ khi cron thực thi tập lệnh, trạng thái được ghi vào một tệp nhật ký như dưới đây.

0 0 * * * /home/backup.sh > /home/groupz/db-backup/fbackup.log 2>&1  

Bây giờ, khi cron thực thi một tập lệnh, nội dung của nhật ký sẽ được gia hạn mọi lúc. Vì vậy, tôi muốn các nội dung được thêm vào cùng một tệp có dấu thời gian của thời gian thực hiện và bên dưới nội dung của mỗi lần cùng với nội dung hiện có. Tôi có thể làm cái này như thế nào.


Đừng quên thoát khỏi ký tự "%" trong crontab của bạn! +%d-%m-%y/%H:%M:%SSẽ trở thành:+\%d-\%m-\%y/\%H:\%M:\%S
Vylmarion

Câu trả lời:



5

Cách lấy dấu thời gian trong một tệp

Để thêm dấu thời gian trong tệp, bạn có thể sử dụng datexem man dateđể biết thêm chi tiết. Ví dụ: nếu bạn sử dụng trong terminal, bạn sẽ có đầu ra như,

$ date +%d-%m-%y/%H:%M:%S
19-12-13/09:14:42

Đầu ra ở định dạng dd-mm-yy/hour:min:sec

Nếu bạn muốn đặt dấu thời gian trong một tệp, sử dụng

date +%d-%m-%y/%H:%M:%S > filename

Chuyển hướng

Nếu bạn sử dụng date +%d-%m-%y/%H:%M:%S > filenamethì ngày sẽ được lưu vào tệp nhưng nó sẽ bị ghi đè mỗi khi bạn sử dụng lệnh. Để nối nó trong một tập tin hiện có,

date +%d-%m-%y/%H:%M:%S >> filename

Nó sẽ thêm đầu ra thực hiện cuối cùng vào cuối tập tin hiện tại của bạn.

Bạn làm gì trong trường hợp của bạn

Bạn có thể thêm dòng sau vào cuối /home/backup.sh,

date +%d-%m-%y/%H:%M:%S

Và sử dụng như sau trong crontab,

0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1

Tôi nghĩ rằng sửa đổi ở trên nên làm những gì bạn muốn.


Đây phải là câu trả lời được chấp nhận
Dominik

1

(Trên Debian Jessie) Sử dụng tslệnh là một phần của moreutilsgói. Ví dụ:

0 0 * * * /home/backup.sh | ts '[%Y-%m-%d %H:%M:%S]' > /home/groupz/db-backup/fbackup.log 2>&1  

Điều này sẽ thêm dấu thời gian cho mỗi dòng đầu ra và lưu nó vào nhật ký của bạn.


1
Không làm việc cho tôi, tôi đang sử dụng Ubuntu 16.04. Tôi đã cài đặtmoreutils
Hamman Samuel

0

Vì bạn đang chạy tập lệnh shell, tại sao không thêm một dòng như,

some ./script    
echo `date -u `
some ./other/script

trong tập lệnh của bạn tức là /home/backup.sh

Sau đó

0 0 * * * /home/backup.sh >> /home/groupz/db-backup/fbackup.log 2>&1

sẽ nối một dòng trước / sau fbackup.log như Thu Jun 14 11:10:22 UTC 2018


Không echo `date -u`giống như data -u?
Stephen Rauch

Tiếng vang thêm một ngắt AIUI.
pbhj

-2

Bạn có thể nối một cái gì đó vào một tệp bằng hai trong số những điều này '>'.

$ echo "test" >> test.txt
$ echo "test" >> test.txt

$ cat test.txt
test
test

2
Điều gì về dấu thời gian
user3004356 16/12/13
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.