Résolu - Démarrage automatique impossible

#1

Bonjour à tous,

après avoir installé plusieurs “trucs” sur mon raspberry Gladys (et autres composants ) de redémarre plus automatiquement !

j’ai passer les commandes suivantes mais sans effets au rebut suivant !

Merci pour vos aides !

sudo pm2 startup
pm2 start /home/pi/gladys/app.js --name gladys
pm2 start /home/pi/gladys-voice/app.js --name gladys-voice
pm2 start /home/pi/gladys-bluetooth/app.js --name gladys-bluetooth
pm2 save

#2

Des logs ?

pm2 logs

Et pq pas un

pm2 list

Aussi :wink:

#3

les voici :slight_smile:[email protected]:~ $ pm2 logs
[PM2] Spawning PM2 daemon with pm2_home=/home/pi/.pm2
[PM2] PM2 Successfully daemonized

[TAILING] Tailing last 10 lines for [all] processes (change the value with --lines option)
/home/pi/.pm2/pm2.log last 10 lines:
PM2 | 2017-11-07 18:25:02: Current arch : arm
PM2 | 2017-11-07 18:25:02: PM2 home : /home/pi/.pm2
PM2 | 2017-11-07 18:25:02: PM2 PID file : /home/pi/.pm2/pm2.pid
PM2 | 2017-11-07 18:25:02: RPC socket file : /home/pi/.pm2/rpc.sock
PM2 | 2017-11-07 18:25:02: BUS socket file : /home/pi/.pm2/pub.sock
PM2 | 2017-11-07 18:25:02: Application log path : /home/pi/.pm2/logs
PM2 | 2017-11-07 18:25:02: Process dump file : /home/pi/.pm2/dump.pm2
PM2 | 2017-11-07 18:25:02: Concurrent actions : 4
PM2 | 2017-11-07 18:25:02: SIGTERM timeout : 1600
PM2 | 2017-11-07 18:25:02: ===============================================================================

[STREAMING] Now streaming realtime logs for [all] processes
^C
[email protected]:~ $ pm2 list
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────────┘
Use pm2 show <id|name> to get more details about an app
[email protected]:~ $

#4

Ça fait pas bcp de process ça
Garde une fenêtre avec tes logs actifs et passe
pm2 start app.js

Puis reposte tes logs

#5

Tu peux peut être essayer de réinstaller PM2 :

pm2 kill
sudo npm remove -g  pm2
sudo npm install -g pm2

[Edit] J’ai trouvé la solution en rédigeant mon tuto : :smile:

Regarde à la fin :wink:

#6

[email protected]:~ $ pm2 start app.js
[PM2] Spawning PM2 daemon with pm2_home=/home/pi/.pm2
pm[PM2] PM2 Successfully daemonized
[PM2][ERROR] script not found : /home/pi/app.js
script not found : /home/pi/app.js
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────────┘
Use pm2 show <id|name> to get more details about an app
[email protected]:~ $ pm2 logs
[TAILING] Tailing last 10 lines for [all] processes (change the value with --lines option)
/home/pi/.pm2/pm2.log last 10 lines:
PM2 | 2017-11-07 21:23:08: Current arch : arm
PM2 | 2017-11-07 21:23:08: PM2 home : /home/pi/.pm2
PM2 | 2017-11-07 21:23:08: PM2 PID file : /home/pi/.pm2/pm2.pid
PM2 | 2017-11-07 21:23:08: RPC socket file : /home/pi/.pm2/rpc.sock
PM2 | 2017-11-07 21:23:08: BUS socket file : /home/pi/.pm2/pub.sock
PM2 | 2017-11-07 21:23:08: Application log path : /home/pi/.pm2/logs
PM2 | 2017-11-07 21:23:08: Process dump file : /home/pi/.pm2/dump.pm2
PM2 | 2017-11-07 21:23:08: Concurrent actions : 4
PM2 | 2017-11-07 21:23:08: SIGTERM timeout : 1600
PM2 | 2017-11-07 21:23:08: ===============================================================================

[STREAMING] Now streaming realtime logs for [all] processes

#7

je n’ai pas réinstallé … pour le moment :wink:

voici les commandes passées suite à ton tuto :
[email protected]:~ $ pm2 startup
[PM2] You have to run this command as root. Execute the following command:
sudo su -c “env PATH=$PATH:/usr/local/bin pm2 startup linux -u pi --hp /home/pi”
[email protected]:~ $ sudo env PATH=$PATH:/usr/local/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
[PM2] Writing startup script in /etc/systemd/system/pm2.service
[PM2] Making script booting at startup…
[PM2] -systemd- Using the command:
su pi -c “pm2 dump && pm2 kill” && su root -c “systemctl daemon-reload && systemctl enable pm2 && systemctl start pm2”

[PM2][WARN] No process found
Created symlink from /etc/systemd/system/multi-user.target.wants/pm2.service to /etc/systemd/system/pm2.service.
[PM2] Saving current process list…
[PM2] Successfully saved in /home/pi/.pm2/dump.pm2
[PM2] Stopping PM2…
[PM2] All processes have been stopped and deleted
[PM2] PM2 stopped
[PM2] Done.

[PM2] Now you can type
$ pm2 save
[PM2] To save the current process list at reboot or via pm2 update
[email protected]:~ $
[email protected]:~ $ pm2 save
[PM2] Saving current process list…
[PM2] Successfully saved in /home/pi/.pm2/dump.pm2
[email protected]:~ $

#8

Comme l’indique la commande “pm2 startup”, tu dois exécuter la commande suivante :

sudo su -c “env PATH=$PATH:/usr/local/bin pm2 startup linux -u pi --hp /home/pi”

Et non la mienne :wink:

#9

ok … fait !

[email protected]:~ $ pm2 startup
[PM2] You have to run this command as root. Execute the following command:
sudo su -c “env PATH=$PATH:/usr/local/bin pm2 startup linux -u pi --hp /home/pi”
[email protected]:~ $ sudo su -c “env PATH=$PATH:/usr/local/bin pm2 startup linux -u pi --hp /home/pi”
[PM2] Writing startup script in /etc/init.d/pm2-init.sh
[PM2] Making script booting at startup…
[PM2] -linux- Using the command:
su -c “chmod +x /etc/init.d/pm2-init.sh && update-rc.d pm2-init.sh defaults”

[PM2] Done.

[PM2] Now you can type
$ pm2 save
[PM2] To save the current process list at reboot or via pm2 update
[email protected]:~ $ pm2 save
[PM2] Saving current process list…
[PM2] Successfully saved in /home/pi/.pm2/dump.pm2
[email protected]:~ $

Mais rien de plus !
au reboot :
[email protected]:~ $ pm2 list
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬─────┬─────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴─────┴─────┴──────────┘
Use pm2 show <id|name> to get more details about an app
[email protected]:~ $ pm2 logs
[TAILING] Tailing last 10 lines for [all] processes (change the value with --lines option)
/home/pi/.pm2/pm2.log last 10 lines:
PM2 | 2017-11-07 21:50:28: Current arch : arm
PM2 | 2017-11-07 21:50:28: PM2 home : /home/pi/.pm2
PM2 | 2017-11-07 21:50:28: PM2 PID file : /home/pi/.pm2/pm2.pid
PM2 | 2017-11-07 21:50:28: RPC socket file : /home/pi/.pm2/rpc.sock
PM2 | 2017-11-07 21:50:28: BUS socket file : /home/pi/.pm2/pub.sock
PM2 | 2017-11-07 21:50:28: Application log path : /home/pi/.pm2/logs
PM2 | 2017-11-07 21:50:28: Process dump file : /home/pi/.pm2/dump.pm2
PM2 | 2017-11-07 21:50:28: Concurrent actions : 4
PM2 | 2017-11-07 21:50:28: SIGTERM timeout : 1600
PM2 | 2017-11-07 21:50:28: ===============================================================================

[STREAMING] Now streaming realtime logs for [all] processes

#10

Je pense que tu as oublié d’exécuter la commande indiquée :

su -c “chmod +x /etc/init.d/pm2-init.sh && update-rc.d pm2-init.sh defaults”

#11

Héhé. On va finir par y arriver à trois :grin:
Pour résumer et contextualiser un peu tout ça :

L’idée générale est que le le process pm2 manage l’exécution de Gladys.

1/ T’indiques à ton système que pm2 doit se lancer au démarrage :
sudo pm2 startup
Si ça se passe bien, tu devrais avoir tout un log qui apparait avec des détails de ce que cette commande a exécuté. EN tout cas, sur mac, ça me donne ça :

[details=MacLog]> [PM2] Init System found: launchd

Platform launchd
Template

<?xml version="1.0" encoding="UTF-8"?> Label com.PM2 UserName root KeepAlive ProgramArguments /bin/sh -c /usr/local/lib/node_modules/pm2/bin/pm2 resurrect RunAtLoad OnDemand LaunchOnlyOnce EnvironmentVariables PATH /usr/local/Cellar/[email protected]/6.11.4/bin PM2_HOME /Users/boimb/.pm2 StandardErrorPath /tmp/com.PM2.err StandardOutPath /tmp/com.PM2.out

Target path
/Users/boimb/Library/LaunchAgents/pm2.root.plist
Command list
[ ‘launchctl load -w /Users/boimb/Library/LaunchAgents/pm2.root.plist’ ]
[PM2] Writing init configuration in /Users/boimb/Library/LaunchAgents/pm2.root.plist
[PM2] Making script booting at startup…

Executing launchctl load -w /Users/boimb/Library/LaunchAgents/pm2.root.plist
[DONE]
±--------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup launchd[/details]

2/ Tu lances les applications NodeJS que tu veux manager avec pm2

pm2 start /chemin/vers/mon/app.js

Si tu es dans le répertoire de Gladys :
pm2 start app.js

Ou encore mieux :
pm2 start /chemin/absolu/vers/Gladys/app.js --name="Gladys"

[details=Starting]> Boimb:~ boimb$ pm2 start /Users/boimb/projects/Gladys/app.js --name=“Gladys <3”

[PM2] Starting /Users/boimb/projects/Gladys/app.js in fork_mode (1 instance)
[PM2] Done.
┌───────────┬──────┬─────────┬───┬─────┬────────┐
│ Name │ mode │ status │ ↺ │ cpu │ memory │
├───────────┼──────┼─────────┼───┼─────┼────────┤
│ Gladys <3 │ fork │ online │ 0 │ 0% │ 0 B │
└───────────┴──────┴─────────┴───┴─────┴────────┘
Use pm2 show <id|name> to get more details about an app[/details]

3/ Tu indiques à pm2 que tu veux qu’il sauvegarde l’état en cours :
pm2 save

[details=Saved]> Boimb:~ boimb$ pm2 save

[PM2] Saving current process list…
[PM2] Successfully saved in /Users/boimb/.pm2/dump.pm2[/details]

Tu devrais pouvoir relancer ta machine et constater que Gladys tourne :
pm2 list

[details=BigUp]> Boimb:~ boimb$ pm2 list

┌───────────┬──────┬────────┬───┬─────┬────────┐
│ Name │ mode │ status │ ↺ │ cpu │ memory │
├───────────┼──────┼────────┼───┼─────┼────────┤
│ Gladys <3 │ fork │ online │ 0 │ 0% │ 0 B │
└───────────┴──────┴────────┴───┴─────┴────────┘
Use pm2 show <id|name> to get more details about an app[/details]

:ok_hand:

[edit]
Bon… A relire ton premier post, c’est exactement ce que tu avais fait à l’origine… :thinking:
/mePasTropComprendre
[/edit]

#12

[email protected]:~ $ pm2 list
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ gladys │ 0 │ fork │ 1872 │ online │ 2 │ 5s │ 99% │ 68.4 MB │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
Use pm2 show <id|name> to get more details about an app
[email protected]:~ $ pm2 show gladys
Describing process with id 0 - name gladys
┌───────────────────┬───────────────────────────────────────┐
│ status │ online │
│ name │ gladys │
│ restarts │ 5 │
│ uptime │ 6s │
│ script path │ /home/pi/gladys/app.js │
│ script args │ N/A │
│ error log path │ /home/pi/.pm2/logs/gladys-error-0.log │
│ out log path │ /home/pi/.pm2/logs/gladys-out-0.log │
│ pid path │ /home/pi/.pm2/pids/gladys-0.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
│ exec cwd │ /home/pi │
│ exec mode │ fork_mode │
│ node.js version │ 6.10.3 │
│ watch & reload │ ✘ │
│ unstable restarts │ 0 │
│ created at │ 2017-11-08T06:18:53.012Z │
└───────────────────┴───────────────────────────────────────┘
Code metrics value
┌────────────┬─────┐
│ Loop delay │ 0ms │
└────────────┴─────┘
Add your own code metrics: http://bit.ly/code-metrics
Use pm2 logs gladys [--lines 1000] to display logs
Use pm2 monit to monitor CPU and Memory usage gladys
[email protected]:~ $

#13

CA MARCHE !!!

Merci à vous !

2 Likes
#14

[petit retour]
Bonjour,

J’avais le même problème et grâce aux solutions de Pti_Nico et Boimb, l’auto start de Gladys et Gladys-voice fonctionnent après le reboot rpi.

Merci à vous :wink: