openrc.tpl 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/sbin/openrc-run
  2. # Copyright 2013-2022 the PM2 project authors. All rights reserved.
  3. # Init script automatically generated by pm2 startup
  4. description="Production process manager for Node.js apps with a built-in load balancer."
  5. extra_started_commands="reload"
  6. PM2="%PM2_PATH%"
  7. user=${PM2_USER:-%USER%}
  8. export PM2_HOME=$(eval echo ~${user})"/.pm2/"
  9. # Options for start-stop-daemon (default start function)
  10. command=${PM2}
  11. command_user=${user}
  12. command_args="resurrect"
  13. pidfile=${PM2_HOME}/pm2.pid
  14. run_pm2_as_user() {
  15. einfo "${PM2} $@"
  16. eval su -l ${user} -c \'${PM2} $@\'
  17. }
  18. depend() {
  19. need net
  20. need localmount
  21. after bootmisc
  22. }
  23. start_post() {
  24. if [ "${user}" == "root" ]; then
  25. ewarn "PM2: Better run this daemon as a non root user. To set this user create"
  26. ewarn "PM2: /etc/conf.d/pm2 file and define 'PM2_USER=user' there."
  27. ewarn "PM2: Note user MUST have home directory for PM2 logs/state/etc..."
  28. fi
  29. einfo "PM2: Process Manager started. To start services run:"
  30. einfo "PM2: # su -l ${user} -c '$PM2 start /path/to/app'"
  31. }
  32. stop() {
  33. ebegin "Stopping PM2 process manager..."
  34. run_pm2_as_user dump
  35. run_pm2_as_user kill
  36. eend $?
  37. }
  38. reload() {
  39. ebegin "Reloading pm2"
  40. run_pm2_as_user reload all
  41. eend $?
  42. }
  43. # vim: ts=4