TSINGSEE青犀视频开发的RTSP协议视频智能分析平台EasyNVR是目前市面上比较完善且稳定的视频流媒体直播分发平台。EasyNVR内接入的视频通道都可以通过平台进行网页直播,并且支持市面上大部分的RTSP/Onvif协议设备:IP Camera/NVR/DVR/编码器等。
当我们测试的时候,有时会出现EasyNVR通道在线,也能够正常生成快照,并且其他功能都是正常的,但是视频无法播放的情况。
由于其他功能正常,所以我们查看logs文件下的log日志也无法检查出原因,说明EasyNVR本身运行都很正常。
随后我们发现nginx的进程不存在了,观察日志发现到某一时间,就不打印了,这个停止打印的时间,应该就是nginx正常运行的最后时间,停止打印后,nginx进程就停止了。
发现问题所在后,我们就在EasyNVR添加了定时任务,定时去监听nginx的进程是否存在,如果不存在就重新启动nginx,以此来避免此类问题的出现。
在EasyNVR上实现该功能之前先通过以下代码实现的小工具进行分析。
-
func main() {
-
var inputStr
string
-
for {
-
fmt.Println(
"---------------------------------------------------")
-
fmt.Print(
"1->退出 ")
-
fmt.Print(
"2->显示进程 ")
-
fmt.Print(
"3->结束进程 ")
-
fmt.Println(
"4->显示全部进程")
-
fmt.Println(
"---------------------------------------------------")
-
fmt.Scanln(&inputStr)
-
if inputStr ==
"1" {
-
fmt.Println(
"已退出...")
-
break
-
}
else
if inputStr ==
"2" {
-
fmt.Print(
"请输入进程名称:")
-
var processName
string
-
fmt.Scanln(&processName)
-
if
len(processName) ==
0 {
-
fmt.Println(
"进程名称不可为空!")
-
}
else {
-
text :=
"imagename eq " + processName +
"*"
-
listProcess(text)
-
}
-
}
else
if inputStr ==
"3" {
-
fmt.Print(
"请输入要结束的进程名称:")
-
var processName
string
-
fmt.Scanln(&processName)
-
if
len(processName) ==
0 {
-
fmt.Println(
"进程名称不可为空!")
-
}
else {
-
text :=
"imagename eq " + processName +
"*"
-
killProcess(text)
-
}
-
}
else
if inputStr ==
"4" {
-
listAllProcess()
-
}
else {
-
fmt.Println(
"请输入正确的参数!")
-
}
-
}
-
fmt.Scanln(&inputStr)
-
}
-
-
func listProcess(text string) {
-
fmt.Println(text)
-
cmd := exec.Command(
"tasklist",
"/fi", text)
-
out, err := cmd.CombinedOutput()
-
if err !=
nil {
-
log.Fatal(err)
-
}
-
fmt.Println(
string(out))
-
}
-
func listAllProcess() {
-
cmd := exec.Command(
"tasklist")
-
out, err := cmd.CombinedOutput()
-
if err !=
nil {
-
log.Fatal(err)
-
}
-
fmt.Println(
string(out))
-
}
-
-
func killProcess(text string) {
-
cmd := exec.Command(
"taskkill",
"/f",
"/t",
"/fi", text)
-
out, err := cmd.CombinedOutput()
-
if err !=
nil {
-
log.Fatal(err)
-
}
-
fmt.Println(
string(out))
-
}
-
Windows下可以通过该方法查询nginx进程是否存在:
nginx进程不存在输出:
nginx进程存在输出:
转载:https://blog.csdn.net/EasyNVR/article/details/113615208
查看评论