Linux后台持续运行py程序并输出到日志文件
2020-04-04 本文已影响0人
top_小酱油
现有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