Rozentiger | 2020-11-26 14:37:55 UTC | #1
Witam, bawię się w automatyczne restarty i gdy do crontaba wrzucę:
0 6 * * * bash /home/minecraft/RPG/restart.sh
wszystko normalnie się wykonuje poza krokami, które występują po zastopowaniu serwera. Dodam, że jeżeli ręcznie w konsoli wpiszę bash restart.sh wszystko wykonuje się tak jak powinno.
Mój skrypt restartujący stworzony do testów:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Zawartość start.sh:
1 2 |
|
W czym może być problem? Z góry dzięki za pomoc
DoreK | 2020-11-26 14:44:09 UTC | #2
w start.sh wywal screena i przenieś go do skryptu restartującego
Rozentiger | 2020-11-26 14:57:27 UTC | #3
Jeżeli chodzi o coś takiego to sytuacja wciąż wygląda identycznie
!/bin/bash
/usr/bin/screen -S RPG -p 0 -X stuff “broadcast &33$(echo ‘\r’)”
sleep 1s;
/usr/bin/screen -S RPG -p 0 -X stuff “broadcast &32$(echo ‘\r’)”
sleep 1s;
/usr/bin/screen -S RPG -p 0 -X stuff “broadcast &31$(echo ‘\r’)”
sleep 1s;
/usr/bin/screen -S RPG -p 0 -X stuff “save-all &31$(echo ‘\r’)”
sleep 1s;
/usr/bin/screen -S RPG -p 0 -X stuff “stop^M”
sleep 8s;
cd /home/minecraft/RPG
/usr/bin/screen -dmS RPG java -Xms26G -Xmx26G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=20 -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 spigot.jar
DoreK | 2020-11-26 15:24:57 UTC | #5
Dobra - inaczej.
/usr/bin/
przed screen
także możesz wywalić, nie jest to potrzebne
Przywróć poprzedni plik start.sh (trochę źle zrozumiałem post, wybacz).
Czy samo start.sh działało poprawnie?
Rozentiger | 2020-11-26 15:28:12 UTC | #6
Będąc w /home/minecraft/RPG i wpisując w konsole sh start.sh wszystko działa jak powinno, tu zawartość:
!/bin/bash
screen -dmS RPG java -Xms26G -Xmx26G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=20 -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 spigot.jar
LinGruby | 2020-11-26 17:55:43 UTC | #7
[quote=”Rozentiger, post:1, topic:16907”]
Witam, bawię się w automatyczne restarty i gdy do crontaba wrzucę:
0 6 * * * bash /home/minecraft/RPG/restart.sh
[/quote]
obstawiam że jak wszystko wykonuje się poprawnie w terminalu ( wszystkie skrypty ) to problem leży w dodatku w crontab
opcja uruchamiania przez root
a
0 6 * * * root /home/minecraft/RPG/restart.sh
opcja uruchamiana przez użytkownika
0 6 * * * użytkownik /home/minecraft/RPG/restart.sh
crontab
jest czuły na to, nawet są podpowiedzi
# m h dom mon dow user command
tak mi się wydaje ;-)
Rozentiger | 2020-11-26 18:21:21 UTC | #8
crontab wykonuje
19 19 * * * bash /home/minecraft/RPG/restart.sh
ale
19 19 * * * root bash /home/minecraft/RPG/restart.sh
czy też
19 19 * * * root /home/minecraft/RPG/restart.sh
juz nie
LinGruby | 2020-11-26 19:02:56 UTC | #9
przyzna że to dziwne…
u mnie jeden ze skryptów do synchro zegara:
*/14 * * * * root /usr/local/bin/ntp.sh
zawartość skryptu:
#!/bin/sh
(
/usr/bin/ntpdate vega.cbk.poznan.pl \
zegar.umk.pl \
ntp.nask.pl \
time.atman.pl \
ntp.task.gda.pl \
/usr/bin/hwclock --systohc
) >/dev/null
działa więc się zdziwiłem…
tak mi przyszło do głowy
[quote=”Rozentiger, post:1, topic:16907”]
cd /home/minecraft/RPG
bash start.sh
[/quote]
zapisz tak
bash /home/minecraft/RPG/start.sh
zobacz czy pójdzie ( czasami zdarza się że jakaś pierdoła… )
a czy jak i co się robi w cron możesz zobaczyć
systemctl status cron
Rozentiger | 2020-11-26 19:10:50 UTC | #10
bash /home/minecraft/RPG/start.sh
niestety ta opcja nie działa nawet przez konsolę
LinGruby | 2020-11-26 19:19:39 UTC | #11
a
bash -c "/home/minecraft/RPG/start.sh"
Rozentiger | 2020-11-26 19:23:08 UTC | #12
/bin/bash^M: bad interpreter: No such file or directory
LinGruby | 2020-11-26 19:24:02 UTC | #13
bash -c '/home/minecraft/RPG/start.sh'
Rozentiger | 2020-11-26 19:25:02 UTC | #14
to samo
LinGruby | 2020-11-26 19:32:00 UTC | #15
a próbowałeś sprawdzać co masz w PATH
może jak byś dodał /home/minecraft/RPG
wystarczyło by może
teraz już kombinuję acz moje skrypty działają a trochę ich mam ;-)
czy to na kvm czy na lapku…
trzeba sobie życie ułatwiać :-D
Rozentiger | 2020-11-26 19:36:23 UTC | #16
a próbowałeś sprawdzać co masz w
PATH
nie bardzo rozumiem
LinGruby | 2020-11-26 19:43:27 UTC | #17
czy to w crontab
czy .bashrc
( jak korzystasz a $SHELL bash )
Rozentiger | 2020-11-26 19:53:30 UTC | #18
może w krokach, bo jestem zielony w tym temacie i nie za bardzo wiem co robić
Nieznajomy11 | 2020-11-27 11:54:59 UTC | #19
[quote=”Rozentiger, post:12, topic:16907”]
/bin/bash^M: bad interpreter: No such file or directory
[/quote]
Pomijając sekcje samego crontaba. ^M to symbol wskazujący na to, że prawdopodobnie zapisałeś skrypt z edytora na systemie Microsoft Windows (CRLF). Linux wymaga jednak innych znaków końca linii (LF).
Należy przeprowadzić konwersję pliku. Można tego dokonać np. używając notepadd++ (pasek na dole) lub z narzędzia w terminalu, bezpośrednio na serwerze:
sudo apt install dos2unix
dos2unix start.sh
Axerr | 2020-11-27 15:03:46 UTC | #20
[quote=”Nieznajomy11, post:19, topic:16907”]
sudo apt install dos2unix
dos2unix start.sh
[/quote]
Dobrze dzialającą alternatywą dla komendy dos2unix
jest komenda
sed -i -e 's/\r$//' plik.sh
system | 2020-12-29 15:03:41 UTC | #21
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.