Skrypt nie jest wykonywany przez crontab

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Tritek
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 lip 2013, 00:44
Wersja Ubuntu: 12.10
Środowisko graficzne: Brak
Architektura: x86_64

Skrypt nie jest wykonywany przez crontab

Post autor: Tritek »

Witajcie, jestem nowy :D 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
Ostatnio zmieniony 16 lip 2013, 21:15 przez Tritek, łącznie zmieniany 1 raz.
alojzikftp
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 09 mar 2011, 20:17
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Brak
Architektura: x86

Re: Problem z skryptem w crontab

Post 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
Tritek
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 lip 2013, 00:44
Wersja Ubuntu: 12.10
Środowisko graficzne: Brak
Architektura: x86_64

Re: Problem z skryptem w crontab

Post 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.
Ubek308
Zakręcona Traszka
Zakręcona Traszka
Posty: 574
Rejestracja: 25 maja 2011, 10:17
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Skrypt nie jest wykonywany przez crontab

Post 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
Tritek
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 lip 2013, 00:44
Wersja Ubuntu: 12.10
Środowisko graficzne: Brak
Architektura: x86_64

Re: Skrypt nie jest wykonywany przez crontab

Post autor: Tritek »

Cześć, zaprzestałem zabawy z tym, ale teraz ponownie tego potrzebuję. Wynik w Output to: Must be connected to a terminal.
Ubek308
Zakręcona Traszka
Zakręcona Traszka
Posty: 574
Rejestracja: 25 maja 2011, 10:17
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Skrypt nie jest wykonywany przez crontab

Post autor: Ubek308 »

Czego nie rozumiesz z tekstu Output ?
Java chce czy musi cos wyswietlac a jak to zrobi w cronie ...
Tritek
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 lip 2013, 00:44
Wersja Ubuntu: 12.10
Środowisko graficzne: Brak
Architektura: x86_64

Re: Skrypt nie jest wykonywany przez crontab

Post autor: Tritek »

Wiem, że muszę to wykonać z terminala. Można to jakoś ominąć? próbowałem z opcją -d było to samo.
Ubek308
Zakręcona Traszka
Zakręcona Traszka
Posty: 574
Rejestracja: 25 maja 2011, 10:17
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Skrypt nie jest wykonywany przez crontab

Post 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.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Skrypt nie jest wykonywany przez crontab

Post 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)?
Tritek
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 lip 2013, 00:44
Wersja Ubuntu: 12.10
Środowisko graficzne: Brak
Architektura: x86_64

Re: Skrypt nie jest wykonywany przez crontab

Post autor: Tritek »

Kod: Zaznacz cały

#!/bin/sh
screen -S test -t world  -m -d ./bukkit-start.sh
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Skrypt nie jest wykonywany przez crontab

Post autor: ethanak »

O ile mnie pamięć nie myli kolejność jest ważna: -d -m
Tritek
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 15 lip 2013, 00:44
Wersja Ubuntu: 12.10
Środowisko graficzne: Brak
Architektura: x86_64

Re: Skrypt nie jest wykonywany przez crontab

Post 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ć" :D

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ł?
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości