精华内容
下载资源
问答
  • Linux下应用进程消失原因分析

    千次阅读 2019-08-23 16:59:40
    应用部署在Linux环境下,如果出现未知原因导致应用进程被杀(应用日志中没有任何异常现象,日志出现中断现象),如果对于进程消失原因没有特别明确的方向,可以考虑从系统日志(/var/log/messages)方面查找原因。...

    应用部署在Linux环境下,如果出现未知原因导致应用进程被杀(应用日志中没有任何异常现象,日志出现中断现象),如果对于进程消失原因没有特别明确的方向,可以考虑从系统日志(/var/log/messages)方面查找原因。 命令参考

    egrep -i 'killed process' /var/log/messages
    
    ## 或:
    egrep -i -r 'killed process' /var/log
    
    ## 或:
    journalctl -xb | egrep -i 'killed process'
    
    ## 或:
    dmesg | egrep -i -B100 'killed process'
    
    ## 或:
    cat /var/log/messages | grep Kill

    若是发现没有/var/log/messages文件,解决方法参考 https://blog.csdn.net/C_Major/article/details/51321684

    日志示例

    [root@abc bin]# dmesg | egrep -i -B100 ‘killed process’ 
    …… 
    省略部分日志 
    …… 
    [5979106.650296] Out of memory: Kill process 1392 (java) score 892 or sacrifice child 
    [5979106.650361] Killed process 1392 (java) total-vm:3794656kB, anon-rss:1727856kB, file-rss:0kB

    [root@abc bin]# egrep -i ‘killed process’ /var/log/messages 
    Oct 16 22:06:39 iZm5e3cpdh44ekrxg7q4nzZ kernel: Killed process 1392 (java) total-vm:3794656kB, anon-rss:1727856kB, file-rss:0kB

    说明

    通常在多应用集中部署在一台机器上,管理不当或应用压力突增情况下容易出现该问题,Linux系统在内存不足等条件下会主动干预进程(OOM-Killer机制)。在多实例应用部署时,需要注意对内存的分配。

    二、可能系统重启造成进程没了

    最近发现每隔一段时间,某一台机器线上的服务总是挂掉,进程直接就消失了,通过执行last reboot 查看机器最近都什么时间是否重启过,发现机器竟然有好多重启记录。

    提供几种最简便的查看上一次系统的启动时间或者系统到现在已经运行了多长时间:

    1.who命令:

    2.last reboot命令

    3.top命令:


    系统启动到现在运行了多长时间,来推断重启是在哪一天
    4.uptime命令:


    跟top是一样的
    5.w命令


    跟top也是一样的

     

     

    展开全文
  • linux命令dmesg查看进程被杀死原因

    千次阅读 2018-02-07 20:24:00
    可以看到原因:虚拟机总共内存8082608KB,结果python项目就消耗掉了7341764KB,内存泄露,导致python进程被系统杀死     顺带介绍下watch命令: 这个命令可以实时跟新监控的内容 1、tailf log/web.log 就会看到...

    有一次一个python进程挂了,使用了下这个命令。

    可以看到原因:虚拟机总共内存8082608KB,结果python项目就消耗掉了7341764KB,内存泄露,导致python进程被系统杀死

     

     

    顺带介绍下watch命令:

    这个命令可以实时跟新监控的内容

    1、tailf log/web.log 就会看到屏幕不停的增加显示新的日志

    2、watch "tail -20 log/web.log" 屏幕只会输出20条最新的日志,而且屏幕的这20条日志内容,随着时间是话刷新的。如图,每2秒刷新一次

     

     

    参考:http://www.runoob.com/linux/linux-comm-dmesg.html

    https://linux.cn/article-3587-1.html#3_14174

    展开全文
  • linux进程退出时,结束子进程

    千次阅读 2021-11-28 17:02:56
    进程创建p1, p2两个进程,在主进程结束同时也让子进程结束! 代码 #include <stdio.h> #include <signal.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #...

    简介

    主进程创建p1, p2两个进程,在主进程结束同时也让子进程结束!

    代码

    #include <stdio.h>
    #include <signal.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    
    pid_t p1, p2;
    
    void my_handler(int s){
      switch(s){
      case SIGINT:
        printf("caught:%d\n", s);
        exit(1);
        break;
      case SIGTERM:
        printf("caught:%d\n", s);
        kill(p1, 9);
        kill(p2, 9);
        waitpid(p1, NULL, 0);
        waitpid(p2, NULL, 0);
        exit(1);
        break;
      }
    }
    
    int main(){
      struct sigaction sigHandler;
      sigHandler.sa_handler = my_handler;
      sigemptyset(&sigHandler.sa_mask);
      sigHandler.sa_flags = 0;
    
    //捕获ctrl+c信号
      sigaction(SIGINT, &sigHandler, NULL);
      //捕获kill pid信号
      sigaction(SIGTERM, &sigHandler, NULL);
    
    
      //  pid_t p1, p2;
    
      if((p1 = fork()) == 0){
      //进程1
        while(1){
          printf("%d\n", getpid());
          sleep(3);
        }
      }else if((p2 = fork()) == 0){
      //进程2
        while(1){
          printf("%d\n", getpid());
          sleep(3);
        }
    
      }
      //主进程
      while(1){
        printf("hello %d \n", getpid());
        sleep(2);
      }
      
      return 0;
    }
    
    
    

    结果

    1. CTRL+C三个进程同时结束

    在这里插入图片描述

    2. kill 主进程

    注意:此方式在kill 子进程的时候,主进程也同时结束了!!!在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Linux - 定位进程异常退出

    千次阅读 2020-09-25 13:28:13
    /var/log/messages 日志文件中放了进程退出的信息。 dmesg | egrep -i -B100 'killed process' 用 strace 命令追踪系统调用和信号 手册:https://man7.org/linux/man-pages/man1/strace.1.html 具体参数参考这里:...

    系统上启动守护进程后,有时会异常退出。

    查看日志

    /var/log/messages 日志文件中放了进程退出的信息。

    dmesg | egrep -i -B100 'killed process'
    

    用 strace 命令追踪系统调用和信号

    手册:https://man7.org/linux/man-pages/man1/strace.1.html

    具体参数参考这里:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html

    查看 time 命令的系统调用

    $ strace time
    execve("/usr/bin/time", ["time"], 0x7ffd79009a30 /* 25 vars */) = 0
    brk(NULL)                               = 0x55588fa87000
    access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
    access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
    fstat(3, {st_mode=S_IFREG|0644, st_size=27599, ...}) = 0
    mmap(NULL, 27599, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f31de9b4000
    close(3)                                = 0
    access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\34\2\0\0\0\0\0"..., 832) = 832
    fstat(3, {st_mode=S_IFREG|0755, st_size=2030544, ...}) = 0
    mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f31de9b2000
    mmap(NULL, 4131552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f31de3a3000
    mprotect(0x7f31de58a000, 2097152, PROT_NONE) = 0
    mmap(0x7f31de78a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7f31de78a000
    mmap(0x7f31de790000, 15072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f31de790000
    close(3)                                = 0
    arch_prctl(ARCH_SET_FS, 0x7f31de9b3500) = 0
    mprotect(0x7f31de78a000, 16384, PROT_READ) = 0
    mprotect(0x55588f2b2000, 4096, PROT_READ) = 0
    mprotect(0x7f31de9bb000, 4096, PROT_READ) = 0
    munmap(0x7f31de9b4000, 27599)           = 0
    write(2, "Usage: time [-apvV] [-f format] "..., 177Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
           [--portability] [--format=format] [--output=file] [--version]
           [--quiet] [--help] command [arg...]
    ) = 177
    exit_group(1)                           = ?
    +++ exited with 1 +++
    

    查看特定进程

    # strace -T -tt -e trace=all -p 12365
    strace: Process 12365 attached
    11:14:47.591011 poll([{fd=12, events=POLLIN|POLLERR|POLLHUP}], 1, 259200000) = -1 ENOSYS (Function not implemented) <0.000039>
    
    11:20:01.580555 restart_syscall(<... resuming interrupted poll ...>) = -1 ENOSYS (Function not implemented) <0.000022>
    11:20:01.580640 recvfrom(12, 0x7fdd8e569000, 8192, MSG_DONTWAIT, NULL, NULL) = -1 ENOSYS (Function not implemented) <0.000031>
    11:20:01.580707 rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], 0x7ffce5c022c0, 8) = -1 ENOSYS (Function not implemented) <0.000068>
    11:20:01.580826 close(21)               = -1 ENOSYS (Function not implemented) <0.000050>
    11:20:01.580912 access("/tmp/myweb/Composer/vendor/composer/../php-amqplib/php-amqplib/PhpAmqpLib/Exception/AMQPHeartbeatMissedException.php", F_OK) = -1 ENOSYS (Function not implemented) <0.000023>
    
    展开全文
  • linux 进程退出5种方式

    千次阅读 2020-07-05 19:05:59
    linux系统编程之进程(四):进程退出exit,_exit区别即atexit函数 一,进程终止有5种方式: 正常退出: 从main函数返回 调用exit 调用_exit 异常退出: 调用abort 由信号终止 二,exit和_exit区别: ...
  • fork 创建子进程,由父进程检测子进程是否退出,子进程退出后重新启动。
  • Linux进程控制--进程退出和等待

    千次阅读 2018-11-03 21:44:45
    Linux进程退出 1. 进程退出的场景 代码运行完毕正常退出,结果正确 代码运行完毕正常退出,结果不正确 异常退出 2 .进程常见退出方式 正常退出 从main() 函数中返回return退出 调用exit()函数退出 调用_exit()...
  • linux 查看进程命令

    万次阅读 2020-02-10 17:55:56
    Linux 查看进程之PS命令 要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程运行状态。Linux 系统中 我们可以使用 ps 命令查看进程。 ps 命令介绍 ps(process status) 命令是 ...
  • Linux进程退出

    千次阅读 2016-08-23 15:43:28
    编译好,然后运行,然后在shell里面查看进程退出码,键入:echo $?,我们发现拿到的进程退出码是255。 我们返回的明明是-1,为什么拿到的却是255呢?还得从进程的状态码开始讲起,我们知道,当一个进程退出的时候...
  • 父进程等待子进程退出并收集子进程退出状态 1.父进程为什么要等待子进程退出? 创建子进程目的:------干活 我们要知道干活结束没。 子进程退出状态不被收集,变成僵尸进程 等待:wait,waitpid函数: #include &...
  • linux查看java进程命令

    千次阅读 2021-02-12 10:53:14
    一、linux查看进程的命令 有ps、pstree、pgrep等1、ps显示进程信息,参数可省略-aux 以BSD风格显示进程 常用-efH 以System V风格显示进程-e , -A 显示所有进程a 显示终端上所有用户的进程x 显示无终端进程u 显示详细...
  • linux基础——进程退出及资源回收

    千次阅读 2020-02-05 22:05:41
    文章目录进程退出returen 和 exit代码示例注册进程结束调用函数代码示例(on_exit):atexit代码示例(atexit)进程资源的回收代码示例wait回收进程资源代码示例waitpid代码示例给指定进程发送信号(kill)僵尸...
  • LINUX监视进程退出

    千次阅读 2014-02-11 16:43:18
    1、为解决httpd、pppd两个进程退出导致WEB服务器不能访问、PPPD不拨号上线,开启conpid进程定期来检测这两个进程是否运行。 2、该进程编译到busybox中,功能是每隔1分钟查找一下httpd、pppd两个进程是否存在,当
  • Linux检测子进程异常退出

    千次阅读 2019-08-18 00:50:51
    waitpid(), WIFEXITED(), WIFSIGNALED() 检测进程异常、崩溃退出等. 缺失 libgcc_s.so 需安装 ... ...
  • 在实际开发中难免会处理进程间的关系,最常见的是父子进程的相互监督。父进程等待子进程,或者自进程知道父进程运行是否结束...本文章提供了如何实现父进程监听子进程结束的方案,以及子进程如何知道父进程退出的方案。
  • Linux运行程序时,程序进程莫名退出(被杀死)

    千次阅读 多人点赞 2021-01-16 18:03:36
    Linux运行程序时,程序进程莫名退出(被杀死) 1.知识点 1)Linux程序进程被杀,日志突然中止,可以考虑是否因为程序占用内存过高,导致系统内存不足,为避免系统崩溃,系统寻找内存占用最大的进程kill掉 2)也可能...
  • Linux进程如何守护防退出

    千次阅读 2018-04-30 21:56:11
    这可能是由于系统资源不足引起或者其它原因造成进程退出,可以参考以下方法添加自动守护进程的sh代码...第一步:书写检测nat123进程代码,并将其保存为文件autocheck.sh放在某文件夹下,(以下sh代码中的具体路径请根据...
  • linux 进程 崩溃被杀 原因查找

    千次阅读 2020-10-01 18:08:02
    目录 到底是什么信号 OOM ...对于C、C++,最有名的就是段错误(segmentation fault),如果在Linux下面,那么会生成coredump,程序员通过gdb(有可能)可以分析出crash的原因。当然,要生成coredum
  • linux进程退出控制

    千次阅读 2018-12-26 11:30:46
    Linux系统中,当进程退出时,必须释放它所拥有的资源,并通过某种方式告诉父进程。进程的退出一般是显示或隐式地调用了eixt(),或者接受了某种信号。不管是由于什么原因退出,最终都调用了do_exit。 进程退出的...
  • Linux查看所有正在运行的进程

    千次阅读 2021-01-27 05:03:28
    可以使用ps命令。...ps命令输入下面的ps命令,显示所有运行中的进程:# ps aux | less其中,-A:显示所有进程a:显示终端中包括其它用户的所有进程x:显示无控制终端的进程任务:查看系统中的每个...
  • linux c 退出进程的代码

    千次阅读 2019-02-07 14:06:53
    将写内容过程经常用的一些内容片段收藏起来,如下的资料是关于linux c 退出进程的内容。 #include<stdlib.h> voidexit(int status); voidabort(void) #include<unistd.h> void_exit(int status) #...
  • linux中保证进程退出

    千次阅读 2018-07-31 22:33:02
    1. 需求  在实际编写应用程序的时候,可能会出现如下场景,你正在开发阶段,但是你的上层,可能也要测试,此时,你的程序不定时的因为某种原因会蹦掉,但其实你不关心,因为在... (2)在进程退出的时候,重启进...
  • 【转】Linux查看进程的命名空间

    千次阅读 2019-08-26 10:25:29
    机制介绍 Linux的命名空间机制提供了一种资源隔离的解决方案。PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。...不同Container内的进程属于不同的Namespace,彼此透明,互不干扰。 Nam...
  • linux 平台上一个进程退出了,还可以根据进程Id获取进程退出码吗?
  • 一、vnstat使用,查看接口统计报告 vnstat -i eth0 -l #实时流量情况 还有其他命令使用--help查看 ctrl+c结束后,会显示监控期间的流量统计结果 二、iftop使用,检查带宽使用...
  • Linux查看java进程

    千次阅读 2020-04-25 21:55:19
    linux下 1.查看"java" 相关的进程信息ps-ef|grepjava ps -ef|grep java 2. 停止特定java进程命令:kill-9java进程序号 kill-9java进程序号 ...
  • Linux 之exit() 进程退出函数

    千次阅读 2020-10-22 01:05:59
    进程退出一般有三种方法: 1、在main函数中使用return关键字,使用return后系统会调用exit()函数来终止进程。 2、手动调用exit()来终止进程。 3、调用_exit() 来终止进程。 exit() 和 _exit() 函数 头文件 #...
  • linux查看进程线程的方法

    万次阅读 2019-05-17 10:54:21
    Linux查看线程数的三种方法 1、top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。 2、ps xH 手册中说:H Show threads as if they were processes ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 281,296
精华内容 112,518
关键字:

linux查看进程退出原因

linux 订阅