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.
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
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
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.
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)?
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: