upstart.tpl 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #!/bin/bash
  2. ### BEGIN INIT INFO
  3. # Provides: pm2
  4. # Required-Start: $local_fs $remote_fs $network
  5. # Required-Stop: $local_fs $remote_fs $network
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: PM2 Init script
  9. # Description: PM2 process manager
  10. ### END INIT INFO
  11. NAME=pm2
  12. PM2=%PM2_PATH%
  13. USER=%USER%
  14. DEFAULT=/etc/default/$NAME
  15. export PATH=%NODE_PATH%:$PATH
  16. export PM2_HOME="%HOME_PATH%"
  17. # The following variables can be overwritten in $DEFAULT
  18. # maximum number of open files
  19. MAX_OPEN_FILES=
  20. # overwrite settings from default file
  21. if [ -f "$DEFAULT" ]; then
  22. . "$DEFAULT"
  23. fi
  24. # set maximum open files if set
  25. if [ -n "$MAX_OPEN_FILES" ]; then
  26. ulimit -n $MAX_OPEN_FILES
  27. fi
  28. get_user_shell() {
  29. local shell
  30. shell=$(getent passwd "${1:-$(whoami)}" | cut -d: -f7 | sed -e 's/[[:space:]]*$//')
  31. if [[ $shell == *"/sbin/nologin" ]] || [[ $shell == "/bin/false" ]] || [[ -z "$shell" ]];
  32. then
  33. shell="/bin/bash"
  34. fi
  35. echo "$shell"
  36. }
  37. super() {
  38. local shell
  39. shell=$(get_user_shell $USER)
  40. su - "$USER" -s "$shell" -c "PATH=$PATH; PM2_HOME=$PM2_HOME $*"
  41. }
  42. start() {
  43. echo "Starting $NAME"
  44. super $PM2 resurrect
  45. }
  46. stop() {
  47. super $PM2 kill
  48. }
  49. restart() {
  50. echo "Restarting $NAME"
  51. stop
  52. start
  53. }
  54. reload() {
  55. echo "Reloading $NAME"
  56. super $PM2 reload all
  57. }
  58. status() {
  59. echo "Status for $NAME:"
  60. super $PM2 list
  61. RETVAL=$?
  62. }
  63. case "$1" in
  64. start)
  65. start
  66. ;;
  67. stop)
  68. stop
  69. ;;
  70. status)
  71. status
  72. ;;
  73. restart)
  74. restart
  75. ;;
  76. reload)
  77. reload
  78. ;;
  79. force-reload)
  80. reload
  81. ;;
  82. *)
  83. echo "Usage: {start|stop|status|restart|reload|force-reload}"
  84. exit 1
  85. ;;
  86. esac
  87. exit $RETVAL