Commandes CLI PM2, gestion de processus Node.js, monitoring, logs, redémarrages automatiques et déploiement. Guide pratique pour développeurs et DevOps cherchant à optimiser la performance et la stabilité de leurs applications.
pm2 start app.js
Démarre une application Node.js avec PM2
--name-n--instances-i--watch--ignore-watch--max-memory-restart--max-restarts--min-uptime--kill-timeout--restart-delay--time--no-autorestart--cron--no-daemon--env--interpreter--node-args--log-l--output-o--error-e--merge-logs--log-date-format--disable-logs--attach-a--listen-timeout--wait-ready--shutdown-with-message--force-f
pm2 start app.js --name mon-api
Démarre avec un nom personnalisé
--name-n
pm2 start app.js -i max
Démarre en mode cluster (tous les CPU)
-i--instances
pm2 start app.js -i 4
Démarre avec 4 instances
-i--instances
pm2 start app.js --watch
Démarre avec rechargement automatique (watch)
--watch--ignore-watch
pm2 start app.js --watch --ignore-watch="node_modules|logs|.git"
Watch avec exclusion de dossiers
--watch--ignore-watch
pm2 start app.js --max-memory-restart 500M
Redémarre si la mémoire dépasse 500 Mo
--max-memory-restart
pm2 start app.js --cron "0 0 * * *"
Redémarre selon une expression cron (minuit)
--cron
pm2 start app.js --no-autorestart
Désactive le redémarrage automatique
--no-autorestart
pm2 start app.js --env production
Démarre avec l'environnement production
--env
pm2 start app.js --node-args="--max-old-space-size=4096"
Passe des arguments à Node.js
--node-args
pm2 start app.js -- --port=3000
Passe des arguments à l'application
--
pm2 start app.js -l combined.log -o out.log -e err.log
Définit les fichiers de logs
-l--log-o--output-e--error
pm2 start app.js --merge-logs
Fusionne les logs de toutes les instances
--merge-logs
pm2 start app.js --log-date-format "YYYY-MM-DD HH:mm:ss"
Format personnalisé des dates dans les logs
--log-date-format
pm2 start app.js --disable-logs
Désactive l'écriture des logs
--disable-logs
pm2 start app.js --wait-ready --listen-timeout 10000
Attend que l'application soit prête (10s)
--wait-ready--listen-timeout
pm2 start app.js --kill-timeout 5000
Timeout de 5s avant kill forcé
--kill-timeout
pm2 start npm --name "mon-app" -- run start
Démarre un script npm
--name
pm2 start yarn --name "mon-app" -- start
Démarre un script yarn
--name
pm2 start pnpm --name "mon-app" -- start
Démarre un script pnpm
--name
pm2 start python --name "mon-script" -- script.py
Démarre un script Python
--name--interpreter
pm2 start "java -jar monapp.jar" --name "mon-java"
Démarre une application Java
--name
pm2 start "python -m http.server 8080" --name "http-server"
Démarre un serveur HTTP Python
--name
pm2 start ecosystem.config.js
Démarre avec un fichier de configuration
--only--env--no-daemon--attach
pm2 start ecosystem.config.js --only mon-api
Démarre uniquement une application spécifique
--only
pm2 start ecosystem.config.js --env production
Démarre avec l'environnement production
--env
pm2 stop mon-api
Arrête une application
all--silent
pm2 stop all
Arrête toutes les applications
pm2 restart mon-api
Redémarre une application
--update-env--cron-restart--env
pm2 restart mon-api --update-env
Redémarre en mettant à jour les variables d'environnement
--update-env
pm2 restart all
Redémarre toutes les applications
pm2 reload mon-api
Recharge sans downtime (0-second reload)
--update-env--env
pm2 reload all
Recharge toutes les applications sans downtime
pm2 reload ecosystem.config.js --only mon-api
Recharge depuis le fichier ecosystem
--only
pm2 gracefulReload all
Recharge gracieuse (envoie SIGUSR2)
pm2 delete mon-api
Supprime une application de PM2
all
pm2 delete all
Supprime toutes les applications
pm2 list
Liste toutes les applications gérées par PM2
--sort--json--help
pm2 ls
Alias de pm2 list
--sort
pm2 status
Alias de pm2 list
--sort
pm2 show mon-api
Affiche les détails d'une application
--json
pm2 desc mon-api
Alias de pm2 show
pm2 info mon-api
Alias de pm2 show
pm2 describe mon-api
Alias de pm2 show
pm2 logs
Affiche les logs de toutes les applications
--raw--json--format--timestamp--lines-n--err--out--nostream--highlight
pm2 logs mon-api
Affiche les logs d'une application spécifique
--lines-n--err--out--timestamp
pm2 logs mon-api --lines 100
Affiche les 100 dernières lignes
--lines-n
pm2 logs --err
Affiche uniquement les logs d'erreur
--err
pm2 logs --out
Affiche uniquement les logs de sortie
--out
pm2 logs --raw
Affiche les logs bruts (sans formatage)
--raw
pm2 logs --json
Affiche les logs au format JSON
--json
pm2 logs --timestamp
Force l'affichage des timestamps
--timestamp
pm2 flush
Vide tous les fichiers de logs
pm2 flush mon-api
Vide les logs d'une application
pm2 reloadLogs
Recharge les fichiers de logs (après rotation)
pm2 monit
Ouvre le monitoring en temps réel
pm2 monitor
Alias de pm2 monit
pm2 scale mon-api 4
Scale l'application à 4 instances
+n-n
pm2 scale mon-api +2
Ajoute 2 instances
+n
pm2 scale mon-api -1
Retire 1 instance
-n
pm2 save
Sauvegarde la liste des processus pour redémarrage
--force-f
pm2 save --force
Force la sauvegarde
--force-f
pm2 resurrect
Restaure les processus précédemment sauvegardés
pm2 unstartup
Désactive le démarrage automatique
platform
pm2 startup
Configure le démarrage automatique au boot
systemdupstartlaunchdrcdopenrcvsystem
pm2 startup systemd
Configure pour systemd (Linux)
-u--user--hp--service-name
pm2 startup systemd -u monuser
Configure pour un utilisateur spécifique
-u--user
pm2 startup upstart
Configure pour Upstart (Ubuntu 14.04)
pm2 startup launchd
Configure pour launchd (macOS)
pm2 unstartup systemd
Désactive le démarrage automatique pour systemd
pm2 ping
Vérifie la connexion à PM2
pm2 update
Met à jour PM2 en mémoire (après mise à jour npm)
pm2 updatePM2
Alias de pm2 update
pm2 kill
Tue le démon PM2
pm2 reset mon-api
Réinitialise les compteurs de redémarrage
all
pm2 reset all
Réinitialise tous les compteurs
pm2 sendSignal SIGUSR2 mon-api
Envoie un signal à une application
SIGINTSIGTERMSIGUSR1SIGUSR2SIGHUP
pm2 env 0
Affiche les variables d'environnement de l'instance 0
id
pm2 jlist
Liste au format JSON
pm2 prettylist
Liste au format JSON formaté
pm2 report
Génère un rapport de diagnostic complet
pm2 link <secret> <public>
Lie l'instance à PM2 Plus (Keymetrics)
--name
pm2 unlink
Délie l'instance de PM2 Plus
pm2 web
Lance l'API web de monitoring (port 9615)
--port--host--help
pm2 web --port 8080 --host 0.0.0.0
Lance l'API web sur un port personnalisé
--port--host
pm2 serve /chemin/vers/dossier 8080
Sert un dossier statique via HTTP
--name--spa--basic-auth-username--basic-auth-password--help
pm2 serve /var/www/html 8080 --name mon-site --spa
Sert un site SPA (Single Page Application)
--name--spa
pm2 serve /var/www/html 8080 --basic-auth-username admin --basic-auth-password secret
Sert avec authentification basique
--basic-auth-username--basic-auth-password
pm2 deploy ecosystem.config.js production setup
Configure le déploiement sur le serveur distant
setupupdaterevertexeclist
pm2 deploy ecosystem.config.js production
Déploie l'application sur l'environnement production
--force
pm2 deploy ecosystem.config.js production revert 1
Revient au déploiement précédent
revert
pm2 deploy ecosystem.config.js production exec "npm run migrate"
Exécute une commande sur le serveur distant
exec
pm2 deploy ecosystem.config.js list
Liste les déploiements disponibles
list
pm2 ecosystem
Génère un fichier ecosystem.config.js de base
--help
pm2 init
Alias de pm2 ecosystem
pm2 generate
Génère un fichier de configuration JSON
jsonjsyaml
pm2 install pm2-logrotate
Installe le module de rotation des logs
installuninstallstartstoprestartlistpublishhelp
pm2 module:install pm2-logrotate
Alias de pm2 install
pm2 uninstall pm2-logrotate
Désinstalle un module
uninstall
pm2 list-modules
Liste les modules installés
pm2 module:list
Alias de pm2 list-modules
pm2 conf <module> set <key> <value>
Configure un module
setgetdeleteclear
pm2 set pm2-logrotate:max_size 10M
Définit la taille max des logs à 10 Mo
set
pm2 set pm2-logrotate:retain 30
Garde 30 fichiers de logs
set
pm2 set pm2-logrotate:compress true
Active la compression des logs
set
pm2 install pm2-server-monit
Installe le module de monitoring serveur
install
pm2 install pm2-mongodb
Installe le module MongoDB
install
pm2 install pm2-mysql
Installe le module MySQL
install
pm2 install pm2-redis
Installe le module Redis
install
pm2 install pm2-elasticsearch
Installe le module Elasticsearch
install
pm2 install pm2-postgres
Installe le module PostgreSQL
install
pm2 interact <secret> <public>
Connecte PM2 à PM2 Plus (Keymetrics)
--info_node
pm2 trigger <app_name> <action_name> <params>
Déclenche une action personnalisée
--help
pm2 pull <app_name>
Met à jour le code depuis Git (déploiement)
pm2 forward <app_name>
Redémarre après pull (déploiement)
pm2 backward <app_name>
Revient à la version précédente (déploiement)
pm2 launch <app_name>
Démarre l'application après déploiement
pm2 connect <secret> <public>
Alias de pm2 link
pm2 disconnect
Alias de pm2 unlink
pm2 axm
Active le module d'actions personnalisées
pm2 runtime
Lance PM2 en mode runtime (pour Docker)
startstoprestartreloaddeletelist
pm2-runtime start app.js
Démarre une application en mode runtime (Docker)
-i--instances--watch--env--name--no-autorestart--max-memory-restart
pm2-runtime start ecosystem.config.js
Démarre depuis ecosystem en mode runtime
--only--env
pm2-docker start app.js
Alias de pm2-runtime (déprécié)
pm2 status --no-color
Affiche le statut sans couleurs
--no-color
pm2 list --sort [name|id|pid|memory|cpu|status|uptime]
Trie la liste des processus
--sort
pm2 list --sort memory
Trie par utilisation mémoire
--sort
pm2 attach mon-api
Attache à l'application pour voir les logs en direct
pm2 launch <app_name> <action>
Lance une action de déploiement
pre-deploypost-deploy
pm2 publish <app_name>
Publie une application sur PM2 Plus
pm2 save --force
Force la sauvegarde de la configuration
--force-f
pm2 dump
Alias de pm2 save
pm2 kill --timeout 10000
Tue PM2 après un timeout
--timeout
pm2 send SIGINT mon-api
Envoie SIGINT à l'application
pm2 send SIGTERM all
Envoie SIGTERM à toutes les applications
pm2 start app.js --max-restarts 10
Limite à 10 redémarrages
--max-restarts
pm2 start app.js --min-uptime 10000
Considère l'application stable après 10s
--min-uptime
pm2 start app.js --restart-delay 5000
Délai de 5s avant redémarrage
--restart-delay
pm2 start app.js --time
Ajoute un timestamp aux logs
--time
pm2 start app.js --namespace production
Définit un namespace pour l'application
--namespace
pm2 start app.js --disable-source-map-support
Désactive le support des source maps
--disable-source-map-support
pm2 start app.js --public <key>
Associe à un bucket PM2 Plus
--public
pm2 start app.js --machine-name <name>
Définit le nom de la machine pour PM2 Plus
--machine-name
pm2 start app.js --unique-name <name>
Nom unique pour PM2 Plus
--unique-name
pm2 start app.js --treekill
Tue l'arbre de processus complet
--treekill--no-treekill
pm2 start app.js --kill-retry-time 100
Temps entre les tentatives de kill (ms)
--kill-retry-time
pm2 start app.js --vizion
Active l'intégration Git (Vizion)
--vizion--no-vizion
pm2 start app.js --versioning
Active le versioning
--versioning
pm2 start app.js --post-start <command>
Exécute une commande après le démarrage
--post-start