Chạy crontab không tương tác từ tập lệnh


2

Tôi muốn lên lịch một số tác vụ trên các máy chủ từ xa theo kịch bản nhưng đang gặp sự cố với crontab dự kiến ​​sẽ được chạy tương tác lần đầu tiên. Theo như tôi hiểu thì crontab cần được khởi tạo bằng cách chạy đầu tiên crontab -e. Điều này khiến nó nhắc nhở trình soạn thảo nào sẽ sử dụng và khởi chạy trình soạn thảo đó.

Tôi cần khởi tạo crontab và lên lịch tác vụ trên quá nhiều máy chủ để đăng nhập vào từng máy. Có cách nào tôi có thể tránh được phần tương tác hoặc tập lệnh không?

Các máy chủ và máy khách của tôi đang chạy Ubuntu 13.04.

Câu trả lời:


3

Từ StackOverflow: Linux - Làm cách nào để tạo một crontab thông qua tập lệnh

Các công việc cron thường được lưu trữ trong một tệp cho mỗi người dùng dưới / var / spool / cron

Điều đơn giản nhất để bạn làm có lẽ chỉ là tạo một tệp văn bản với công việc được cấu hình, sau đó sao chép nó vào thư mục cron spool và đảm bảo rằng nó có quyền phù hợp.


1

Tôi còn khá mới với kịch bản shell linux và tôi thấy các câu trả lời trong bài viết SO mà Brian đề cập là không đầy đủ. Chúng là một trợ giúp tuyệt vời và có hầu hết các thông tin tôi cần nhưng tôi gặp phải một số vấn đề về quyền và thực thi các lệnh trên ssh. Giải pháp cuối cùng của tôi là:

cd ~/
echo "" > x
sudo cp ~/x /var/spool/cron/crontabs/myuser
sudo chown myuser:crontab /var/spool/cron/crontabs/myuser
echo "*/20 * * * * /path/to/myscript" > c
cat ~/c | crontab -

Đầu tiên tôi tạo một tệp crontab trống, sau đó sửa các quyền cho những gì crontab cần, sau đó đặt lệnh cron trong một tệp và cuối cùng báo cho crontab lên lịch cho tập lệnh.

Thêm lệnh cron vào một tệp thay vì sử dụng echo là cần thiết bởi vì tôi gặp vấn đề với việc trích dẫn qua ssh.


0

Bạn có thể chỉnh sửa các mục của crontab mà không cần sử dụng -etùy chọn như sau.

#write out current crontab
crontab -l > mycron
#echo new cron into cron file
echo "<new crontab entry>" >> mycron
#install new cron file
crontab mycron
rm mycron

Điều này thực sự hoạt động tốt để tạo / chỉnh sửa (sử dụng sed) các mục crontab thông qua các tập lệnh.

Nguồn: StackOverflow


-1

Đối với lập kế hoạch công việc phức tạp hoặc quy mô lớn, cronbắt đầu trở nên khó quản lý. Trong công việc, tôi sử dụng một bộ lập lịch doanh nghiệp (và đắt tiền) giúp quản lý hơn 300 công việc của chúng tôi một cách dễ dàng, nhưng cũng có những giải pháp miễn phí rất sẵn có ngoài kia.

Tôi khuyên bạn nên tránh xa cron, đặc biệt là khi bạn có quá nhiều máy chủ để đăng nhập riêng lẻ. Quản lý chúng có thể là một nỗi đau thực sự. Hãy thử googling "lập lịch công việc miễn phí Linux" hoặc xem http://juiceboxjobs.com mà tôi sử dụng với trang trại kết xuất 3D của mình tại nhà (chạy Ubuntu 12.04).

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.