Có phải là xấu khi chỉnh sửa tập tin cron bằng tay?


12

Nó thường được hướng dẫn để giới thiệu các công việc định kỳ mới thông qua các dòng lệnh; nhưng tôi thấy dễ dàng hơn (với sự kiểm soát tốt hơn các tác vụ cron hiện tại) để chỉnh sửa thủ công (trong trình soạn thảo văn bản) tệp cron người dùng như thế nào /var/spool/cron/crontabs/root.

Có nguy hiểm khi chỉnh sửa tập tin trong trình soạn thảo văn bản không?

Các ý kiến ​​trong tập tin mặc định là khó hiểu. Dòng đầu tiên nói

# DO NOT EDIT THIS FILE - edit the master and reinstall.

Nhưng dòng thứ tư nói

# Edit this file to introduce tasks to be run by cron.

2
Tại sao không đặt mọi thứ dưới /etc/cron.d?
Zoredache

Nó có thể là một ý tưởng tốt; nhưng tôi không có ý định chỉnh sửa tập tin nào, tôi đang so sánh tập tin chỉnh sửa bằng trình chỉnh sửa hoặc chạy lệnh crontab.
Googlebot

@ Tất cả tôi đoán sự khác biệt duy nhất là kiểm tra cú pháp được thực hiện bởi crontab-e. Nó chỉ là một bộ đệm văn bản với kiểm tra cú pháp. Bạn cũng có thể thay đổi trình soạn thảo thông thường của mình và crontab-e sẽ tải vào đó. Tầm quan trọng của xyntax là bởi vì tất cả các tệp sẽ bị bỏ qua nếu bạn làm sai. Ngay cả khi bạn sử dụng một công cụ bên ngoài, bạn vẫn nên sử dụng crontab-e để đọc tệp và gửi lại cho crontab-e khi kết thúc. Làm như vậy bạn không phải lo lắng về cú pháp nữa. Tốt hơn để phân chia các tệp từ người dùng và các tác vụ hệ thống, vì vậy bạn nên sử dụng /etc/cron.d tốt hơn cho các tác vụ người dùng / kiểm tra.
m3nda

Câu trả lời:


22

Nếu bạn sửa đổi tệp người dùng theo crontabs, nó sẽ hoạt động. Tuy nhiên, có hai vấn đề cần xem xét:

  1. Nếu bạn nhập sai mục cron trong tệp, bạn sẽ không bị cảnh báo trái ngược với sử dụng crontab -elệnh.
  2. Bạn không thể chỉnh sửa trực tiếp tệp người dùng của mình dưới crontabs mà không cần đăng nhập bằng root hoặc sử dụng sudo. Bạn sẽ nhận được sự cho phép từ chối lỗi.

Biên tập

Thêm một điểm để thêm. Khi bạn chỉnh sửa tệp trực tiếp, bạn có thể bị trình soạn thảo văn bản cảnh báo nếu bạn mở tệp hai lần (hai người dùng truy cập cùng một tệp). Tuy nhiên, danh sách cron sẽ bị ghi đè khi sử dụng crontab -etừ hai phiên shell khác nhau của cùng một người dùng. Đây là một sự khác biệt khác.


điểm rất tinh tế! Tôi không bao giờ phải đối mặt (biết) vấn đề thứ hai, vì tôi luôn làm việc như root.
Googlebot

4
Ngoài ra, "không chỉnh sửa" trong tệp mặc định là do nâng cấp / cài đặt lại có thể ghi đè lên tệp đó.
Chris S

Bạn không thể đề cập đến việc một người dùng chỉnh sửa crontab trực tiếp làm mất kiểm tra santax crontab -ecung cấp.
Adam F

1
@AdamF: Đây là điểm 1 đang nói về!
Khaled

8

Nếu tôi hiểu chính xác, bạn đang chỉnh sửa tệp theo cách thủ công bằng trình chỉnh sửa văn bản vì bạn không muốn sử dụng crontab -e. Tôi đoán đó là vì nó sử dụng vi làm biên tập viên và bạn không quen với nó.

Bạn thay đổi crontab -e (và những thứ khác cần trình chỉnh sửa) để sử dụng trình chỉnh sửa nano quen thuộc hơn bằng cách chạy

export EDITOR=nano

trước

crontab -e

Bạn có thể biến nano thành trình chỉnh sửa mặc định cho phép bằng cách chỉnh sửa tệp ~ / .bash_profile của bạn để đưa export EDITOR=nanovào cuối.

Để trả lời câu hỏi của bạn, bạn không nên chỉnh sửa tệp trực tiếp vì nó có thể bị ghi đè mà bạn không biết. Dòng thứ 4 nói những gì nó nói bởi vì nó xuất phát từ crontab mà bạn có nghĩa vụ phải chỉnh sửa thủ công (nó sẽ nói đó là dòng đầu tiên).


Cảm ơn đã trả lời mô tả. Tôi hoàn toàn quen thuộc với trình biên tập lệnh crontab vi; nhưng tôi sử dụng gedit (không phải trong thiết bị đầu cuối ssh), vì tôi kết nối trực tiếp với máy chủ từ máy tính để bàn linux của tôi.
Googlebot

Tôi cũng khuyên bạn nên thêm lệnh xuất EDITOR vào tệp bashrc của mình để tránh bị ghi mỗi khi bạn đăng nhập vào ssh.
m3nda

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.