前沿:由于此台服务器显卡经常全部丢失,所以需要持续记录显卡的运行状态。
1、系统:ubuntu18.04;
2、环境:python3.6;
3、查看显卡状态命令:“nvidia-smi”
4、后台运行 python 脚本:“nohup python3 -u nvidia.py > nvidia.out 2>&1 &”
5、开机自动运行脚本。
6、1.1-2021.01.04 版本日志:
①日志记录每天单独生成记录日志;
②判断显卡是否正常运行,若结果为空,循环等待;
③若检测到显卡丢失,则自动重启服务器。
1、系统:ubuntu18.04;
2、环境:python3.6;
3、查看显卡状态命令:“nvidia-smi”
4、后台运行 python 脚本:“nohup python3 -u nvidia.py > nvidia.out 2>&1 &”
5、开机自动运行脚本。
6、1.1-2021.01.04 版本日志:
①日志记录每天单独生成记录日志;
②判断显卡是否正常运行,若结果为空,循环等待;
③若检测到显卡丢失,则自动重启服务器。
1.0-2020.12.30 版本源代码如下:
#!/usr/bin/python3
import os
import datetime
import time
filepath = 'nvidia.log'
def nvidia_go():
while True:
f = open(filepath,'a')
time_val = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
f.write(time_val+"\n")
val = os.popen("nvidia-smi")
for v in val:
f.write(v+"\n")
f.write('*****************************************************************\n')
f.close()
time.sleep(60)
nvidia_go()
1.1-2021.01.04 版本源代码如下:
#!/usr/bin/python3
#!/usr/bin/python3
import os
import datetime
import time
import re
filepath = '/root/nvidia/'
def nvidia_go():
#f=open(filepath,'a')
#f.write("Sleep 180s, Please wait...\n")
#f.close()
#time.sleep(180)
while True:
f_name = datetime.datetime.now().strftime('%Y%m%d')
file_log = filepath+f_name
f = open(file_log,'a')
time_val = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
f.write('********************************************************************************\n')
f.write(time_val+"\n")
val = os.popen("nvidia-smi")
while not val:
f.write("Please wait soft start...\n")
time.sleep(1)
for v in val:
f.write(v+"\n")
result = re.search("GPU is lost",v)
if result:
r = open("/root/nvidia/reboot.log",'a')
r.write('********************************************************************************\n')
r.write(time_val+"\n")
r.write("GPU is lost, Server will be reboot!\n")
r.close()
f.close()
os.popen("reboot")
f.close()
time.sleep(60)
nvidia_go()
开启开机自启:
1、建立 rc-local.service 文件
sudo vi /etc/systemd/system/rc-local.service
2、将下列内容替换 rc-local.service 文件
1、建立 rc-local.service 文件
sudo vi /etc/systemd/system/rc-local.service
2、将下列内容替换 rc-local.service 文件
[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target
3、创建文件 rc.local
sudo vi /etc/rc.local
4、将下列内容复制进 rc.local 文件
#!/bin/sh -e # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /root/nvidia.sh>/root/nvidia.sh.log 2>&1 exit 0
5、给 rc.local 加上权限
sudo chmod +x /etc/rc.local
6、启用服务
sudo systemctl enable rc-local
7、启动服务并检查状态
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
8、创建编辑 nvidia.sh 文件
#!/bin/bash #nvidia.sh /usr/bin/nohup /usr/bin/python3 -u /root/nvidia.py > /root/nvidia.txt 2>&1 &
