nohup实现python脚本后台运行(防止服务器连接中断影响任务中断)

服务器上运行代码会出现这样的问题,比如需要跑大模型这样几个小时或者几天的任务。肯定不可能人一直守着电脑,因为一旦电脑关闭或者网络中中断,服务器和电脑就会断开,一旦连接断开,任务就会中断,导致之前的任务就前功尽弃。所以就提出了nohup的用法,能够使任务直接在服务器上运行,即使任务调也无所谓。文本介绍了相关用法和介绍。

nohup用法介绍

用法很简单,照着去套模版就行

nohup commandtorun > output.log 2>&1 &

commandtorun:换成大家的具体命令
output.log:如果后台跑命令了是看不到任务日志的,这时候就需要把任务日志放到一个文件里,因为这样的话可以随时看任务日志,任务日志查询方法推荐使用tail -fn 50 output.log(实时动态查询日志的最后50行),后面会有例子去介绍。
照着模版就行了,其余的想知道什么意思直接百度吧,讲的更具体。

注意!!!
(1)commandtorun是自己的命令,我一般用的是python运行脚本,这里最好用全路径,不然可能会问题报错,都是之前踩的坑。举例讲解。
比如在路径/root/scratch/MusePose/下要运行脚本extract_dwpose_from_vid.py,使用方法为

# 表明用当前环境下的python执行当前脚本的当前路径下的/data/Batch4_all_video文件
python extract_dwpose_from_vid.py --video_root ./data/Batch4_all_video

但是使用nohup时最好就要说明白,用的是那个环境下的python,执行的是哪个环境下的脚本,以及是哪个路径下的文件。就用如下的方法,所以显得很长,但逻辑简单。

# python虚拟环境/root/miniconda3/envs/AA/bin/python
# 执行脚本 /root/scratch/MusePose/extract_dwpose_from_vid.py
# 执行文件 --video_root /root/scratch/Moore-AnimateAnyone/data/Batch4_all_video
# 日志存放位置 /root/scratch/Moore-AnimateAnyone/nohup_0818_Batch4.out
nohup /root/miniconda3/envs/AA/bin/python /root/scratch/MusePose/extract_dwpose_from_vid.py --video_root /root/scratch/Moore-AnimateAnyone/data/Batch4_all_video  > /root/scratch/Moore-AnimateAnyone/nohup_0818_Batch4.out 2>&1 &

接下来直接上项目实例

一、准备实例的数据(和文章主体无关)

将h100服务器数据传到229下

h100的数据内容:
/root/scratch/Moore-AnimateAnyone/data/Batch4_all_video
/root/scratch/Moore-AnimateAnyone/data/Batch5_all_video
/root/scratch/Moore-AnimateAnyone/data/Batch6_all_video
需要传送至229的服务器位置路径:
/root/scratch/Moore-AnimateAnyone/data

二、使用nohup挂载任务

# 在终端分别写入三行命令
(1)
nohup /root/miniconda3/envs/AA/bin/python /root/scratch/MusePose/extract_dwpose_from_vid.py --video_root /root/scratch/Moore-AnimateAnyone/data/Batch4_all_video > /root/scratch/Moore-AnimateAnyone/nohup_0818_Batch4.out 2>&1 &
(2)
nohup /root/miniconda3/envs/AA/bin/python /root/scratch/MusePose/extract_dwpose_from_vid.py --video_root /root/scratch/Moore-AnimateAnyone/data/Batch5_all_video > /root/scratch/Moore-AnimateAnyone/nohup_0818_Batch5.out 2>&1 &
(3)
nohup /root/miniconda3/envs/AA/bin/python /root/scratch/MusePose/extract_dwpose_from_vid.py --video_root /root/scratch/Moore-AnimateAnyone/data/Batch6_all_video > /root/scratch/Moore-AnimateAnyone/nohup_0818_Batch6.out 2>&1 &

三、探查任务日志,查看数据运行情况

tail -fn 50 /root/scratch/Moore-AnimateAnyone/nohup_0818_train_result.out

# 返回结果
nohup: ignoring input
avaliable gpu ids: [0]
Num videos: 3 batch_size = 3
Loads checkpoint by local backend from path: ./pretrained_weights/dwpose/yolox_l_8x8_300e_coco.pth
Loads checkpoint by local backend from path: ./pretrained_weights/dwpose/dw-ll_ucoco_384.pth
Process 0/3 video
_Igl9_b2_gQ_segment_02.mp4 /root/scratch/Moore-AnimateAnyone/data/test/_Igl9_b2_gQ_segment_02.mp4 /root/scratch/Moore-AnimateAnyone/data/test
Process 1/3 video
_J3LCIS3Vz4_segment_00.mp4 /root/scratch/Moore-AnimateAnyone/data/test/_J3LCIS3Vz4_segment_00.mp4 /root/scratch/Moore-AnimateAnyone/data/test
Process 2/3 video
_J3LCIS3Vz4_segment_02.mp4 /root/scratch/Moore-AnimateAnyone/data/test/_J3LCIS3Vz4_segment_02.mp4 /root/scratch/Moore-AnimateAnyone/data/test

# 关闭日志
ctrl + c

四、提前终止后台的任务

# 查看和python相关的后台任务
ps aux | grep python

# 返回结果
root         866  0.0  0.0  30280 19452 ?        Ss   Aug05   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root         992  0.0  0.0 107064 21448 ?        Ssl  Aug05   0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root      994452  0.0  0.0   4964  4224 ?        S    01:59   0:00 /root/.vscode-server/extensions/ms-python.python-2024.12.3-linux-x64/python-env-tools/bin/pet server
root      996587  0.4  1.9 13849324 1879700 ?    Sl   01:59   3:37 /root/.vscode-server/cli/servers/Stable-f1e16e1e6214d7c44d078b1f0607b2388f29d729/server/node /root/.vscode-server/extensions/ms-python.vscode-pylance-2024.8.1/dist/server.bundle.js --cancellationReceive=file:84bafefecf4e3c4e0f96a43440c7bf22651052b803 --experimentalserver --node-ipc --clientProcessId=994387
root     1093736  654  9.4 25272748 9344280 pts/6 Sl  17:03  21:02 /root/miniconda3/envs/AA/bin/python /root/scratch/MusePose/extract_dwpose_from_vid.py --video_root /root/scratch/Moore-AnimateAnyone/data/train_result
root     1094280  0.0  0.0   4040  2184 pts/6    S+   17:07   0:00 grep --color=auto python

# 发现pid 1093736是刚才执行的任务,结束掉
kill -9 1093736

# 如果不放心可以再使用ps aux | grep python探查下任务,会发现就没有这个任务了
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值