Kirjoittaja Aihe: Palvelin - Java ohjelman käynnistäminen crontabista ?  (Luettu 910 kertaa)

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Hei,

Minulla on palvelimessa Java TCP ohjelma, serversocket.

Tämä on minun JS pelien siirtojen tarkkailuun ja suorittamiseen.

Minun ongelmana on, että, tämä palvelinohjelma mitä yritän käynnistää crontabista, niin, sitten ilmeisesti käynnistyy oikein, mutta, JS ohjelmat eivät saa siihen yhteyttä ?

Minä käynnistän palvelin ohjelmani seuraavasti crontabissa - "45 2 * * * /usr/bin/java -Xmx5120m -jar /home/POv200/PalvelinOhjelma.jar"

Minä joudun aina käymään palvelimessa ja käynnistämään käsin uudestaan tämän palvelinohjelmani.

Mitä teen väärin taikka olen unohtana ?

--

raimo

  • Käyttäjä
  • Viestejä: 3117
    • Profiili
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #1 : 13.04.18 - klo:07.53 »
Jos nuo lainausmerkit (") on siellä crontabissa niin ne pois.
So long and thanks for all the fish!

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #2 : 13.04.18 - klo:08.24 »
:),

Ei oo,

:)

Täytyykö apache olla käynnissä kun tuo serversocket menee acceptia odottamaan, vai tuleeko apache käynnistää vasta sitten kun tuo serversocket on mennyt accept tilaan ?

--
« Viimeksi muokattu: 13.04.18 - klo:08.27 kirjoittanut HannuTapio »

kamara

  • Käyttäjä
  • Viestejä: 1776
    • Profiili
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #3 : 13.04.18 - klo:08.30 »
Onko kyseinen /etc/crontab-tiedostossa ?

Jos on, niin siihen pitää määritellä, millä käyttäjällä kyseinen ajetaan.

Jos taas kyseiset asetukset on asetettu crontab -e:n avulla, niin minusta se näyttää oikealta.

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #4 : 13.04.18 - klo:09.19 »
crontab,

Joo, minulla on tuo crontab -e käsky jolla editoin cronia.

Kiitos vastauksesta, myös netin neuvojen mukaan se on oikein, olen googlannut jo muutamia päiviä.

Mutta, minulla ei tuo palvelinohjelma ole koskaan JS käytettävissä kun 2.45 jälkeen käyn katsomassa.

Minä yritän jotakin viritystä, jolla käynnistää palvelinohjelmani.

Tämä on kiusallinen ongelma ???

--
« Viimeksi muokattu: 13.04.18 - klo:09.21 kirjoittanut HannuTapio »

jekku

  • Käyttäjä
  • Viestejä: 1659
    • Profiili
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #5 : 13.04.18 - klo:09.42 »
Mihin ohjaat virheilmoitukset ja/tai muut tulosteet?

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #6 : 13.04.18 - klo:10.34 »
Virhe ilmoitukset,

Minulla ei ole ihan kaikkia ubuntun ominaisuuksia tiedossa, olen vain lautapelaaja, en koodari.

Osaatko kertoa kuinka tulisi laittaa tuo virheilmoituksen ohjaus ?

--

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 10195
    • Profiili
    • Tomin kotisivut
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #7 : 13.04.18 - klo:10.36 »
Mitenköhän hyvin crontabin käyttö sopii pitkään ajettaville komennoille. Vai forkkaako tuo ja jää pyörimäön taustalle? Itse laittaisin tuollaisen käynnistymään systemd:n asetustiedostolla, jolloin sitä voi ohjata vähän monipuolisemminkin.

Jos koneella on MTA niin cronilla ajetujen komentojen tulosteet menevät käyttäjän sähköpostilaatikkoon.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #8 : 13.04.18 - klo:12.00 »
systemd,

Kiitos uudesta sanasta, mitenkä tuo systemd toimisi ?

Onko se ihan yleistä vaiko harvinaisempaa ubuntu server käyttöä ?

En ole itse tuohon koskaan tutustuna ??

--

matsukan

  • Käyttäjä
  • Viestejä: 1770
    • Profiili
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #9 : 13.04.18 - klo:13.06 »

Just.  :o

Itse lähtisin kokeilemaan tehdä bash scritptiä joka käynnistää tuon socket server ohjelman.  Ja kaikki ongelmat vaikka putkella /tmp/whatever.log-tiedostoon.
Pohjois-pohjanmaa
Unohda mokkula : hanki WiFi reititin

-- päivitin profiilin nimeä --

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 10195
    • Profiili
    • Tomin kotisivut
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #10 : 13.04.18 - klo:17.20 »
Kiitos uudesta sanasta, mitenkä tuo systemd toimisi ?

Tarvitset tehdä unit-tiedoston joka käynnistää tuon palvelusi taustalle. Sen sisältö olisi jotain tällaista:
Koodia: [Valitse]
[Unit]
Description=PalvelinOhjelma
After=network.target

[Service]
ExecStart=/usr/bin/java -Xmx5120m -jar /home/POv200/PalvelinOhjelma.jar
Type=simple
User=käyttäjänimi_jona_ohjelma_suoritetaan

[Install]
WantedBy=multi-user.target

Tuonne Service-osaan voi halutessaan määritellä myös, että palvelu käynnistetään uudestaan, jos se kaatuu. Jotenkin tähän tapaan (laitetaan siis vaikkapa tuon User-rivin alle):
Koodia: [Valitse]
Restart=on-failure
RestartSec=30s

Unit-tiedosto pitää laittaa /etc/systemd/system/-hakemistoon eli esimerkiksi /etc/systemd/system/PalvelinOhjelma.service-nimelle. Sitten voit käynnistää sen:
Koodia: [Valitse]
sudo systemctl start PalvelinOhjelmaKorvaamalla start sanalla stop voit pysäyttää ja automaattisesti käynnistettäväksi sen saa sanalla enable, jolloin se käynnistyy käynnistyksen yhteydessä. Käyttämällä sanaa status näet ohjelman kulloisenkin tilan (eli käynnissä, pysäytetty tms.).

Lisäksi tulosteet löytyvät journalista eli:
Koodia: [Valitse]
sudo journalctl -b --unit=PalvelinOhjelma
Onko se ihan yleistä vaiko harvinaisempaa ubuntu server käyttöä ?

Sinänsä ihan normaalia, jos paketoi palveluja tai kehitää omia.
« Viimeksi muokattu: 13.04.18 - klo:17.23 kirjoittanut Tomin »
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #11 : 15.04.18 - klo:12.05 »
Crontab vai apache,

Minä hieman vielä kysyn tuosta crontabista ja apachesta, minulla on nyt .sh tiedosto, josta crontab käynnistää palvelinohjelman.

Tämä palvelinohjelma on top ja htop ohjelmien mukaan käynnissä palvelin resetin jälkeen, kun menen katsomaan palvelintani ja ohjelmia mitä se ylläpitää.

Eli, tuo palvelinohjelma käynnistyy oikein 2.45 kuten on määrätty, mutta, JS ohjelmat eivät vain saa siihen yhteyttä, ennen kuin uudelleen käynnistän käsin tämän palvelinohjelmani.

Voiko kyseessä olla sittenkin apache ongelma crontabin sijaan  ?

:)

--

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 10195
    • Profiili
    • Tomin kotisivut
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #12 : 15.04.18 - klo:14.10 »
Voihan se tietenkin olla. Teetkö jotain eri tavalla kun käynnistät sen itse? Eli suoritatko jotain muuta kuin crontabista ajettuna? Onko eroa siinä millä käyttäjällä ajat sen ohjelmasi?
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #13 : 15.04.18 - klo:14.48 »
Palvelinohjelma,

Minulla on root tunnus, kun käynnistä ohjelman itse, ja kun minä käynnistän skriptistä crontabin kautta, niin, siinä on sudo edessä :)

Koodia: [Valitse]
sudo /usr/bin/java -Xmx5120M -jar /home/POv200/PalvelinOhjelma.jar &
--

nm

  • Käyttäjä
  • Viestejä: 11705
    • Profiili
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #14 : 15.04.18 - klo:15.00 »
Minulla on root tunnus, kun käynnistä ohjelman itse, ja kun minä käynnistän skriptistä crontabin kautta, niin, siinä on sudo edessä :)

Koodia: [Valitse]
sudo /usr/bin/java -Xmx5120M -jar /home/POv200/PalvelinOhjelma.jar &

sudo vaatii salasanan, jota se ei saa mistään käyttäjäkohtaisella cronilla ajettuna.

Laita komento rootin crontabiin tai järjestelmänlaajuiseen crontabiin. En tosin hahmota syytä ajaa ohjelmaa ajastettuna sen sijaan, että tekisit siitä järjestelmäpalvelun, kuten Tomi ehdotti.
« Viimeksi muokattu: 15.04.18 - klo:15.02 kirjoittanut nm »

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #15 : 15.04.18 - klo:16.41 »
:),

Hei, tuo komento on root crontabissa.

Minä vielä katson jos jotakin keksin, minulla oli muutamia vuosia sitten sama ongelma, mutta, en muista mitenkä se ratkesi.

Jotenkin se alkoi viime kerrallakin toimimaan, minä vielä yritän jotakin. :)

:)

--

nm

  • Käyttäjä
  • Viestejä: 11705
    • Profiili
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #16 : 15.04.18 - klo:17.07 »
Hei, tuo komento on root crontabissa.

OK. Ota turha sudo pois komennosta. Käynnistäminen taustaprosessina (&-merkki komennon perässä) on myös hieman epäilyttävää cron-töiden tapauksessa, mutta ehkä se kuitenkin toimii jollain tavalla. Aloitusviestin esimerkissä sinulla ei vielä ollut kumpaakaan.

Sammuuko palvelusi itsestään ennen kuin cron käynnistää sen seuraavan kerran uudelleen?

Kannattanee ohjata ohjelman stderr ja stdout -listaukset johonkin lokitiedostoon, niin näet mahdolliset ajonaikaiset virheet:

Koodia: [Valitse]
45 2 * * * /usr/bin/java -Xmx5120m -jar /home/POv200/PalvelinOhjelma.jar >> /home/POv200/po.log 2>&1
« Viimeksi muokattu: 15.04.18 - klo:17.11 kirjoittanut nm »

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #17 : 15.04.18 - klo:21.21 »
Palvelinohjelma,

Kiitos, tuo virheen ohjaus olikin hieno juttu, minä laitan sen sinne crontabbiin heti miten.

Seuraava palvelin reset on sitten taas 2.30 - 2.45 välisenä aikana, tuo palvelinohjelma käynnistää itsensä 2.45 aina, minä mahdollisesti siirrän tuon resetin ja kaikki käynnistykset, tuonne aamun tunneille, kun on itsekkin sitten jo hereillä, niin, ei tarvi miettiä mitä kone öisin tekee, tuo noin kello kahden aikaan suoritettava nykyinen palvelin reset ja käynnistys ei ole ihan loppuun asti ajateltu, varmaankin mukavampi, siinä 5.30 - 5.45 välisenä aikana tehdä tuo reset.

Minä myös mietin että olisin öisin sammutettuna, kaikki apachet ja palvelinohjelmat pois päältä jotain 1:30 - 5:30.

Sitten aamuisin aina voisi herätessä tarkistaa tuon palvelin ryppään ( 3 palvelinta ) mitä minä nyt ylläpidän.

Mutta, joo, minä koetan tuota virheen ohjausta, kiitosta siintä.

:)

--

HannuTapio

  • Käyttäjä
  • Viestejä: 886
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Kotimaisia netti lautapelejä suomi nettiin.
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #18 : 17.04.18 - klo:06.59 »
Proxy,

Joo, kyllä tuo palvelinohjelma käynnistyy siellä aamulla, ja log fileeseen tuleekin jotakin kirjattua, ongelma taitaa olla reverse proxy apachessa.

Tuo palvelinohjelma käynnistyy oikein ja sitten myös vastaan ottaa konnektin kun yritän, mutta, se ei palauta mitään reverse proxyn kautta ?

Kun käynnistän palvelinohjelma roottina ja käsin uudestaan, niin, sitten se toimii täysin, ihan apachen proxyja myöten.

Mitenkähän tämän reverse proxyn saisi toimimaan, resetin jälkeiseen crontab käynnistykseen ?

--

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 10195
    • Profiili
    • Tomin kotisivut
Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
« Vastaus #19 : 17.04.18 - klo:07.35 »
Missä portissa se asiakasohjelmasi kuuntelee? Onhan se suurempi kuin 1024?
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.