caffe之路-SIGTERM信号捕捉

Caffe在1.0版本仅支持两种信号的处理: 1) SIGHUP 2) SIGINT

  • SIGHUP:caffe接收到此信号后进行snapshot,并不会中断caffe的训练.
  • SIGINT:caffe接收到此信号后进行snapshot,并退出.

参考issue #2012对这个问题的讨论.在PR 2253中对这两种信号做了支持,在Solver中回调信号检查函数.

当我们使用kill PID来停止caffe进程时发送的是SIGTERM(15)信号,caffe并没有处理,将直接退出.
如果我们想让它捕捉该信号并进行snapshot,可以添加代码使其与SIGINT的处理一致.
具体方法如下:
编辑src/caffe/util/signal_handler.cpp

void handle_signal(int signal) {
    switch (signal) {
    case SIGHUP:
      got_sighup = true;
      break;
    case SIGINT:
      got_sigint = true;
      break;
    case SIGTERM:
      got_sigint = true; // 当作SIGINT
      break;
    }
}

HookupHandler 与 UnhookHandler 中注册和取消SIGTERM:
sigaction(SIGTERM, &sa, NULL)

涉及基本的C语言信号处理函数,不再赘述.

时间: 2024-11-08 21:51:19

caffe之路-SIGTERM信号捕捉的相关文章

shell 脚本编程之信号捕捉和主机探测

shell 脚本编程之信号捕捉和主机探测 =============================================================================== 概述: =============================================================================== 主机探测 1.写一个脚本,探测192.168.0.0网段中主机在线状态 [[email protected] bin]# cat 

shell脚本临时文件生成和使用,信号捕捉

实例:生成临时文件记录apache进程号,杀死apache进程,删除临时文件 1 #!/bin/bash 2 #create_log.sh 3 4 #1.获取到所有httpd应用程序的进程号 5 #2.把进程号存入一个临时文件中 6 #3.从临时文件中取出所有的apache的进程号 7 #4.使用for循环用kill杀掉所有的httpd进程 8 #5.删除之前生成的临时文件 9 #6.输出关闭进程后的消息 10 #$$当前程序运行时候开辟的pid 11 12 tmpfile=$$.txt 13

2018-9-17-bash之信号捕捉

一.概述 我们在上一章当中示例了检测ip地址是否在线的脚本,但是有一个问题,运行的过程中,无论使用Ctrl+c怎么制止,并没有什么卵用,还是继续运行,直到将最后一个IP地址ping完,无法制止,只是将当前的ping操作结束,下一个ping操作就要运行,但是如果连续的按下快捷键,总有一个信号捕捉到,但只有被当前进程的脚本捕捉到才能够停止,而不是ping进程,这就是信号. 我们也可以手动定制信号捕捉的功能,那么如何自定义信号捕捉的处理,那么在ping操作时,由于信号捕捉不到,那么能不能在捕捉信号之后

Linux01-BASH脚本编程之信号捕捉及任务计划53

一.脚本编程知识点 1.获取变量中字符的长度:${#VARNAME} 2.变量赋值: a)${parameter:-word}:如果parameter为空或未定义,则变量展开为"word":否则,展开为parameter的值: 如:A=3 echo ${A:-30} unset A echo ${A:-30} b)${parameter:+word}:如果parameter为空或未定义,不做任何操作:否则,则展开为"word"值: 如:echo ${A:+30} A

信号捕捉及计划任务

查看本机硬件设备信息 1.cat /proc/cpuinfo 2.lsusb 3. lspci 4 hal-device stty –F /dev/console size 取文件大小 脚本编程知识点: 变量中字符的长度:${#VARNAME} 变量赋值等 ${parameter:-word}; 如果 parameter为空或未定义,则变量展开为"word",否则,展开为parameter的值. [[email protected] ~]# A=3 [[email protected]

2信号处理之:信号产生原因,进程处理信号行为,信号集处理函数,PCB的信号集,sigprocmask()和sigpending(),信号捕捉设定,sigaction,C标准库信号处理函数,可重入函数,

 1信号产生原因 2.进程处理信号行为 manpage里信号3中处理方式: SIG_IGN SIG_DFL                                            默认Term动作 a signal handling function 进程处理信号 A默认处理动作 term   中断 core    core(调试的时候产生) gcc –g file.c ulimit –c 1024 gdb a.out core ign      忽略 stop     停止

Linux 信号捕捉

pause函数 pause函数挂起调用它的进程,直到有任何消息到达. 调用进程必须有能力处理送达的信号,否则信号的默认部署就会发生. int pause(void); 只有进程捕获到一个信号的时候pause才返回,如果递送到的信号引发了对信号的处理,那么处理工作将在pause返回前执行. pause总是返回-1,并且将变量errno设置为EINTR. 发送信号和捕获信号是相辅相成的. 每个进程能够决定响应除了SIGSTOP和SIGKILL之外的其他所有信号. SIGSTOP和SIGKILL不能被

linux下Bash局部变量及信号捕捉等概念解释

1.脚本配置文件 /etc/rc.d/init.d/服务脚本可支持配置文件,并放置在/etc/sysconfig/下同名的配置文件 2.局部变量:只对本函数内部等有效,关键字为local 以两个脚本显示变量带或不带local时的区别 2.1编写如下脚本:vim A1.sh #!/bin/bash A=1 SUM() { A=8 } SUM  调用函数 for I in `seq $A 10`; do echo -n "$I   " done echo ./A1.sh:执行脚本显示结果如

bash脚本创建临时文件以及信号捕捉

脚本创建临时文件: #mktemp 创建临时文件或目录 #mktemp [OPTION] FILE.RANDOMLENGTH [OPTION] -d 创建目录. 例如: #mktemp /tmp/file.XX /tmp/file.36 #mktemp /tmp/file.XX /tmp/file.37 #mktemp /tmp/file.XX /tmp/file.38 #mktemp /tmp/file.xxxx /tmp/file/1234 #mktemp /tmp/file.xxxx /t