2013-12-08 13 views
8

Ai đó có thể cho tôi biết cách khởi động lại quy trình mỗi 4 giờ bằng crontab? Tôi có một máy chủ Starbound đang chạy (đó là một trò chơi như Terarria mà gần đây đã xuất hiện) và nó chiếm rất nhiều tài nguyên, vì vậy tôi muốn giết quá trình sau đó bắt đầu lại sau mỗi 6 giờ.Làm cách nào để khởi động lại quy trình 4 giờ một lần bằng crontab?

Điều tôi nghĩ tôi cần làm trong crontab là:

kill -9 | grep starbound_server cd/home/hơi nước/starbound/linux64 & & màn hình -S starbound -d -m ./launch_starbound_server.sh

Nhưng tôi không chắc chắn về điều này và không hiểu thời gian thingy một trong hai.

Tôi hy vọng ai đó có thể giúp tôi :)

+1

Có thể trùng lặp: http://stackoverflow.com/ câu hỏi/11562804/running-cron-job-on-linux-every-6-giờ – aste123

Trả lời

22

crontab hoạt động như thế này.

# .---------------- minute (0 - 59) 
# | .------------- hour (0 - 23) 
# | | .---------- day of month (1 - 31) 
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
# | | | | | 
# * * * * * user-name command to be executed 

Vì vậy, nếu bạn muốn chạy tập lệnh mỗi phút trong khoảng thời gian 4 giờ, bạn phải thêm dòng này vào tệp crontab.

* */4 * * * user-name command to be executed 

Để chạy tập lệnh của bạn 4 giờ một lần (vào phút không), bạn phải thêm dòng này vào tệp crontab.

0 */4 * * * user-name command to be executed 

Chỉnh sửa (trả lời bình luận):

Vâng, tôi tin rằng điều này là đúng, nhưng như bản thân mình Tôi thường làm tập tin riêng biệt cho điều này, ví dụ, script.sh để giữ cho mọi thứ sạch sẽ.

Ví dụ với nội dung:

#!/bin/sh 

# Kill 1 
screen -X -S | grep starbound kill 

# Kill 2 
kill -9 | grep starbound_server 

# Change directory 
cd /home/steam/starbound/linux64 

# Start the server again 
screen -S starbound -d -m ./launch_starbound_server.sh 

Bạn có thể lưu nó vào vị trí mà bạn thích và sử dụng:

chmod +x yourcript.sh 

để làm cho nó thực thi, và sau đó thêm nó vào crontab.

+0

Wow cảm ơn, tôi thực sự không thể tin rằng bạn giải thích như thế nào! Chúc tôi có thể upvote bạn. Nếu bạn không nhớ tôi hỏi một câu hỏi khác, điều này có đúng không: * */4 * * * my_user_name screen -X -S | grep starbound kill && kill -9 | grep starbound_server && cd/home/hơi nước/starbound/linux64 && screen -S starbound -d -m ./launch_starbound_server.sh – user3079979

+0

Xin chào, bạn là vị cứu tinh của tôi! Nhưng màn hình-X -S | grep starbound kill dường như không hoạt động, tôi đã googled nhưng không thể tìm thấy bất cứ điều gì làm thế nào để tìm kiếm/tìm thấy một màn hình sau đó giết nó. Tôi muốn tìm kiếm nó bởi vì đôi khi nó không muốn bị giết và tôi phải đặt pid.screen. – user3079979

+0

Bạn đã thử "killall -9 starbound" chưa? – m4gix1

1

Với điều kiện là bạn đã cài đặt starbound máy chủ bắt đầu kịch bản trong /etc/init.d

http://www.bubblews.com/news/1749423-starbound-server-start-script

Và bạn đặt tên nó starbound.sh

Sau đó, thêm một dòng trong /etc/crontab của bạn như thế này:

0 /4 * * * root /etc/init.d/starbound.sh restart

(LƯU Ý: trường hợp này máy chủ khởi động được bắt đầu bằng root: hãy kiểm tra xem máy chủ có tự giảm các đặc quyền của nó khi bắt đầu nếu không cần)

+2

Nó phải là '0/4 * * * root /etc/init.d/starbound.sh restart' để thực thi mỗi giờ một lần. Không phải mỗi phút của mỗi 4 giờ. Tôi nghĩ rõ ràng điều OP muốn. – naktinis

Các vấn đề liên quan