Προς το περιεχόμενο

Script για relaunch προγράμματος


chek2fire

Προτεινόμενες αναρτήσεις

ναι αν το κλέισω και να ξαναξεκινήσω δουλεύει κανονικά. Νομίζω εκεί είναι το πρόβλημα ότι ανοίγε κάποιο service σαν bitcoind πριν από το script γιαυτό δεν λειτουργεί. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 88
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Στην vm τρέχει κανονικά μετά την εκκίνηση και να απαντά στο bitcoin-cli χωρίς να κάνω κάτι περισσότερο, αλλά νομίζω ότι βρήκα τον ένοχο... Το δικό μου /etc/bitcoind.conf είναι το παρακάτω:

description "bitcoind"

start on filesystem
stop on runlevel [!2345]
oom score -500
expect fork
respawn
respawn limit 10 60 # 10 times in 60 seconds

script
user=mobinmob
home=/home/$user
cmd=/usr/bin/bitcoind
pidfile=$home/bitcoind.pid
# Don't change anything below here unless you know what you're doing
[[ -e $pidfile && ! -d "/proc/$(cat $pidfile)" ]] && rm $pidfile
[[ -e $pidfile && "$(cat /proc/$(cat $pidfile)/cmdline)" != $cmd* ]] && rm $pidfile
exec start-stop-daemon --start -c $user --chdir $home --pidfile $pidfile --startas $cmd -b -m
end script

Η διαφορά από αυτό που έδωσα στην αρχή είναι στην γραμμή 18 -δεν ξέρω πως τα κατάφερα να το δώσω λάθος :-( . Στο τέλος θα δεις 2 switches, τα -b και -m. To -b λέει στο πρόγραμμα start-stop-daemon να στείλει το bitcoind στο background (γι' αυτό και δεν πάει μόνο του με το switch -daemon), ενώ το -m  δίνει την δυνατότητα στο ίδιο πρόγραμμα να δημιουργήσει το pidfile.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ειλικρινά δεν βγάζω άκρη :( δεν μπορώ να καταλάβω τι συμβαίνει. και τώρα στο reboot το bitcoind αρνείτε να λειτουργήσει σωστά ενώ το παράδοξο είναι ότι αν δώσω 

 

sudo service bitcoind start

 

μου λέει ότι τρέχει ήδη ενώ αν του δώσω πρώτα stop και μετά start τρέχει σωστά.

Τι συμβαίνει γμτ. Κοίταξα και με ps -A και service --status-all και bitcoind δεν βλέπω να υπάρχει πουθενά στις λίστες που βγαίνουν για τα service που τρέχουν. Πως λέει όμως το sudo service bitcoind start ότι start: Job is already running: bitcoind?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομιζω αυτο ειναι μια παρενεργεια του τροπου που δουλευει το upstart- μάλλον ξεκινα το service και τρεχει το init script, αλλα δεν τρεχει το ιδιο το προγραμμα. Btw, δεν λέω ότι το initscript είναι άψογο (υπάρχουν τουλάχιστον 2 σημεία που δεν μου αρέσουν, αλλά... δουλεύει).

Δοκιμασε να κανεις το service restart απο το rc.local.

Φτιάξε το αρχείο /etc/rc.local με περιεχόμενα:

#!/bin/sh
/usr/bin/service bitcoind restart

Έπειτα κάντο εκτελέσιμο:

sudo chmod +x /etc/rc.local

και τέλος κάνε επανεκκίνηση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο τέλος του rc.local αρχείου αφήνω το exit 0? Εσένα γιατί δουλεύει και ξεκινάει κανονικά το script ενώ εμένα όχι αυτό με παραξενεύει. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όχι, δεν χρειάζεται το exit 0.

Αυτό μου φαίνεται παράξενο κι εμένα... Το script ειναι ελαφρως περιεργο. Το παλικαρι που το εδωσε στο stackexchange λεει οτι πρεπει να αλλαξεις και το τι δινεις στο pidfile (αλλα στην vm μου δουλευει). Όταν δίνεις restart στο rc.local πρακτικα πρεπει να εχεις το ιδιο αποτελεσμα με το να δινεις την εντολή  μετα την εκκινηση, καθως το rc.local εκτελειται στο τελος της διαδικασιας.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

και φυσικά ούτε αυτό δούλεψε :( Αστο μην σε ταλαιπωρώ άλλο και σένα γιατί δεν φαίνεται να βγαίνει άκρη. Θα γράψω και στο bitcointalk στου developer μήπως έχουν και εκεί καμία ιδέα για ποιο λόγο δεν ξεκινά καν το bitcoind με κανένα script γιατί δεν είναι μόνο στο init αλλά το έχω και στο cron πουθενά δεν μπορεί να δουλέψει.

Κάτι τελευταίο στο bitcoin.conf αρχείο που έχει στο home σου και στον φάκελο .bitcoin τις έχεις βάλει μέσα? 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο bitcoin.conf έχω μόνο rpcuser και rpcpassword (μου τα ζήτησε όταν δοκίμασα να τρέξω το bitcoind).

Μήπως υπάρχει πρόβλημα γιατί υπάρχει και στο crontab; Στην vm δεν έχω κάνει καμμία άλλη ρύθμιση.

Προσωπικά θα δοκίμαζα να το εκκινήσω με το runit, αλλά αυτό είναι άλλη ιστορία καθώς χρειάζεται πρόσθετες ρυθμίσεις στο ubuntu.

Σε συζήτηση στο forum μιλούσαν για το monit, το όποιο (αν δουλέψει :) ) είναι επίσης καλή λύση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

οκ ευχαριστώ για την βοήθεια τουλάχιστον μπορεί να μην έλυσα το πρόβλημα αλλά έμαθα κάποια πράγματα. 

Εχεις καμια bitcoin διεύθυνση να σου στείλω ένα tip? :D

θα γράψω και στο bitcointalk forum και θα ρωτήσω εκεί τους developer και αν δεν βγάλω άκρη και εκεί μάλλον θα του κάνω νέα εγκατάσταση έτσι και αλλιώς σε αυτό το server τρέχω μόνο ένα bitcoin node και μπορώ να το στήσω γρήγορα σχετικά. 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευκαιρια να ασχοληθω με το upstart :P
 

BTW, προσπαθησα να φτιαξω ενα αντιστοιχο script για το voidlinux που χρησιμοποιει runit και κατεληξα σε αυτο:

#!/bin/sh
exec chpst -u mobinmob -n 9 env HOME=/home/mobinmob  bitcoind

Το bitcoind είναι σκέτο (χωρίς το -daemon) και όλη την δουλειά την κάνει το chpst (change process state). Με το -u switch τρέχει την process σαν τον χρήστη που ακολουθεί, με το -n προσθέτει niceness. Το env HOME=/home/mobinmob είναι απαραίτητο, καθώς το bitcoind χρειάζεται αυτή την μεταβλητή για να βρεί τα σχετικά αρχεία (datadir, conf κ.λ.π.) στον κατάλογο του χρήστη. Ακόμα όμως και αν τα ορίσεις στον ίδιο τον bitcoind δεν τρέχει αν δεν υπάρχει ορισμένη η μεταβλητή.

Λογικά μπορεί να χρησιμοποιηθεί (το chpst) και στο ubuntu, καθώς δεν εξαρτάται από το init που τρέχεις. Θα το δοκιμάσω σε ένα upstart script .

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

To runit χρησιμοποιεί τους δικούς του καταλόγους. Στο void είναι ρυθμισμένο να χρησιμοποιεί το /etc/sv/ για "αποθήκη" scripts και το /var/service/ για όσα είναι ενεργά (symlinks που δείχνουν στους υποκαταλόγους του /etc/sv/). Δεν ξέρω πόσο εύκολο είναι να το στήσεις σε ubuntu. Υπάρχει στα repo, αλλά δεν φθάνει η εγκατάσταση.

Σκεφτόμουν να χρησιμοποιήσω το chpst μέσα σε κάποιο upstart script. Θα το απλοποιούσε σημαντικά (δεν θα χρειαζόταν π.χ. τα ακροβατικά που κάνει με το pidfile) και ίσως ήταν πιο προβλέψιμο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

πάντως ακόμα δεν μπορώ να καταλάβω για ποιο λόγο σε μένα ενώ ξεκινάει το script δεν μπορεί να ξεκινήσει την εφαρμογή. Και στο bitcointalk που έκανα μια ερώτηση δεν έχουν απαντήσει ακόμα. Το μόνο που μου ανέβασε ένας το δικό του script για να ξεκινάει το bitcoind.

 

start on stopped rc RUNLEVEL=[2345] and (

            not-container or

            container CONTAINER=lxc or

            container CONTAINER=lxc-libvirt)



stop on runlevel [!2345]

 

 

που από τι λέει το έχει ανεβάσει το /etc/init/ 

Από τι φαίνεται κάθε χρήστης του bitcoind έχει και το δικό του script :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θα αρχίσω τις δοκιμές χρησιμοποιώντας αυτό:

    description "bitcoind"
     
    start on filesystem
    stop on runlevel [!2345]
    oom score -500
 
    respawn
    respawn limit 10 60 # 10 times in 60 seconds
     
    script
    exec chpst -u mobinmob -n 9 env HOME=/home/mobinmob bitcoind
    end script

Εννοείται ότι πρέπει να εγκαταστήσω πρώτα το chpst :P

Για να δούμε...


Δουλεύει :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...