当前位置: 首页 > 知识库问答 >
问题:

pm2启动不起作用

黄景胜
2023-03-14
pm2 startup ubuntu
pm2 start appname
pm2 save

pm2-init.sh文件:

#!/bin/bash                                                     
# chkconfig: 2345 98 02                                         
#                                                               
# description: PM2 next gen process manager for Node.js         
# processname: pm2                                              
#                                                               
### BEGIN INIT INFO                                             
# Provides:          pm2                                        
# Required-Start: $local_fs $remote_fs                          
# Required-Stop: $local_fs $remote_fs                           
# Should-Start: $network                                        
# Should-Stop: $network                                         
# Default-Start:        2 3 4 5                                 
# Default-Stop:         0 1 6                                   
# Short-Description: PM2 init script                            
# Description: PM2 is the next gen process manager for Node.js  
### END INIT INFO                                               

NAME=pm2                                                                                            
PM2=/home/bashar/.nvm/versions/node/v4.1.1/lib/node_modules/pm2/bin/pm2                             
USER=bashar                                                                                         

export PATH=/home/bashar/.nvm/versions/node/v4.1.1/bin:$PATH                                        
export PM2_HOME="/home/bashar/.pm2"                                                                 

get_user_shell() {                                                                                  
    local 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=$(get_user_shell $USER)                                                             
    su - $USER -s $shell -c "PATH=$PATH; PM2_HOME=$PM2_HOME $*"                                     
}                                                                                                   

start() {                                                                                           
    echo "Starting $NAME"                                                                           
    export PM2_HOME                                                                                 
    super $PM2 resurrect                                                                            
}


stop() {                      
    super $PM2 dump           
    super $PM2 delete all     
    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                                                                                                                  

这不起作用,所以我尝试使用crontab,如下所示:首先,创建一个脚本,并将其命名为starter.sh

#!/bin/bash
pm2 start /home/bashar/www/node/server.js

然后打开crontab编辑器:

crontab -e
@reboot /home/bashar/www/node/server.js

共有1个答案

吕霖
2023-03-14

pm2似乎在重新启动期间有一个bug。将pm2添加到/etc/init.d中的自动启动进程后,该脚本在正常处理下工作正常,但在重新启动时会出现一些奇怪的情况:它将pm2.dump文件清除为空。有几个像这样的bug报告,但到目前为止,它仍然是一个bug...

我发现的最简单的解决方法如下:

  1. 编辑/etc/init.d/pm2-init.sh并注释掉stop()部分中的“super$pm2 dump”一行
  2. 每当修改pm2进程列表时,请记住手动执行“pm2转储”
 类似资料:
  • 我很难在服务器重新引导时重新启动pm2(它本身和两个节点/express文件,&)。 下面是我尝试的过程: 我在所有可能的组合中运行了上面的命令,但没有任何工作。我试着以根用户的身份运行,但也不起作用。 我的文件包含信息,所以我不知道还可以在哪里查找。 我尝试的其他参考资料... http://pm2.keymetrics.io/docs/usage/startup/ https://www.di

  • 我发现了这个,结果是windows 10上的pm2问题。 那篇文章末尾建议的变通办法似乎很管用。 基本上,首先安装node-cmd,然后创建一个startscript.js:

  • 问题内容: 我有以下Spring Security配置: 我期望以下逻辑:未经身份验证的用户将被重定向到。Spring会显示默认的Tomcat 403页面,而不是该页面。我也尝试过自定义,尽管没有成功。 如何在访问失败时实施自定义逻辑? 问题答案: AccessDeniedHandler仅适用于经过身份验证的用户。未经身份验证的用户的默认行为是重定向到登录页面(或适用于所使用的身份验证机制的任何内

  • 当我使用时,我的javascript游戏应用程序将无法工作。当我使用时,游戏工作得很好,但不使用。在服务器上加载index.js文件,但随后给出错误,如: 和 再次,当我使用启动服务器时,程序运行平稳。 以下是我的process.yml文件

  • 但是在我使用运行应用程序的服务器上,环境变量仍然。 我用来在服务器上运行应用程序的pm2命令是:

  • 我正在尝试按照一个简单的示例应用程序教程来创建一个Spring启动应用程序并将其连接到mysql数据库。使用智能诊断。https://www.youtube.com/watch?v=YVl6M5ztOu8 项目结构: 当我尝试运行此示例应用程序时,我收到以下错误消息: **运行该程序的步骤: 在称为“restfulapi”的 mysql 工作台中创建连接 参数是本地主机端口 3306 的 root