Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 30 odgovora
  • 7.501 pregleda

Najnovija ↓

Re: Pisanje systemd daemona :) 07.03.2019. u 11:53 · pre 93 meseca #21
Ok, napredak, bar sto se ice .net dela. Postoji native podrska za daemons kroz HostedService framework. Ima kompletan lifecycle support i podrzava i cleanup za SIGTERM i ostale trappable SIGs

root@BlackWolf:/home/mmix/projects/Pegasus# /home/mmix/projects/Pegasus/PegasusServer/bin/Debug/netcoreapp3.0/PegasusServer
info: PegasusServer.DaemonHostedService[0]
StartAsync method called.
info: PegasusServer.DaemonHostedService[0]
OnStarted method called.
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /home/mmix/projects/Pegasus/PegasusServer/bin/Debug/netcoreapp3.0/

^Cinfo: PegasusServer.DaemonHostedService[0]
OnStopping method called.
info: Microsoft.Hosting.Lifetime[0]
Application is shutting down...
info: PegasusServer.DaemonHostedService[0]
StopAsync method called.
info: PegasusServer.DaemonHostedService[0]
OnStopped method called.


Sad cu da vidim kako to izgleda kad se zapakuje u systemd
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pisanje systemd daemona :) 07.03.2019. u 12:50 · pre 93 meseca #22
Ok, ovo vec obecava. Servis se dizi i gasi na komandu :) Jedino mi host vraca exit code 143 iz nekog razloga, videcu o cemu se radi:

Code:
root@BlackWolf:/etc/systemd/system# systemctl start pegasus.service 
root@BlackWolf:/etc/systemd/system# systemctl status pegasus.service 
● pegasus.service - Pegasus server
   Loaded: loaded (/etc/systemd/system/pegasus.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-03-07 12:45:12 CET; 3s ago
 Main PID: 31309 (PegasusServer)
    Tasks: 9 (limit: 4915)
   Memory: 7.3M
   CGroup: /system.slice/pegasus.service
           └─31309 /home/mmix/projects/Pegasus/PegasusServer/bin/Debug/netcoreapp3.0/linux-x64/publish/PegasusServer

Mär 07 12:45:12 BlackWolf PegasusServer[31309]: info: PegasusServer.DaemonHostedService[0]
Mär 07 12:45:12 BlackWolf PegasusServer[31309]:       StartAsync method called.
Mär 07 12:45:12 BlackWolf PegasusServer[31309]: info: PegasusServer.DaemonHostedService[0]
Mär 07 12:45:12 BlackWolf PegasusServer[31309]:       OnStarted method called.
Mär 07 12:45:12 BlackWolf PegasusServer[31309]: info: Microsoft.Hosting.Lifetime[0]
Mär 07 12:45:12 BlackWolf PegasusServer[31309]:       Application started. Press Ctrl+C to shut down.
Mär 07 12:45:12 BlackWolf PegasusServer[31309]: info: Microsoft.Hosting.Lifetime[0]
Mär 07 12:45:12 BlackWolf PegasusServer[31309]:       Hosting environment: Production
Mär 07 12:45:12 BlackWolf PegasusServer[31309]: info: Microsoft.Hosting.Lifetime[0]
Mär 07 12:45:12 BlackWolf PegasusServer[31309]:       Content root path: /home/mmix/projects/Pegasus/PegasusServer/bin/Debug/netcoreapp3.0/linux-x64/publish/
root@BlackWolf:/etc/systemd/system# systemctl stop pegasus.service 
root@BlackWolf:/etc/systemd/system# systemctl status pegasus.service 
● pegasus.service - Pegasus server
   Loaded: loaded (/etc/systemd/system/pegasus.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2019-03-07 12:45:45 CET; 2s ago
  Process: 31309 ExecStart=/home/mmix/projects/Pegasus/PegasusServer/bin/Debug/netcoreapp3.0/linux-x64/publish/PegasusServer (code=exited, status=143)
 Main PID: 31309 (code=exited, status=143)

Mär 07 12:45:45 BlackWolf PegasusServer[31309]:       OnStopping method called.
Mär 07 12:45:45 BlackWolf PegasusServer[31309]: info: Microsoft.Hosting.Lifetime[0]
Mär 07 12:45:45 BlackWolf PegasusServer[31309]:       Application is shutting down...
Mär 07 12:45:45 BlackWolf PegasusServer[31309]: info: PegasusServer.DaemonHostedService[0]
Mär 07 12:45:45 BlackWolf PegasusServer[31309]:       StopAsync method called.
Mär 07 12:45:45 BlackWolf PegasusServer[31309]: info: PegasusServer.DaemonHostedService[0]
Mär 07 12:45:45 BlackWolf PegasusServer[31309]:       OnStopped method called.
Mär 07 12:45:45 BlackWolf systemd[1]: pegasus.service: Main process exited, code=exited, status=143/n/a
Mär 07 12:45:45 BlackWolf systemd[1]: pegasus.service: Failed with result 'exit-code'.
Mär 07 12:45:45 BlackWolf systemd[1]: Stopped Pegasus server.
root@BlackWolf:/etc/systemd/system# 
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pisanje systemd daemona :) 07.03.2019. u 13:03 · pre 93 meseca #23
Hmm, kad startujem iz konzole i posaljem mu SIGTERM iz htopa, dobijem isti exit code bez greske u samom daemonu:

Code:

mmix@BlackWolf:~/projects/Pegasus$ PegasusServer/bin/Debug/netcoreapp3.0/linux-x64/publish/PegasusServer 
info: PegasusServer.DaemonHostedService[0]
      StartAsync method called.
info: PegasusServer.DaemonHostedService[0]
      OnStarted method called.
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /home/mmix/projects/Pegasus/PegasusServer/bin/Debug/netcoreapp3.0/linux-x64/publish/
info: PegasusServer.DaemonHostedService[0]
      OnStopping method called.
info: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...
info: PegasusServer.DaemonHostedService[0]
      StopAsync method called.
info: PegasusServer.DaemonHostedService[0]
      OnStopped method called.
mmix@BlackWolf:~/projects/Pegasus$ echo $?
143


Koliko sam shvatio po netu, to je ocekivano ponasanje ako te neko ubije SIGTERM-om: 143 usually means the application caught a SIGTERM signal (128+15), meaning the process was killed. This could be because another process killed it, or perhaps because the operating system killed it for using too much memory or some other resource, etc.. Ocigledno je da je systemd poslao SIGTERM, ali zasto onda ocekuje da dobije exit code 0 da bi bio regularno stopped?
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pisanje systemd daemona :) 07.03.2019. u 13:47 · pre 93 meseca #24
SIGTERM može biti hendlovan, za razliku od SIGKILL.
Možda systemd očekuje da tvoj servis uhvati signal 15 i da se regularno završi, sa exit kodom 0.
Neka se ponašanja podrazumevaju, ali nisu obavezna.
Recimo, da SIGHUP proizvede da se ponovo pročitaju setup fajlovi. Možeš da ignorišeš SIGHUP, ali to se smatra lošom praksom.
Re: Pisanje systemd daemona :) 07.03.2019. u 13:59 · pre 93 meseca #25
Da, nasao sam i resenje koje ne podrazumeva da moram da kopam po host serveru :)

[Service]
SuccessExitStatus=143


Code:
root@BlackWolf:/etc/systemd/system# systemctl stop pegasus.service 
root@BlackWolf:/etc/systemd/system# systemctl status pegasus.service 
● pegasus.service - Pegasus server
   Loaded: loaded (/etc/systemd/system/pegasus.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Mär 07 13:58:10 BlackWolf systemd[1]: Stopping Pegasus server...
Mär 07 13:58:10 BlackWolf PegasusServer[2330]: info: PegasusServer.DaemonHostedService[0]
Mär 07 13:58:10 BlackWolf PegasusServer[2330]:       OnStopping method called.
Mär 07 13:58:10 BlackWolf PegasusServer[2330]: info: Microsoft.Hosting.Lifetime[0]
Mär 07 13:58:10 BlackWolf PegasusServer[2330]:       Application is shutting down...
Mär 07 13:58:10 BlackWolf PegasusServer[2330]: info: PegasusServer.DaemonHostedService[0]
Mär 07 13:58:10 BlackWolf PegasusServer[2330]:       StopAsync method called.
Mär 07 13:58:10 BlackWolf PegasusServer[2330]: info: PegasusServer.DaemonHostedService[0]
Mär 07 13:58:10 BlackWolf PegasusServer[2330]:       OnStopped method called.
Mär 07 13:58:10 BlackWolf systemd[1]: Stopped Pegasus server.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Sviđa mi se1
Re: Pisanje systemd daemona :) 09.03.2019. u 13:00 · pre 93 meseca #26
Ok, uradio sam ga :) Sad samo da napravim .deb :)

Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pisanje systemd daemona :) 09.03.2019. u 14:38 · pre 93 meseca #27
Ok, ko zeli da proba:

Pegasus .deb file


Daemon je self-contained, nema dependencies.

telnet localhost 12345 nakon instalacije. .deb ima remove skriptu ako hocete posle da uklonite.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pisanje systemd daemona :) 09.03.2019. u 15:23 · pre 93 meseca #30
Jedini problem koji nisam resio je sto poruke overwrituju ono sto kucas u terminalu (kad ima vise korisnika). Ni Linux ni Win telnet ne podrzavaju pun ANSI, samo neke stvari koje ne rade manipulaciju bafera. Samim tim boje rade, ali komande kao sto su Esc[L za insert blank linije ne rade.

Ali ok, za proof of concept je dovoljno. Ja sam svejedno ubacio Esc[L u izlaz, tako da ako pronadjete neki pun ANSI telnet klijent, trebalo bi da radi.


Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Pisanje systemd daemona :) 10.03.2019. u 17:33 · pre 93 meseca
izmenjeno 1 put, poslednji put mmix 14.03.2019. u 12:57
  1. mmix14.03.2019. u 12:57zapis iz teksta poruke
#31
Ako nekog interesuje sors:

https://gitlab.com/the-black-wolf/pegasus-server
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme