Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2018-10-26 14:15:00

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

[Raspbian+systemd]Czemu to zdycha?

Witam.

W sumie nie wiem czy to do tego działu pasuje... ale gdzieś to musiałem wsadzić, a w końcu systemd to też software ;)

Mam taki dziwny problem (tzn. dziwny dla mnie, ale może czegoś nie wiem).
Zrobiłem sobie taki prosty serwisik dla systemd. Zrobiłem, uruchomiłem, podziałał i przestał.
Zrobiłem mu restart, podziałał i przestał.
Ogólnie działa to jakieś dwa-trzy dni, w tym czasie bardzo ładnie spełnia swoje zadanie, potem zdycha i systemd mimo ustawienia "Restart = always" nie ma zamiaru go podnieść.

Co robię źle?

RPi 3B+, działa non stop.

plik watchprinter.service:

Kod:

[Unit]
Description = Autoconnect for octoprint

[Service]
ExecStart = /usr/local/bin/watchprinter
Restart = always

[Install]
WantedBy = muti-user.target

plik /usr/local/bin/watchprinter:

Kod:

#!/usr/bin/env python
#coding: utf-8

import requests, json, re,  signal, time

class octonector(object):
    api = None
    def __init__(self):
        if not self.__class__.api:
            import yaml
            conf = yaml.safe_load(open('/home/pi/.octoprint/config.yaml'))
            self.__class__.api = conf['api']['key']
        self._enabled = False

    def enable(self):
        self._enabled = True

    def enabled(self):
        rc = self._enabled
        self._enabled = False
        return rc
        
    def doPostRequest(self,cmd,data):
        path='http://127.0.0.1:5000/api/%s' % cmd
        rc=requests.post(path, headers={
        'Host': 'localhost',
        'Content-Type': 'application/json',
        'X-Api-Key' : self.__class__.api},
        json=data)
        return rc.status_code in (204,200)

watcher=octonector()
        
def ena(*args):
    global watcher
    watcher.enable()
    
signal.signal(signal.SIGUSR1, ena)
            
while True:
    signal.pause()
    if watcher.enabled():
        time.sleep(5);
        try:
            watcher.doPostRequest('connection',{'command':'connect'})
        except:
            pass

plik /etc/udev/rules.d/55-printer.rules

Kod:

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idProduct}=="7523", ATTRS{idVendor}=="1a86", RUN+="/bin/systemctl kill -s USR1 watchprinter"

Tak przy okazji - bardzo wygodne, pod warunkiem że działa :(


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#2  2018-10-26 14:20:17

  urbinek - Użytkownik

urbinek
Użytkownik
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

spróbuj dołożyć do [service] opóźnienie do tego restartu
RestartSec=15
Restart=always


do czego jest ten skrypt :)?


A w wolnym czasie, robię noże :)
[img]http://nginx.urbinek.eu/_photos/signature.png[/img]

Offline

 

#3  2018-10-26 14:51:49

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

Dodałem - zobaczymy, jak znam życie to teraz przez dłuższy czas będzie działać bez konieczności restartu ;)

Skrypt podłącza drukarkę do działającego octoprinta po jej włączeniu do prądu. Fajne jeśli maszynka z octoprintem działa non stop.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#4  2018-10-26 14:59:54

  urbinek - Użytkownik

urbinek
Użytkownik
Skąd: Sosnowiec
Zarejestrowany: 2009-10-01
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

Ewentualnie może skrypt się wysypuje w jakiś dziwny sposób?

Systemd monitoruje czy pid istnieje, jeśli skrypt się wygnie ale tylko troszkę to dla systemd on ciągle działa.


Może wstaw jakieś linijki z logiem czy debugowaniem to zobaczysz co się dzieje


A w wolnym czasie, robię noże :)
[img]http://nginx.urbinek.eu/_photos/signature.png[/img]

Offline

 

#5  2018-10-26 15:13:32

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

No właśnie systemctl status informuje, że proces zdechł :(
Tak w ogóle to ciekawe czemu on w ogóle zdycha, ale to mniejszy problem.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#6  2018-10-27 12:15:48

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

Pewnie jest błędnie skonfigurowana usługa dla systemd. xD

Ten /usr/local/bin/watchprinter to on forkuje sam po tym jak zostanie uruchomiony? Bo jeśli forkuje sam, to typ usługi nie powinien być (domyślnie) simple tylko forking:

Kod:

[Unit]
Description = Autoconnect for octoprint

[Service]
Type= forking
ExecStart = /usr/local/bin/watchprinter
Restart = always

[Install]
WantedBy = muti-user.target

Offline

 

#7  2018-10-27 12:31:59

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

Nic się nie forkuje, kod prosty jak rogalik, zamieściłem przecież w pierwszym poście :(
Zresztą gdyby się forkował to by nie działał kill z udev... a przecież działa!

Ostatnio edytowany przez ethanak (2018-10-27 12:34:20)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#8  2018-10-27 13:08:44

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

No a w logu co pisze? Jest w ogóle informacja, że ta usługa jest startowana ponownie po tym jak się wywali?

Offline

 

#9  2018-10-27 13:23:06

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

W logach nie ma nic (pomijając fakt że nie bardzo wiem w którym logu tego szukać). Tak jakby Systemd w ogóle nie próbował restart.
Co ciekawsze - jeśli z palca ubiję proces wielce ślicznie się restartuje...
OT - jak się wyłącza tego podpowiadacza  w androidzie?


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#10  2018-10-27 13:29:01

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

np. w:

Kod:

# journalctl -u watchprinter

OT - jak się wyłącza tego podpowiadacza  w androidzie?[/quote]
Co się wyłącza? xD


A jak byś dodał:

RuntimeMaxSec=10
Restart=on-failure

To będzie się ładnie resetował co 10s?

Ostatnio edytowany przez morfik (2018-10-27 13:30:26)

Offline

 

#11  2018-10-27 13:44:55

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

To chujstwo co mi zamienia kill na koło, systemd na systemy i ogólnie lepiej wie co ja chcę napisać:)
Resztę sprawdzę w domu.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#12  2018-10-27 13:48:42

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

W ustawieniach klawiatury musisz sobie wyłączyć. Przytrzymaj przecinek i weź sobie kółko zębate -> korekta teksu i tam masz autokorekta itp.

Ostatnio edytowany przez morfik (2018-10-27 13:53:15)

Offline

 

#13  2018-10-27 14:16:13

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [Raspbian+systemd]Czemu to zdycha?

Zawsze też można zapiąć skrypta do daemontoolsa, ten bez żadnej łaski trzyma każdego demona przy życiu.

Ze skryptem startowym daemontoolsa sobie nawet szympans poradzi.

Daemontools w Debianie z Systemd?

Kod:

● daemontools.service - Daemontools service supervision
   Loaded: loaded (/lib/systemd/system/daemontools.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-08 07:13:00 CEST; 2 weeks 5 days ago
 Main PID: 1437 (svscanboot)
    Tasks: 87 (limit: 4915)
   CGroup: /system.slice/daemontools.service
           ├─ 1437 /bin/sh /usr/bin/svscanboot /etc/service/
           ├─ 1443 svscan /etc/service
           ├─ 1451 supervise phpmageadmin
           ├─ 1452 supervise opendkim
           ├─ 1453 supervise dropbear
           ├─ 1454 supervise sshd
           ├─ 1455 supervise cgroup
           ├─ 1456 supervise phpmagento
           ├─ 1457 supervise redis
           ├─ 1458 supervise php71
           ├─ 1459 supervise prosody
           ├─ 1460 supervise mysql
           ├─ 1461 supervise dovecot
           ├─ 1462 supervise postfix
           ├─ 1463 supervise nginx
           ├─ 1464 /usr/sbin/opendkim -f -x /etc/opendkim/opendkim.conf
           ├─ 1465 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf
           ├─ 1466 php-fpm: master process (/etc/php/7.1/fpm/fpm-magento.conf)
           ├─ 1467 /usr/sbin/sshd -D -e -f /etc/ssh/sshd_config
           ├─ 1468 dropbear -F -R -E -s -a -p *:19017
           ├─ 1470 /usr/sbin/dovecot -F
           ├─ 1472 /bin/bash ./run
           ├─ 1473 /usr/lib/postfix/sbin/master
           ├─ 1474 /bin/sh ./run
           ├─ 1475 php-fpm: master process (/etc/php/7.1/fpm/fpm-mageadmin.conf)
           ├─ 1476 php-fpm: master process (/etc/php/7.1/fpm/php-fpm.conf)
           ├─ 1599 /usr/bin/redis-server 127.0.0.1:6379
           ├─ 1708 qmgr -l -t unix -u

Kod:

svstat /etc/service/*
/etc/service/cgroup: up (pid 1474) 1666904 seconds
/etc/service/dovecot: up (pid 1470) 1666904 seconds
/etc/service/dropbear: up (pid 1468) 1666904 seconds
/etc/service/mysql: up (pid 1465) 1666904 seconds
/etc/service/nginx: up (pid 8525) 28173 seconds
/etc/service/opendkim: up (pid 1464) 1666904 seconds
/etc/service/php71: up (pid 1476) 1666904 seconds
/etc/service/phpmageadmin: up (pid 1475) 1666904 seconds
/etc/service/phpmagento: up (pid 1466) 1666904 seconds
/etc/service/postfix: up (pid 1473) 1666904 seconds
/etc/service/prosody: up (pid 11703) 546572 seconds
/etc/service/redis: up (pid 1472) 1666904 seconds
/etc/service/sshd: up (pid 1467) 1666904 seconds

Pozdro

Ostatnio edytowany przez Jacekalex (2018-10-27 14:17:08)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#14  2018-10-27 14:21:37

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

Taaaa... a kiedyś życie było takie proste ;) Jak mi jeszcze powiesz jak ustawić mp3 jako sygnał dla przychodzącej wiadomości to Cię będę po wszystkich odpustach wychwalać... odkąd miałem androjady to wszędzie było, teraz w oreo jakoś znaleźć nie mogę :(

Wracając do meritum - owszem, po dodaniu RuntimeMaxSec = 10 bardzo ładnie restartuje po 10 sekundach.
Co w związku z tym?


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#15  2018-10-27 14:26:04

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

@jacekalex: znam prostsze rozwiązania, nawet szympansa nie muszę angażować - ale chcę to zrobić na systemd, opublikować i zbierać laury jako genialny wynalazca. Poniatno?


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#16  2018-10-27 14:44:03

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: [Raspbian+systemd]Czemu to zdycha?

[quote=ethanak]@jacekalex: znam prostsze rozwiązania, nawet szympansa nie muszę angażować - ale chcę to zrobić na systemd, opublikować i zbierać laury jako genialny wynalazca. Poniatno?[/quote]
Poniatno, poniatno, ino musisz to na Androida, MacOS i Windowsa zrobić (tam nie ma systemd), bo w Linuxie na jednym skrypcie i tak nagrody nobla nie zaliczysz. xD


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#17  2018-10-27 14:55:56

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: [Raspbian+systemd]Czemu to zdycha?

@jacekalex: E tam - widziałeś kiedyś żeby ktoś odpalał octoprinta na czymś innym niż raspbian? :):):) Spoko, nobel murowany!


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.012 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00009 SET NAMES latin2
0.00148 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.140.198.201' WHERE u.id=1
0.00148 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.140.198.201', 1732422823)
0.00040 SELECT * FROM punbb_online WHERE logged<1732422523
0.00074 DELETE FROM punbb_online WHERE ident='18.226.82.90'
0.00089 SELECT topic_id FROM punbb_posts WHERE id=321696
0.00006 SELECT id FROM punbb_posts WHERE topic_id=30691 ORDER BY posted
0.00084 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30691 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00167 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30691 ORDER BY p.id LIMIT 0,25
0.00094 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30691
Total query time: 0.00874 s