Điểm:1

Làm cách nào để biết tại sao crontab của tôi không hoạt động?

lá cờ in

Tôi là một người mới ... Tôi sẽ làm điều đó ngay trước mắt. Tôi có một máy chủ Ubuntu 20.04 LTS đơn giản chỉ được sử dụng làm máy chủ minecraft.

Crontab đang gây ra cho tôi một số vấn đề

*/10 * * * * screen -S minecraft -p 0 -X stuff "save-all^M"
@khởi động lại /home/minecraft/startserver.sh
@daily find /home/minecraft/backup/* -mtime +6 -type f -delete
@daily zip -9 -r --exclude=*backup* --exclude=*web* --exclude=*crash-reports* --exclude=*lost+found* /home/minecraft/backup/$(date + "%Y.%m.%d %I.%M %P").zip /home/minecraft

Dòng đầu tiên hoạt động, nhưng @daily và @reboot hoàn toàn không hoạt động. TẤT CẢ các lệnh hoạt động từ thiết bị đầu cuối mà không có lỗi.

Xin hãy giúp tôi hiểu điều này, tôi không có kinh nghiệm với linux và tôi đang cố gắng tìm ra điều này. Tôi biết rằng một số người có thể nghĩ rằng điều này sẽ được xử lý tốt hơn với systemd, nhưng tôi còn quá mới để tìm ra điều đó và tôi không muốn cài đặt một tập lệnh mà tôi không thể sửa chữa.

Tại sao crontab không thành công những dòng này? Tôi không nghĩ đó là quyền. Xin hãy giúp tôi gỡ lỗi này

cảm ơn vì đã dành thời gian cho tôi

CHỈNH SỬA: OK, sau khi tìm hiểu kỹ, vấn đề với tập lệnh máy chủ khởi động nằm trong chính tập lệnh chứ không phải crontab. tôi phát hiện ra rằng tôi cần phải có -d cờ cho lệnh màn hình trong crontab.

Lệnh zip đang hoạt động, nhưng tôi không thể tìm ra mã thoát nào sẽ sử dụng để thêm khoảng trắng vào ngày sao lưu/$(ngày +"\%Y.\%m.\%d \%I.\%M \%P").zip Sử dụng dấu gạch chéo \ hoặc sử dụng " " đừng làm việc. Nếu có ai biết cách thoát khỏi khoảng trắng bằng cách tạo tệp zip, vui lòng cho tôi biết.

Tôi đã được yêu cầu trong các nhận xét sử dụng định dạng phù hợp để chỉnh sửa bài đăng. Tôi không biết điều đó có nghĩa là gì, đây là bài viết đầu tiên của tôi.

lá cờ vn
Chào Cronie! Chào mừng bạn đến với AskUbfox! Đó có phải là ^M hai ký tự (^ và M) hoặc ký tự xuống dòng ở định dạng Windows không? Nếu có một trả về vận chuyển giả mạo trong đó thì 3 dòng tiếp theo có thể không được hiểu chính xác.
Cronie avatar
lá cờ in
@ tu-ReinstateMonica-dorduh Dòng đó đang gửi lệnh đến máy chủ minecraft trên màn hình. ^M nằm trong dấu ngoặc kép, điều đó có nên sắp xếp lại nó không? --Chỉnh sửa: Tôi đã nhận xét dòng đó và nó không giải quyết được vấn đề.
lá cờ au
Bạn cần thoát các ký tự `%` (`...date +"\%Y.\%m.\%d \%I.\%M \%P"...`) (xem [tại đây]( https://unix.stackexchange.com/questions/119450)), và có lẽ cũng nên trích dẫn các ký tự đại diện trong lệnh `zip` (ví dụ: `--exclude="*backup*"`) (nhưng không phải trong `find ` lệnh). Ngoài ra, tôi sẽ ghi nhật ký đầu ra & lỗi từ các lệnh bằng cách thêm một cái gì đó như `>>/tmp/minecraftserver.log 2>&1` vào mỗi dòng (nhưng với một tên tệp khác nhau cho mỗi dòng), sau đó kiểm tra các tệp nhật ký đó để xem họ có đưa ra dấu hiệu điều gì đang xảy ra không.
lá cờ au
Thông tin khắc phục sự cố khác [tại đây](https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working) và [tại đây](https://serverfault.com/questions/449651/why- is-my-crontab-not-working-and-how-can-i-khắc phục sự cố).
lá cờ au
@Cronie việc thêm khoảng trắng vào tên tệp rất phức tạp, bởi vì cả hai bạn phải đặt dấu ngoặc kép xung quanh chuỗi định dạng thành `date` để cho nó biết có khoảng trắng *trong* đối số (chứ không phải giữa các đối số), *và* bạn cũng phải đặt dấu ngoặc kép xung quanh điều `$( )` để yêu cầu trình bao không phân tách từ đầu ra mà nó nhận được. Có lẽ tốt nhất là trích dẫn hai lần toàn bộ đường dẫn tệp: `... "/home/minecraft/backup/$(date +"\%Y.\%m.\%d \%I.\%M \%P" .zip" ...`. BTW, tôi đề xuất thứ hai của waltinator để đưa cái này vào một tập lệnh (và xóa những lần thoát đó) và chỉ cần để mục nhập cron chạy tập lệnh.
Điểm:0
lá cờ it

Công việc chạy qua cron, hoặc hệ thống tập lệnh khởi động không chạy trong cùng một môi trường thời gian chạy mà bạn có trên máy tính để bàn của mình. hệ thống kịch bản khởi động được chạy như nguồn gốc. Không ai trong số bạn CON ĐƯỜNG các thay đổi hoặc cài đặt biến môi trường khác sẽ tự động được truyền tới cron Công việc. Ví dụ, không có $HIỂN THỊ, vì vậy các chương trình GUI cần được xử lý đặc biệt (đọc người đàn ông xhost).

Người ta có thể đặt các biến môi trường cho tất cả mọi người cron công việc trong crontab tập tin Đọc người đàn ông 5 crontab.

Nhìn vào kết quả của echo "=== id ==="; id;echo "=== set ==="; set; echo "=== env ==="; env | sort;echo "=== bí danh ==="; bí danh trong mỗi môi trường của bạn.

Kể từ khi chỉ huy một phần của crontab theo mặc định, dòng được giải thích bởi /bin/sh, có cú pháp đơn giản hơn /bin/bash, tôi khuyên bạn nên có chỉ huy là một cuộc gọi đến một đánh đập tập lệnh (có thể thực thi, được gắn kết, bắt đầu bằng #!/bin/bash) thiết lập môi trường, sau đó gọi chương trình mong muốn.

Cronie avatar
lá cờ in
Xin lỗi, tôi nên đề cập rằng đây không phải là GUI Ubuntu, máy chủ chỉ là thiết bị đầu cuối. Tôi đã nhập lệnh ```echo``` mà bạn đề xuất và nó cung cấp nhiều trang thông tin mà tôi không được trang bị để giải mã. Tôi không rõ liệu bạn có ý định thêm ```#!bin/bash``` vào crontab hay các tập lệnh mà tôi đang gọi hay không. Các tập lệnh tôi đang chạy đã có ```#!bin/bash``` trong tiêu đề của chúng
waltinator avatar
lá cờ it
Chạy các lệnh `echo` trong môi trường đầu cuối của bạn, lưu kết quả vào một tệp Chạy lại chúng qua `crontab`, lưu kết quả vào một tệp khác. So sánh các tệp `diff file1 file2 | ít`. Một số biến môi trường bị thiếu trong tệp do `crontab` tạo hoặc có các giá trị khác nhau, ví dụ: `ĐƯỜNG`. Vì trường `crontab` `command` được diễn giải bằng cú pháp `/bin/sh`, mọi người thường nhầm lẫn khi cố gắng sử dụng `/bin/bash nâng cao hơn
waltinator avatar
lá cờ it
Vì trường `crontab` `lệnh` được diễn giải bằng cú pháp `/bin/sh`, nên mọi người thường cố gắng sử dụng cú pháp `/bin/bash` nâng cao hơn một cách nhầm lẫn. Vì vậy, tôi khuyên bạn chỉ nên tham chiếu đến tập lệnh dưới dạng ` crontab` `command` (`/usr/local/bin/script7`) và lưu thông minh, mã gỡ lỗi, tạo lệnh, kiểm tra ("Đây có phải là Thứ Ba thứ 2 không?".) cho `script7`, bắt đầu bằng `#!/bin/bash`.
waltinator avatar
lá cờ it
Vui lòng [chỉnh sửa] bài đăng của bạn để thêm thông tin mới, được định dạng đúng. Thông tin được thêm qua nhận xét rất khó để bạn định dạng, chúng tôi khó đọc và bị người đọc trong tương lai bỏ qua. Vui lòng nhấp vào [chỉnh sửa]Â và thêm thông tin quan trọng đó vào câu hỏi của bạn để tất cả thông tin chúng tôi cần đều có trong câu hỏi. Vui lòng không sử dụng Thêm Nhận xét, vì đó là liên kết của chúng tôi với bạn. Tất cả sự thật về hệ thống của bạn nên có trong Câu hỏi với[sửa]

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.