Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: HannuTapio - 13.04.18 - klo:04.37

Otsikko: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 13.04.18 - klo:04.37
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 ?

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: raimo - 13.04.18 - klo:07.53
Jos nuo lainausmerkit (") on siellä crontabissa niin ne pois.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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 ?

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: kamara - 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.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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 ???

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: jekku - 13.04.18 - klo:09.42
Mihin ohjaat virheilmoitukset ja/tai muut tulosteet?
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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 ?

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: Tomin - 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.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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 ??

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: matsukan - 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.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: Tomin - 13.04.18 - klo:17.20
Kiitos uudesta sanasta, mitenkä tuo systemd toimisi ?

Tarvitset tehdä unit-tiedoston (https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files) 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.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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  ?

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: Tomin - 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?
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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 &
--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: nm - 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.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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. :)

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: nm - 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
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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ä.

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 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 ?

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: Tomin - 17.04.18 - klo:07.35
Missä portissa se asiakasohjelmasi kuuntelee? Onhan se suurempi kuin 1024?
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 17.04.18 - klo:10.06
TCP Portteja,

Minulla on TCP portit 8080 - 8090 käytössäni, kun pidän palvelinohjelmaani.

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: matsukan - 18.04.18 - klo:11.27
Onko sinulla firewallia käytössä ?

Koodia: [Valitse]
ufw status

asiakasohjelman pitää osata ottaa yhteys tuohon porttiin mikä sinulla on käytössä.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 18.04.18 - klo:14.36
ufw,

Status: inactive

Minulla on iptables joka on säädetty oikein varmaankin, se säätää itsensä noin 10 minuuttia ennen palvelinohjelman käynnistystä.

Kyllä vain asiakasohjelma ottaa satunnaisen portin 8080 - 8090 käyttöönsä, siinä on yhteensä 11 tcp porttia vaihtoehtona, ne ovat auki iptablessa ja ohjautuvat proxyyn ja reverse proxyyn apachessa.

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 19.04.18 - klo:15.18
Palvelinohjelmasta vielä,

Minä muutin apache configista, seuraavaa riviä -

Koodia: [Valitse]
<IfModule mod_proxy.c>
ProxyPass "/_ws_:8080" "ws://127.0.0.1:8080/"
ProxyPassReverse "/_ws_:8080" "ws://127.0.0.1:8080/"
ProxyPass "/_ws_:8081" "ws://127.0.0.1:8081/"
ProxyPassReverse "/_ws_:8081" "ws://127.0.0.1:8081/"
ProxyPass "/_ws_:8082" "ws://127.0.0.1:8082/"
ProxyPassReverse "/_ws_:8082" "ws://127.0.0.1:8082/"
ProxyPass "/_ws_:8083" "ws://127.0.0.1:8083/"
ProxyPassReverse "/_ws_:8083" "ws://127.0.0.1:8083/"

Tuo eka rivi on ennen kuin säädän proxyt kohdalleensa, minä poistin tuon ekan rivin, <IfModule mod_proxy.c> ja nyt on vain proxyjen ja reverseproxyjen asetukset.

Lisänä asensin uusia apache moduuleita.

Koodia: [Valitse]
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

Aamulla tuo toinen käynnistys yritys käynnisti palvelinohjelman, minä nyt yöllä testaan resetin jälkeen taas uudestaan.

Lisänä minä muutin vielä palvelinohjelman kulkuja hieman.

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 20.04.18 - klo:10.58
:),

Joo ei käynnistynä oikein, täytyy yhä käsin käydä palvelimessa ja käynnistää.

:(

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: matsukan - 20.04.18 - klo:11.04
Koeta laittaa timeout crontab komennon eteen.

Tyyliin:

Lainaus
@reboot sleep 300 && /opt/whtever.sh

Tuossa oleva luku on aika sekunneissa.
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 20.04.18 - klo:16.13
Palvelin reset,

No joo, ei tämä taida toimia minulla, en tiedä mistä syystä, mutta, kenteis paree näin.

Minä siirrän tämän palvelin resetin 5:30 - 6:00 väliseen aikaan, herään itse siinä 5:30 ja tarkistan palvelimet ja seuraan päivitykset ja uudelleen käynnistykset ja sitten itse käynnistän vaikka 5:58 tuon palvelinohjelmani, apache käynnistyy sitten taas 5:59.

Ei oo iso homma herätä ja tarkistaa palvelinta itse, kun jos minä nämä pelaajat tänne palvelimeeni lasken kanssa, niin, on hyvä valvoa hieman enemmän mitä tähän asti.

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: matsukan - 20.04.18 - klo:22.49

miksi sammutat ja käynnistät palvelimet päivittäin ?
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 21.04.18 - klo:16.57
Ubuntu server,

Minulla on siellä ssh kautta, kun kirjaudun, niin, yleensä teksti kerran päivässä, server needs to be restarted.

Minä päivitän nyt sitten ubuntu serverit, aina siinä 5:32, ja resetoin 5:45, ja sitten apache käyntiin 5:59.

Ubuntu server antaa minulle lähes päivittäin ilmoitukset resetin tarpeesta, jotenka minä teen tämän resetin nykyään ihan joka aamu.

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: _Pete_ - 23.04.18 - klo:10.42
Jos kyse on tästä
Koodia: [Valitse]
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.

*** System restart required ***

Eli tuosta *** System restart required *** niin se tarkoittaa että päivityksen yhteydessä on asennettu uusi versio Linux kernelistä ja jotta se tulisi
myös käyttöön pitää järjestelmä käynnistää uudestaan.

Se ei siis tarkoita että olisi pakko käynnistää palvelin joka aamu.


Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: nm - 23.04.18 - klo:10.48
Ubuntu server antaa minulle lähes päivittäin ilmoitukset resetin tarpeesta, jotenka minä teen tämän resetin nykyään ihan joka aamu.

Kerran viikossa tai kuukaudessa riittää hyvin, ellei kernelissä ole ilmennyt jokin erittäin kriittinen tietoturva-aukko, josta tiedotetaan päivälehdissäkin.  :)


Haavoittuvuuksia ja niiden paikkauksia voi seurata vaikkapa tällä sivulla: https://usn.ubuntu.com/
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 23.04.18 - klo:14.07
Ok,

Kiitos kun päivititte omaa infoani, en ihan tarkkaan muistana kuinka usein tuo kehoitus resetoida kone tuleekaan, mutta, kyllä se siellä aina välistä on.

Minä kuitenkin jatkan tällä samalla tavalla, minä resetoin kerran päivässä, ja pidän palvelimet pois käytöstä 5:30 - 6:00 ajan, pystyn kaikki kuva ja video ja ohjelma päivitykset tekemään tällöin, ei se reset siinä samassa niin kova työ ole.

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: _Pete_ - 24.04.18 - klo:10.13
Ok,

Kiitos kun päivititte omaa infoani, en ihan tarkkaan muistana kuinka usein tuo kehoitus resetoida kone tuleekaan, mutta, kyllä se siellä aina välistä on.

Minä kuitenkin jatkan tällä samalla tavalla, minä resetoin kerran päivässä, ja pidän palvelimet pois käytöstä 5:30 - 6:00 ajan, pystyn kaikki kuva ja video ja ohjelma päivitykset tekemään tällöin, ei se reset siinä samassa niin kova työ ole.

:)

--

Kyllä se turhan työn tekeminen aina on mukavaa ja kannatavaa :)

Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: matsukan - 24.04.18 - klo:14.33
Ok,

Kiitos kun päivititte omaa infoani, en ihan tarkkaan muistana kuinka usein tuo kehoitus resetoida kone tuleekaan, mutta, kyllä se siellä aina välistä on.

Minä kuitenkin jatkan tällä samalla tavalla, minä resetoin kerran päivässä, ja pidän palvelimet pois käytöstä 5:30 - 6:00 ajan, pystyn kaikki kuva ja video ja ohjelma päivitykset tekemään tällöin, ei se reset siinä samassa niin kova työ ole.

:)

--

Kyllä se turhan työn tekeminen aina on mukavaa ja kannatavaa :)

 ;D
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: Jtkone - 27.04.18 - klo:19.40
Eikös nämä pelit enää olekkaan suomi nettiin?
Tarkoitan kun palvelimet ovat alhaalla aamulla.
Itse menen töihin seitsemään ja olisi kiva pelata laadukkaita suomi pelejä ennen sitä.
Eli jo ehdotettu aamu klo 3-4 olisi parempi servereiden alasajoon?
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: HannuTapio - 28.04.18 - klo:18.56
Palvelin reset,

Minä joudun itse olemaan valveilla, kun tuo reset tapahtuu, jotta, tiedän sitten, että, kaikki on käynnissä ja palvelimet toimivat kuten kuuluukin, pyrin varmaankin, että, pelaaminen tapahtuu iltapäivällä ja illasta. :)

Minä koetan ratkoa tämän reset ongelman jotenkin, :).

Muistetaan silti että en ole palvelu tällä hetkellä, olen vain omaa elämää ja omaa iloa, oleva harraste sivusto, näytän ihmisille mitä lautapelejä olen suunnitellut vuodesta jotain noin 1984 - 95.

:)

--
Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: _Pete_ - 30.04.18 - klo:08.52
Minä koetan ratkoa tämän reset ongelman jotenkin, :).

Sehän on täällä jo ystävällisten kirjottajien toimesta tehty: koko resetointi touhu on turhaa ja sen voi jättää välistä poislukien oikeasti tietoturvakriittiset päivitykset.

Otsikko: Vs: Palvelin - Java ohjelman käynnistäminen crontabista ?
Kirjoitti: matsukan - 30.04.18 - klo:09.40

Niin palvelinten tarkoitus on olla päällä 24/7 lyhyitä tietoturvapäivityksiä lukuunottamatta joita tehdään esim kerran kuukaudessa tai harvemmin. Turha käynnistäminen kuluttaa serveiden komponentteja turhaan.