Linux进程是否正在运行?

时间:2013-07-08 01:08:04

标签: linux command-line

我的一些人正在使用神经网络程序,该程序必须在结束前运行几天。

对于某些电源问题,在fem分钟内,由于没有休息,计算机一直在运行。但是,我不知道是否以某种方式影响了运行过程。她告诉我,到目前为止,一些文件应该被这个过程复制,但到目前为止还没有。

我想知道,我还能做些什么来检查过程是否正常运行?到目前为止我做了什么:

为了澄清,脚本tt13.sh调用运行程序prog.sh的脚本ca。三个电话是针对计算机的三个核心进行的。

$ htop -u katia

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                 
 2464 katia     20   0 2059m 2.0g  624 R  99.8 26.1  28879:00 ca                                                                      
 2469 katia     20   0 2058m 2.0g  624 R  99.8 26.1  28879:04 ca                                                                      
 2459 katia     20   0 2058m 2.0g  624 R  99.5 26.1  28879:06 ca                                                                      
 2455 katia     20   0 16540 1444 1228 S   0.0  0.0   0:00.00 tt13.sh                                                                 
 2458 katia     20   0 16536 1396 1176 S   0.0  0.0   0:00.00 bash                                                                    
 2460 katia     20   0 16540 1448 1228 S   0.0  0.0   0:00.00 tt13.sh                                                                 
 2463 katia     20   0 16536 1392 1176 S   0.0  0.0   0:00.00 bash                                                                    
 2465 katia     20   0 16540 1448 1228 S   0.0  0.0   0:00.00 tt13.sh                                                                 
 2468 katia     20   0 16536 1392 1176 S   0.0  0.0   0:00.00 bash   

此外:

$ lsof -p 2459
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
ca      2459 katia  cwd    DIR    8,5     4096 3670017 /tmp/program_13
ca      2459 katia  rtd    DIR    8,1     4096       2 /
ca      2459 katia  txt    REG    8,5    27897 3670034 /tmp/program_13/ca
ca      2459 katia  mem    REG    8,1  1811160  130374 /lib/x86_64-linux-gnu/libc-2.15.so
ca      2459 katia  mem    REG    8,1  1030536  130398 /lib/x86_64-linux-gnu/libm-2.15.so
ca      2459 katia  mem    REG    8,1   149312  130622 /lib/x86_64-linux-gnu/ld-2.15.so
ca      2459 katia    0w   CHR    1,3      0t0    3076 /dev/null
ca      2459 katia    1w   REG    8,5        0 5242882 /tmp/results13/251.out
ca      2459 katia    2w   REG    8,1     1059  130681 /home/katia/nohup.out
ca      2459 katia    4w   REG    8,5        0 3670036 /tmp/program_13/basi251.out (deleted)

最后:

$ ls -l /proc/2459/fd
total 0
l-wx------ 1 katia katia 64 Jul  7 21:47 0 -> /dev/null
l-wx------ 1 katia katia 64 Jul  7 21:47 1 -> /tmp/results13/251.out
l-wx------ 1 katia katia 64 Jun 17 19:00 2 -> /home/katia/nohup.out
l-wx------ 1 katia katia 64 Jul  7 21:47 4 -> /tmp/program_13/basi251.out (deleted)

“删除”是什么意思?另外,我可以做些什么来检查过程健康状况?

还有其他想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您拥有该程序的源代码,并且该程序是使用调试信息编译的,则可以使用gdb -p pid /path/to/executable附加到该程序。有了它,你可以四处寻找,看看程序的内部状态是否符合你的预期。一旦您满意,您就可以从流程中分离出来,并且它将从中断处继续执行。

对于'已删除'文件:在UNIX和Linux中,open新的临时文件完全合法且非常常见,然后立即unlink。由于文件系统inode的工作方式,只要进程打开,该文件就会继续存在。但是,它不会有一个目录条目,您可以通过它来访问它;只有那个打开的文件句柄才能使用它。当进程关闭文件(或进程退出)时,文件的内容也将消失。