zeetg | 2020-08-09 20:44:21 UTC | #1
Cześć. Chciałbym na serwer dodać automatyczny restart o godzinie 4:30, ale niestety po wielu próbach nadal mi się nie udało. Mam stworzony skrypt restartujący i działa jeśli go wykonuje samodzielnie, ale gdy go dodaje do crona, aby uruchamiał się o wybranej godzinie to nie jest wykonywany o żadnej porze. Robiłem już bardzo wiele kombinacji skryptu w crontabie, ale bez skutku. Potrzebne informacje podaję niżej, jeśli coś źle robię to proszę o pomoc.
SKRYPT RESTARTUJĄCY
1 2 3 4 5 |
|
SKRYPTY KTÓRYCH PRÓBOWAŁEM UŻYĆ W CRONIE
30 4 * * * /home/restart.sh >/dev/null 2>&1
30 4 * * * /home/minecraft/restart.sh >/dev/null 2>&1
30 4 * * * /home/minecraft/server/restart.sh >/dev/null 2>&1
LOKALIZACJA PLIKU
/home/minecraft/server
Nieznajomy11 | 2020-08-08 04:08:01 UTC | #2
Cron ma wiele znacznych różnic w porównaniu do zwykłego wykonywania w terminalu, odpala się np. na własnych zmiennych środowiskowych. Może tam nie być czegoś takiego jak screen
. Podaj pełną ścieżkę do pliku. Powinieneś ją znaleźć wykonując poniższą komendę:
which screen
Ogólnie to raczej nie zalecałbym restartowania serwerów w ten sposób (jest bardzo mocno zależny środowiskowo i wymaga dodatkowego setupu), tylko raczej skupił się na jakiejś niedużej wtyczce, która się tym zajmie.
[quote=”zeetg, post:1, topic:15650”]
stop$(echo '\r')
[/quote]
Dodatkowo twój sposób wykonywania komendy wydaje się być trochę hacky. Wystarczyłoby pewnie użyć stop^M
, mniej potencjalnych problemów oraz czytelniejszy skrypt.
zeetg | 2020-08-08 18:40:36 UTC | #3
Skrypt po edycji powinien wyglądać w ten sposób czy coś jeszcze zmienić? Po użyciu komendy, którą podałeś pokazuje mi się /usr/bin/screen, czy powinienem to gdzieś wpisać/podmienić?
1 2 3 4 5 |
|
Nieznajomy11 | 2020-08-09 00:02:50 UTC | #4
Zamiast:
screen -S skyblock -p 0 -X stuff "stop^M"
Użyj:
/usr/bin/screen -S skyblock -p 0 -X stuff "stop^M"
zeetg | 2020-08-09 00:44:49 UTC | #5
Obecnie skrypt prezentuje się tak:
1 2 3 4 5 |
|
Ale niestety restart dalej się nie wykonuje, może dodaje złe skrypty do crona? Próbowałem z każdym podanym przeze mnie wyżej.
zeetg | 2020-08-10 01:07:22 UTC | #6
Dodam tylko jeszcze, że po wpisaniu crontab -l
skrypty są dodane i powinny działać, ale ciągle nie uruchamiają się z niewiadomych mi przyczyn.
Kamil02167 | 2020-08-10 18:24:41 UTC | #7
Ja osobiście korzystałem ze skryptu z anglojęzycznego forum.
https://www.minecraftforum.net/forums/support/server-support-and/1917504-auto-restart-script-linux-bukkit-maintenance-cron
Z pewnością mogę polecić :wink:
zeetg | 2020-08-10 20:32:34 UTC | #8
Z tego poradnika również korzystałem, ale jak już wyżej napisałem to wszystko robię jak jest opisane, ale po prostu restart nie jest wykonywany.
zeetg | 2020-08-11 01:58:15 UTC | #10
Czytałeś w ogóle co pisałem wyżej? Bo już o tym mówiłem. Tak, próbowałem i ręcznie działa, ale crontab nie wykonuje po prostu skryptu.
KMatuszak | 2020-08-11 09:58:17 UTC | #11
[quote=”zeetg, post:1, topic:15650”]
SKRYPTY KTÓRYCH PRÓBOWAŁEM UŻYĆ W CRONIE
30 4 * * * /home/restart.sh >/dev/null 2>&1
30 4 * * * /home/minecraft/restart.sh >/dev/null 2>&1
30 4 * * * /home/minecraft/server/restart.sh >/dev/null 2>&1
[/quote]
to nie jest prawidłowy sposób uruchamiania skryptu poprzez cron
spróbuj wpisać bash
przed lokalizacją do skryptu oraz usuń zbędną końcówkę:
30 4 * * * bash /home/restart.sh
30 4 * * * bash /home/minecraft/restart.sh
30 4 * * * bash /home/minecraft/server/restart.sh
EDIT: napisałem poradnik na ten temat, warto zapoznać się :wink:
https://forum.lvlup.pro/t/jak-korzystac-z-crona-automatyczne-wykonywanie-codziennych-czynnosci/15700
zeetg | 2020-08-11 17:25:30 UTC | #12
Próbowałem i dalej nie działa. Chciałem też sprawdzić czy cron wykona inny skrypt, który tylko wysyła ogłoszenie na serwerze, ale on też nie jest wykonywany, ręcznie działa.
KMatuszak | 2020-08-11 17:36:31 UTC | #13
sprawdź czy w ogóle działa ci cron :woman_shrugging:
zeetg | 2020-08-11 17:41:48 UTC | #14
W jaki sposób?
KMatuszak | 2020-08-11 17:42:29 UTC | #15
na przykład zapoznaj się z poradnikiem który podesłałem wyżej, i powtórz kroki opisane w nim.
zeetg | 2020-08-11 18:01:50 UTC | #16
Zrobiłem wszystkie kroki pokazane w poradniku, ale skrypty dalej nie są wykonywane przez crona.
KMatuszak | 2020-08-11 18:04:08 UTC | #17
jesteś pewien że zrobiłeś wszystko zgodnie z poradnikiem? jeżeli tak to zalecam skopiowanie danych i wykonanie reinstalacji, wygląda to na uszkodzony system.
zeetg | 2020-08-11 18:46:39 UTC | #18
Nie sądzę żeby to pomogło. Próbowałem nawet na innym nowo zakupionym VPS, ale bez skutku.
KMatuszak | 2020-08-11 18:47:14 UTC | #19
w takim razie robisz coś źle. zachęcam do ponownego zapoznania się z poradnikiem :slightlysmilingface:
zeetg | 2020-08-11 19:18:14 UTC | #20
Przetestowałem opcję, która wykonuje skrypt co minutę i ona działa, ale problem w tym, że potrzebuję działania skryptu o wyznaczonej godzinie.
KMatuszak | 2020-08-11 19:19:41 UTC | #21
[quote=”zeetg, post:20, topic:15650”]
Przetestowałem opcję, która wykonuje skrypt co minutę i ona działa
[/quote]
:tada:
[quote=”zeetg, post:20, topic:15650”]
potrzebuję działania skryptu o wyznaczonej godzinie.
[/quote]
to również jest opisane w poradniku :thinking:
masz dobrą godzinę na serwerze?
zeetg | 2020-08-11 19:21:04 UTC | #22
Wiem, że jest to tam opisane, ale właśnie ona mi nie działa, a opcja wykonywania co np minutę już tak. Nie za bardzo rozumiem pytanie?
KMatuszak | 2020-08-11 19:22:11 UTC | #23
zapytałem czy w systemie na serwerze ustawiona jest prawidłowa godzina :sweat_smile:
możesz to sprawdzić komendą bodajże date
.
zeetg | 2020-08-11 19:23:18 UTC | #24
KMatuszak | 2020-08-11 19:26:12 UTC | #25
a więc tutaj jest problem :slightlysmilingface:
prawidłową godzinę możesz ustawić przy pomocy komendy dpkg-reconfigure tzdata
musisz też ponownie uruchomić system aby zastosować zmiany
zeetg | 2020-08-11 19:34:15 UTC | #26
Jest już krok do przodu, bo skrypt w połowie działa. W połowie dlatego, że serwer się wyłącza, ale się nie włącza. Czy to możliwe, że nie dodałem jakiegoś uprawnienia?
KMatuszak | 2020-08-11 19:35:29 UTC | #27
mógłbyś pokazać zawartość skryptu który jest uruchamiany przez crona, oraz skryptu startowego serwera?
zeetg | 2020-08-11 19:38:03 UTC | #28
SKRYPT RESTARTUJĄCY
1 2 3 4 5 |
|
SKRYPT STARTUJĄCY
screen -S server java -Xms1G -Xmx1G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar silnik.jar nogui
KMatuszak | 2020-08-11 19:39:57 UTC | #29
[quote=”zeetg, post:28, topic:15650”]
sh start.sh
[/quote]
podmień to na bash start.sh
[quote=”zeetg, post:28, topic:15650”]
screen -S server java
[/quote]
a to na /usr/bin/screen -S server java
oraz na początku pliku startowego dodaj #!/bin/bash
zeetg | 2020-08-11 19:55:58 UTC | #30
Nie pomogło. Serwer dalej się nie włącza.
KMatuszak | 2020-08-11 20:00:46 UTC | #31
a spróbuj jeszcze w komendzie startowej podmienić screen -S server
na screen -dmS server
zeetg | 2020-08-11 20:00:44 UTC | #32
Podziałało, bardzo dziękuję za pomoc ;)
system | 2020-09-12 20:00:48 UTC | #33
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.