Strona 1 z 1
Skrypt nie jest wykonywany przez crontab
: 15 lip 2013, 00:50
autor: Tritek
Witajcie, jestem nowy

chyba piszę w dobrym dziale, więc przejdę do rzeczy. Posiadam skrypt, który wysyła tekst w screenie, a potem uruchamia kolejny skrypt .sh. Problem w tym, że wszystko na początku działa, ale ostatni skrypt /home/e###/###$/start.sh - nie działa. Crontab wykonuje pierwszą część, a tej drugiej(/home/e###/###$/start.sh) nie.
Kod: Zaznacz cały
#!/bin/sh
screen -x minecraft -X stuff "say Restart serwera za 1 minute!(Serwer bedzie dostepny w czasie do 3min)"
screen -x minecraft -X eval "stuff \015"
sleep 30
screen -x minecraft -X stuff "say Restart serwera za 30 sekund!"
screen -x minecraft -X eval "stuff \015"
sleep 5
screen -x minecraft -X stuff "save-all"
screen -x minecraft -X eval "stuff \015"
sleep 10
screen -x minecraft -X stuff "say Restart serwera za 15 sekund!(Serwer bedzie dostepny w czasie do 3min)"
screen -x minecraft -X eval "stuff \015"
sleep 11
screen -x minecraft -X stuff "say Restart serwera za 5 sekund!"
screen -x minecraft -X eval "stuff \015"
sleep 5
screen -x minecraft -X stuff "kickall Restart serwera!"
screen -x minecraft -X eval "stuff \015"
sleep 1
screen -x minecraft -X stuff "stop"
screen -x minecraft -X eval "stuff \015"
sleep 90
cd /home/e###/###$
/home/e###/###$/start.sh
start.sh
Kod: Zaznacz cały
#!/bin/sh
screen -S minecraft -t world -m ./bukkit-start.sh
bukkit-start.sh
Kod: Zaznacz cały
#!/bin/sh
java -Xincgc -Xms2048M -Xmx10240M -jar Libigot.jar nogui
Re: Problem z skryptem w crontab
: 15 lip 2013, 09:05
autor: alojzikftp
Kod: Zaznacz cały
cd /home/e###/###$
/home/e###/###$/start.sh
to cd jest niepokojące, raczej powinieneś używać ścieżek bezwzględnych - samo /home/e#/#.start.sh powinno wystarczyć
Problem pewnie masz z bukkit.sh - ja do javy zawsze używam chyba
/usr/bin/java zamiast java i nie wiem czy do screena też nie trzeba tak.
Pokaż może błędy to poradzimy z pewnością.
Pozdrawiam
Re: Problem z skryptem w crontab
: 16 lip 2013, 21:13
autor: Tritek
Nie widzę, żadnych błędów. Przy ręcznym wykonywaniu wszystko działa, ale crontab nie może wykonać. W syslog nie ma błędów.
Re: Skrypt nie jest wykonywany przez crontab
: 22 lip 2013, 13:55
autor: Ubek308
Sprobuj:
/home/e###/###$/start.sh >/tmp/Output 2>&1
Plik Output moze ci wyjasni co sie stalo.
A co mowi /var/log/cron|messages|secure ?
Musi byc wzmianka ze ten cron byl odpalony.
Druga wersja:
Odpal plik w ten sposob:
. /home/e###/###$/start.sh >/tmp/Output 2>&1
Re: Skrypt nie jest wykonywany przez crontab
: 04 paź 2013, 18:50
autor: Tritek
Cześć, zaprzestałem zabawy z tym, ale teraz ponownie tego potrzebuję. Wynik w Output to: Must be connected to a terminal.
Re: Skrypt nie jest wykonywany przez crontab
: 07 paź 2013, 09:38
autor: Ubek308
Czego nie rozumiesz z tekstu Output ?
Java chce czy musi cos wyswietlac a jak to zrobi w cronie ...
Re: Skrypt nie jest wykonywany przez crontab
: 07 paź 2013, 15:30
autor: Tritek
Wiem, że muszę to wykonać z terminala. Można to jakoś ominąć? próbowałem z opcją -d było to samo.
Re: Skrypt nie jest wykonywany przez crontab
: 08 paź 2013, 09:11
autor: Ubek308
Jesli program jest napisany tak ze od razu wymaga terminala to raczej nie choc moze ktos zna sposob.
Jak umiesz programowac - zobacz co robi i napisz cos podobnego co nie chce terminala.
Czasem wystarczy tylko wyciac odpowiednia sekcje. Diabel siedzi w detalach.
Re: Skrypt nie jest wykonywany przez crontab
: 08 paź 2013, 09:36
autor: ethanak
Jeśli coś wymaga terminala to najprawdopodobniej chce nie tylko pisać, ale i jakichś odpowiedzi się spodziewa.
Teoretycznie można expecta użyć, albo - jeśli faktycznie proces chce terminala tylko dlatego że ma taką zachciankę i jak dostanie ptysia to się ucieszy - empty (w ubuntu pakiet empty-expect).
A jeszcze pytanko:
z opcją -d czy -d -m (bo to duża różnica)?
Re: Skrypt nie jest wykonywany przez crontab
: 08 paź 2013, 21:14
autor: Tritek
Kod: Zaznacz cały
#!/bin/sh
screen -S test -t world -m -d ./bukkit-start.sh
Re: Skrypt nie jest wykonywany przez crontab
: 09 paź 2013, 08:47
autor: ethanak
O ile mnie pamięć nie myli kolejność jest ważna: -d -m
Re: Skrypt nie jest wykonywany przez crontab
: 14 paź 2013, 19:43
autor: Tritek
Witajcie męczyłem się sam z nim teraz. Ostatecznie wykonywany skrypt wygląda tak:
Kod: Zaznacz cały
#!/bin/sh
screen -S minecraft -X stuff "say Restart serwera za 1 minute."
screen -S minecraft -X eval "stuff \015"
sleep 30
screen -S minecraft -X stuff "say Restart serwera za 30 sekund."
screen -S minecraft -X eval "stuff \015"
sleep 20
screen -S minecraft -X stuff "say Restart serwera za 10 sekund."
screen -S minecraft -X eval "stuff \015"
sleep 5
screen -S minecraft -X stuff "save-all"
screen -S minecraft -X eval "stuff \015"
sleep 5
screen -S minecraft -X stuff "restart"
screen -S minecraft -X eval "stuff \015"
Skrypt jest wykonywany tylko wtedy gdy(nie wiem jak to nazwać) "aktywuję" screen'a. Uruchamiam aplikację przez start.sh z opcjami -d -m startuje jest ok. Włączam skrypt ręcznie i stoi w miejscu nic się nie dzieje, ale po wpisaniu w konsoli screen -x minecraft i wyjściu przez ctrl+a+d. Skrypt uruchamia się normalnie. Na moje rozumowanie ten screen trzeba jakoś "aktywować"
Komenda restart uruchamia z poziomu aplikacji skrypt:
Kod: Zaznacz cały
#!/bin/sh
screen -S minecraft -t world -d -m ./bukkit-start.sh
-- 16 paź 2013, o 17:01 --
Ma ktoś jakiś pomysł?