nohup后台运行程序并记录PID
最简单的nohup方式
使用nohup命令,最后加上&即可:
# nohup xxxx xxxx &
nohup python train.py &
Ctrl + C不会中断程序的执行;- nohup会将所有的输出默认写入在当前路径的
nohup.out文件中。
如下所示:

如果你的程序有后缀参数,可以这样优雅的 写:
nohup python train.py --log_iter 1 \ # 所有的参数最后加 \
--vis_log_iter 1 \
--nepochs 10 \
--bsz 10 \
& # 将 & 放在最后即可`
指定log输出路径和文件的nohup方式
# nohup xxxx xxxx > xxx(ur_log_file) 2>&1 &
nohup python train.py > train.log 2>&1 &
- nohup会将所有的输出默认写入在你指定的的
log_file文件中,我这里的就是train.log。 带参数优雅版:
nohup python train.py --log_iter 1 \ # 所有的参数最后加 \
--vis_log_iter 1 \
--nepochs 10 \
--bsz 10 \
> runs_seg/train.log 2>&1 &`
指定log输出路径和文件并记录程序的PID
# nohup xxxx xxxx > xxx(ur_log_file) 2>&1 & echo $! > xxx(pid file)
nohup python train.py > train.log 2>&1 & echo $! > run.pid
- nohup会将所有的输出默认写入在你指定的的
log_file文件中,我这里的就是train.log; - 同时会将当前python的PID记录在
run.pid中,方便你中止程序(一般训练中都用会使用多进程,所以实际上会有多个程序,但是nohup只会记录当前启动的那个程序的PID,不过不影响,因为你只要杀掉1个子进程,所有进程都会中止)。
运行bash脚本
# nohup sh xxxx.sh 可跟参数 > train.log 2>&1 &
nohup sh tools/dist_train_semi.sh configs/semi_bevdet/semi_bevdet_baseline.py 8 > train.log 2>&1 &