linux-工具之screen+nohup+pm2

1. 终端管理工具

1.1 screen

1.1.1 介绍

Screen 或GNU Screen 是终端多路复用器。 换句话说,这意味着您可以启动屏幕会话,然后在该会话中打开任意数量的窗口(虚拟终端)。 当您的屏幕窗口不可见时,即使您已断开(SSH)连接,在screen中运行的进程也将继续运行。

1.1.2 应用场景

假如有三种业务都需要在同一台服务器上运行,为了方便管理,可以创建三个screen窗口并命名,一个screen窗口运行一种业务, 可以配合pm2或者nohup一起使用; 当你需要启动业务1的程序或者检查业务1的代码运行情况时,只需进入业务1对应的screen窗口即可,避免混淆.

1.1.3 常用指令

1.创建一个screen会话窗口,并自动进入刚创建的窗口: screen -S 名称
image.png
回车后,就会自动进入新建的窗口
image.png

2.从Screen会话中脱离, 回到主窗口: Ctrl + a + d
image.png

3.查看当前正在运行的screen会话:
screen -ls

  • 主窗口执行:

image.png

  • 子窗口("通过screen -S 名称"创建的窗口)执行:

image.png

4.在主窗口通过id或者name进入指定的screen会话: screen -r [id]或者[name]
image.png
回车后:
image.png

5.删除screen会话:

  • 方法1:子窗口—>进入某个screen会话窗口,输入exit回车
  • 方法2:主窗口—>在主窗口,执行screen -S [id]或者[name] -X quit关闭指定screen会话

image.png


2. 进程管理工具

2.1 nohup

2.1.1 介绍

  • nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
  • 系统自带命名,无需额外安装.

2.2.2 常用指令

1.用来测试的demo.py

import time
import datetime


while 1:
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print(f"{now}:{'1'*10}")
    time.sleep(3)

2.执行脚本
nohup python3 -u demo.py > run.log 2>&1 &
后台执行demo.py 脚本,并重定向输入日志到run.log 文件

  • -u: 使python不启用缓冲. 如果不加-u, run.log中显示不出python代码中print的内容,这是因为python的输出有缓冲,导致run.log并不能够马上看到输出
  • 2>&1: 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 run.log 文件中
  • &: 让命令在后台执行,终端退出后命令仍旧执行。

image.png

3.查看日志
tail -f run.log

  • -f: 循环读取, 不断刷新日志

image.png

4.停止脚本
如果要停止运行,使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:
ps -aux | grep "demo.py"
image.png
kill -9 进程号PID
image.png


2.2 pm2

2.2.1 介绍

  • 常用来管理node进程, 也可以用来管理python等脚本程序.
  • 需要额外安装.

2.2.2 安装

# 先下载安装包,并上传到服务器[https://nodejs.org/en/download/], 然后解压
tar xvf node-v12.18.3-linux-x64.tar.xz -C /usr,可以解压到 /usr下 (并且将其改名为node, 改名只是为了简洁)

# 解压文件的 bin 目录底下包含了 node、npm 等命令,可以使用 ln 命令来设置软连接:
ln -s /usr/node/bin/node /usr/local/bin/
ln -s /usr/node/bin/npm /usr/local/bin/

# 这样node就安装好了,接下来我们安装pm2
全局安装 :npm install pm2 -g
安装好后在你的安装的node/bin目录下会出现一个pm2文件,同样设置软链接:
ln -sf /usr/node/bin/pm2 /usr/local/bin/

# 输入 `pm2 list`, 能看到进程页面,就是安装成功了

2.2.3 常用指令

1.启动python文件, --interpreter指定解释器: pm2 start demo.py -x --interpreter python3
image.png

2.查看已经启动的pm2进程: pm2 list
image.png

3.同一个python文件启动3个实例: pm2 start demo.py -x --interpreter python3 -i 3
image.png

4.查看所有在运行程序的日志: pm2 logs
image.png

5.查看某个id的日志: pm2 logs <id>
image.png

6.删除某个id进程: pm2 delete <id>
image.png

7.删除所有进程: pm2 delete allpm2 kill
image.png
image.png

8.清除pm2产生的日志:pm2 flush
image.png

9.也可以通过脚本定时删除pm2产生的日志:以下脚本是一天清除一次,可以自行修改sleep后面的参数.

#!/bin/bash
while true 
do
    now=`date +"%Y-%m-%d %H:%M:%S"` 
    echo $now
    echo "正在清除pm2日志..."
    pm2 flush
    echo "--------"
    # 1s:一秒, 1m:一分钟, 1h:一小时, 1d:一天
    sleep 1d
done

image.png


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值