104 lines
1.7 KiB
Smarty
104 lines
1.7 KiB
Smarty
#!/bin/bash
|
|
### BEGIN INIT INFO
|
|
# Provides: pm2
|
|
# Required-Start: $local_fs $remote_fs $network
|
|
# Required-Stop: $local_fs $remote_fs $network
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: PM2 Init script
|
|
# Description: PM2 process manager
|
|
### END INIT INFO
|
|
|
|
NAME=pm2
|
|
PM2=%PM2_PATH%
|
|
USER=%USER%
|
|
DEFAULT=/etc/default/$NAME
|
|
|
|
export PATH=%NODE_PATH%:$PATH
|
|
export PM2_HOME="%HOME_PATH%"
|
|
|
|
# The following variables can be overwritten in $DEFAULT
|
|
|
|
# maximum number of open files
|
|
MAX_OPEN_FILES=
|
|
|
|
# overwrite settings from default file
|
|
if [ -f "$DEFAULT" ]; then
|
|
. "$DEFAULT"
|
|
fi
|
|
|
|
# set maximum open files if set
|
|
if [ -n "$MAX_OPEN_FILES" ]; then
|
|
ulimit -n $MAX_OPEN_FILES
|
|
fi
|
|
|
|
get_user_shell() {
|
|
local shell
|
|
shell=$(getent passwd "${1:-$(whoami)}" | cut -d: -f7 | sed -e 's/[[:space:]]*$//')
|
|
|
|
if [[ $shell == *"/sbin/nologin" ]] || [[ $shell == "/bin/false" ]] || [[ -z "$shell" ]];
|
|
then
|
|
shell="/bin/bash"
|
|
fi
|
|
|
|
echo "$shell"
|
|
}
|
|
|
|
super() {
|
|
local shell
|
|
shell=$(get_user_shell $USER)
|
|
su - "$USER" -s "$shell" -c "PATH=$PATH; PM2_HOME=$PM2_HOME $*"
|
|
}
|
|
|
|
start() {
|
|
echo "Starting $NAME"
|
|
super $PM2 resurrect
|
|
}
|
|
|
|
stop() {
|
|
super $PM2 kill
|
|
}
|
|
|
|
restart() {
|
|
echo "Restarting $NAME"
|
|
stop
|
|
start
|
|
}
|
|
|
|
reload() {
|
|
echo "Reloading $NAME"
|
|
super $PM2 reload all
|
|
}
|
|
|
|
status() {
|
|
echo "Status for $NAME:"
|
|
super $PM2 list
|
|
RETVAL=$?
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
status)
|
|
status
|
|
;;
|
|
restart)
|
|
restart
|
|
;;
|
|
reload)
|
|
reload
|
|
;;
|
|
force-reload)
|
|
reload
|
|
;;
|
|
*)
|
|
echo "Usage: {start|stop|status|restart|reload|force-reload}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
exit $RETVAL
|