Ubuntu18.04 部署Python脚本开机自启,最稳定解决方案

Ubuntu10.04 开机自启

Ubuntu在16.04版本以后就不再使用 initd 管理系统了,改用 systemd
当然,我们还是可以通过软链接,创建systemd文件的形式启用rc.local。但是在rc.local中执行启动脚本也有很多不便之处,比如日志输出和守护进程。。。

更简单高效地添加开机自启和守护进程

PM2 是一个生产级流程管理器,可以轻松管理后台进程。PM2有着良好的命令行使用体验,可以用简单、方便的操作重启崩溃程序,查看程序日志和资源使用情况。

安装 PM2

PM2是 Node 界的东西,但是并不妨碍我们用它来启动Python脚本。Node 界的东西,安装之前是肯定要安装Node 的,然后是 npm

  • 注意:下面的命令需要在root账户下执行。pm2是会区分用户的,root账户启动的脚本其他账户是不可见的,必须要切换到root下执行 pm ls 才能看到root账户使用pm2启动的程序
  1. 安装Node.js
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
apt install -y nodejs
  1. 安装 npm
npm install pm2 -g

使用PM2启动Python脚本

启动命令:pm2 start 文件路径
注意:这里需要在脚本内指定解释器路径,或者使用打包后的文件
我这里使用的是pyinstaller打包后的文件

pm2 start flaskDemo

查看启动列表

注意:查看root用户的启动列表需要切换到root用户下

pm2 ls

示例:

root@mydev:/home/dev# pm2 ls
┌─────┬────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name           │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 1   │ flaskDemo      │ default     │ N/A     │ fork    │ 2287     │ 36m    │ 3    │ online    │ 0%       │ 4.0mb    │ root     │ disabled │
└─────┴────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Module
┌────┬───────────────────────────────────────┬────────────────────┬───────┬──────────┬──────┬──────────┬──────────┬──────────┐
│ id │ module                                │ version            │ pid   │ status   │ ↺    │ cpu      │ mem      │ user     │
├────┼───────────────────────────────────────┼────────────────────┼───────┼──────────┼──────┼──────────┼──────────┼──────────┤
│ 0  │ pm2-logrotate                         │ 2.7.0              │ 2146  │ online   │ 0    │ 0.3%     │ 43.7mb   │ root     │
└────┴───────────────────────────────────────┴────────────────────┴───────┴──────────┴──────┴──────────┴──────────┴──────────┘
root@mydev:/home/dev#

我这里安装了 PM2的日志管理工具,pm2-logrotate。pm2-logrotate 提供了自动化的日志轮换功能。
安装pm2-logrotate

pm2 install pm2-logrotate

查看进程日志

查看日志:pm2 logs 应用名称

pm2 logs flaskDemo

查看进程描述信息

可以通过执行下面的命令查看日志的存储路径和解释器、运行时间、脚本路径等信息。

pm2 describe flaskDemo

示例:

root@mydev:/home/dev# pm2 describe flaskDemo
 Describing process with id 1 - name flaskDemo 
┌───────────────────┬─────────────────────────────────────┐
│ status            │ online                              │
│ name              │ flaskDemo                           │
│ namespace         │ default                             │
│ version           │ N/A                                 │
│ restarts          │ 3                                   │
│ uptime            │ 50m                                 │
│ script path       │ /home/dev/flaskDemo                 │
│ script args       │ N/A                                 │
│ error log path    │ /root/.pm2/logs/flaskDemo-error.log │
│ out log path      │ /root/.pm2/logs/flaskDemo-out.log   │
│ pid path          │ /root/.pm2/pids/flaskDemo-1.pid     │
│ interpreter       │ none                                │
│ interpreter args  │ N/A                                 │
│ script id         │ 1                                   │
│ exec cwd          │ /home/dev                           │
│ exec mode         │ fork_mode                           │
│ node.js version   │ N/A                                 │
│ node env          │ N/A                                 │
│ watch & reload    │ ✘                                   │
│ unstable restarts │ 0                                   │
│ created at        │ 2019-12-09T09:01:47.911Z            │
└───────────────────┴─────────────────────────────────────┘
 Divergent env variables from local env 
┌────────────────┬────────────────────────────────────────┐
│ SSH_CONNECTION │ 192.168.206.1 54924 192.168.206.146 22 │
│ XDG_SESSION_ID │ 2                                      │
│ SSH_CLIENT     │ 192.168.206.1 54924 22                 │
└────────────────┴────────────────────────────────────────┘

 Add your own code metrics: http://bit.ly/code-metrics
 Use `pm2 logs server [--lines 1000]` to display logs
 Use `pm2 env 1` to display environment variables
 Use `pm2 monit` to monitor CPU and Memory usage server

重启进程

重启进程:pm2 restart 应用名称

pm2 restart flaskDemo

停止进程

停止进程:pm2 stop 应用名称

pm2 stop flaskDemo

删除进程

删除进程:pm2 delete 应用名称

pm2 delete flaskDemo

让 PM2 开机自启

刚安装的PM2是不会随操作系统启动的,需要我们手动执行命令来打开PM2的开机自启功能。
在Ubuntu18.04上,这一步很简单,自动化的脚本帮我们完成了创建systemd文件和创建软链接的工作。我们只需要保存转存文件就可以了。

执行PM2自启命令

pm2 startup

很遗憾,这一步我忘记保存输出内容了。
这个命令执行后,系统会创建启动脚本,在Ubuntu18.04上是会自动添加软链接的,如果是别的版本,可能就需要你按照提示输出的命令去执行。
其它的版本可能会输出一些命令,按照提示复制到bash输入并回车就可以了,这一步其实就是添加一个系统自启服务。

最后需要我们执行下面的命令保存转存文件,这样PM2自启后就会启动我们的应用。

pm2 save
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安心写bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值