Linux后台持续运行py程序并输出到日志文件

现有sample.py程序其内容如下:

for i in range(1000):
    if i % 3 == 0:
        print(i)

直接在终端执行,命令:

python sample.py

在后台部署执行,并输出到日志文件,命令:

nohup python -u sample.py > zdz.log 2>&1 &

其中15075为进程号。

  • 前面加nohup 添加-u参数
  • >zdz.log 将输出信息输出到zdz.log(名称可以任意)文件中
  • 2输出错误信息到提示符窗口
  • 1表示输出信息到提示符窗口, 1前面的&注意添加, 否则还会创建一个名为1的文件
  • 最后的&表示后台运行
    查看日志文件:
  • tail -f zdz.log 实时查看日志文件
  • cat zdz.log 查看全部输出

如果使用GPU(后台)运行程序的话,命令:

CUDA_VISIBLE_DEVICES=2 nohup python -u train.py > zdz.log 2>&1 &
CUDA_VISIBLE_DEVICES=0,1,2,3 nohup python -u train.py > zdz.log 2>&1 & #
多GPU并行/数据并行

如果嫌上述命令太长,尤其是.py脚本后有各种各样的命令行参数时,可以提前把一长串命令放在.sh脚本中,如放在run.sh中:

CUDA_VISIBLE_DEVICES=2 
nohup python -u train.py --args='xx'
...
 > zdz.log 2>&1 &

运行:

bash run.sh

其中,CUDA_VISIBLE_DEVICES=2 表示使用2号GPU,可以使用命令:

nvidia-smi

查看GPU使用状态,在选择使用Memory-Use小的GPU:

查看Python程序的运行信息:

 ps aux | grep python

杀死某个进程(上图红色部分为进程号):

kill -9 进程ideg. kill -9 11778

你可能感兴趣的:(Linux后台持续运行py程序并输出到日志文件)