2013-12-08 10 views
8

Может ли кто-нибудь сказать мне, как перезапустить процесс каждые 4 часа с помощью crontab? У меня запущен сервер Starbound (который недавно вышел из игры, например Terarria), и он использует много ресурсов, поэтому я хотел бы убить процесс, а затем запускать его каждые 6 часов.Как перезапустить процесс каждые 4 часа с помощью crontab?

То, что я думаю, что я должен был бы сделать в кронтаб является:

убить -9 | Grep starbound_server кд/дом/пар/Starbound/linux64 & & экрана -S Starbound -d -m ./launch_starbound_server.sh

Но я не уверен, что об этом и не понимаю время штуковины либо.

Я надеюсь, что кто-то может помочь мне :)

+1

Возможный дубликат: http://stackoverflow.com/ вопросы/11562804/running-cron-job-on-linux-every-6-hours – aste123

ответ

22

кронтаб как это работает.

# .---------------- 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 

Так что если вы хотите запускать свой скрипт каждую минуту с интервалом в 4 часа, вам придется добавить эту строку в файл crontab.

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

Чтобы запустить скрипт один раз каждые 4 часа (на нулевой минуте), вы должны добавить эту строку в файл CRONTAB.

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

Edit (Ответ на комментарий):

Да, я считаю, что это правильно, но, как сам я обычно делаю отдельный файл для этого, например, script.sh держать вещи в чистоте.

Например с содержимым:

#!/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 

Вы можете сохранить его на место вы хотите и использования:

chmod +x yourcript.sh 

сделать его исполняемым, а затем добавить его в CRONTAB.

+0

Wow thanks, я действительно не могу поверить, насколько хорошо вы это объяснили! Жаль, что я не смог бы поддержать вас. Если вы не возражаете, я задаю еще один вопрос, было бы правильно: * */4 * * * my_user_name screen -X -S | grep starbound kill && kill -9 | grep starbound_server && cd/home/steam/starbound/linux64 && screen -S starbound -d -m ./launch_starbound_server.sh – user3079979

+0

Эй, потрясающе, ты мой спаситель! Но screen -X -S | grep starbound kill, похоже, не работает, я googled, но не могу найти ничего, как искать/находить экран, а затем убивать его. Я хочу искать его, потому что иногда он не хочет, чтобы его убили, и мне нужно поставить pid.screen. – user3079979

+0

Вы пробовали «killall -9 starbound»? – m4gix1

1

При условии, что вы установили Starbound запуска сервера скрипт в /etc/init.d

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

И вы назвали его starbound.sh

Затем добавьте строку в ваш /etc/crontab так:

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

(ПРИМЕЧАНИЕ: это на случай, если стартовый сервер запущен root: убедитесь, что сам сервер опустил свои привилегии при запуске, если они им не нужны)

+2

Он должен быть '0/4 * * * root /etc/init.d/starbound.sh restart' для выполнения один раз в час. Не каждую минуту каждого 4-го часа. Я думаю, что это очевидно, чего хочет OP. – naktinis

Смежные вопросы