精华内容
下载资源
问答
  • Linux查看一进程占用资源的情况

    千次阅读 2014-12-11 14:10:49
    linux系统中我们需要查看进程占用服务器资源的消耗情况,应该如何去实现呢?下面我们分两步来告诉大家: 首先,我们需要查看个进程的pid,假设pid为3007。 [root@localhost software]# top top - 15:...

    linux系统中我们需要查看某一进程占用服务器资源的消耗情况,应该如何去实现呢?下面我们分两步来告诉大家:

    首先,我们需要查看这个进程的pid,假设pid为3007。

    [root@localhost software]# top

    1. top - 15:42:20 up 49 min,  3 users,  load average: 0.00, 0.02, 0.00  
    2. Tasks: 339 total,   1 running, 338 sleeping,   0 stopped,   0 zombie  
    3. Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st  
    4. Mem:   1938716k total,   884396k used,  1054320k free,    32140k buffers  
    5. Swap:  4194296k total,        0k used,  4194296k free,   400232k cached  
    6.  
    7.   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
    8.   231 root      20   0     0    0    0 S  0.3  0.0   0:00.65 scsi_eh_1  
    9.  1925 www       20   0 98992 6276 3616 S  0.3  0.3   0:00.03 php-cgi  
    10.  3007 mysql     20   0 1476m  89m 5072 S  0.3  4.7   0:42.67 mysqld   
    11.     1 root      20   0  2900 1444 1224 S  0.0  0.1   0:03.15 init  
    12.     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd   
    13.     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/0  
    14.     4 root      20   0     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/0  
    15.     5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0  
    16.     6 root      RT   0     0    0    0 S  0.0  0.0   0:00.02 watchdog/0  
    17.     7 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/1  
    18.     8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/1  
    19.     9 root      20   0     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/1  
    20.    10 root      RT   0     0    0    0 S  0.0  0.0   0:00.02 watchdog/1  
    21.    11 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/2 

    使用命令:

    [root@localhost software]# top -p 3007

    1. top - 15:43:59 up 50 min,  3 users,  load average: 0.00, 0.02, 0.00  
    2. Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie  
    3. Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st  
    4. Mem:   1938716k total,   884272k used,  1054444k free,    32188k buffers  
    5. Swap:  4194296k total,        0k used,  4194296k free,   400232k cached  
    6.  
    7.   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
    8.  3007 mysql     20   0 1476m  89m 5072 S  0.0  4.7   0:42.69 mysqld 

    就可以实时查看这个进程的资源消耗情况了。

    展开全文
  • 一个很好用的小工具,可以查看当前系统进程的内存CPU资源消耗情况
  • 既然如此,我们可以想象,一个系统中的进程数量肯定是有上限的,不然系统资源就会不够用了,同样的道理,一个进程中的线程资源也是有上限的。 Linux中最多可以有多少个进程? 一.Linux中有一个命令可以帮助...

    说明

    进程:系统分配资源的载体,是程序运行的实例;

    线程:程序执行的最小单元,是进程中的一个实体用来执行程序,一个进程中有多个线程。

     

    既然如此,我们可以想象,一个系统中的进程数量肯定是有上限的,不然系统资源就会不够用了,同样的道理,一个进程中的线程资源也是有上限的。

     

     

    Linux中最多可以有多少个进程?

    一.Linux中有一个命令可以帮助我们查看系统中的进程上限

    [pigff@izbp13yd4r85qvk53t04mbz ~]$ ulimit -u
    4096


    这属于软限制,是可以改变的。也就是说在我的机器上最多可以有4096个进程,但是我可以通过改变这个参数的值来修改对于进程数量的软限制,比如说用下面的命令将软限制改到5120。


     ulimit -u 5120


     二.我们用pid_t来表示一个进程的pid,因此能表示的进程的范围一定不会超过pid_t类型的大小


    [pigff@izbp13yd4r85qvk53t04mbz ~]$ cat /proc/sys/kernel/pid_max
    32768


    pid_t实际上就是一个short类型变量,当然这里能表示的范围只是进程id最多表示到这么多,这只是一个理论值,实际上,由于内存等系统资源的限制,根本不会同时有这么多的进程存在。

     

    一个进程中最多可以有多少个线程?

     

    一、ulimit -n可以查看一个进程最多可以打开多少文件描述符数;

     

    Linux中线程占用内存中,取决于分配给线程的调用栈大小,可以用ulimit -s命令来查看大小(stack size (kbytes,-s)表示线程堆栈大小,一般常见的有10M或者是8M)。我们还知道,一个进程的虚拟内存是4G,在Linux32位平台下,内核分走了1G,留给用户用的只有3G,于是我们可以想到,创建一个线程占有了10M内存,总共有3G内存可以使用。于是可想而知,3G/10M=最大线程数,最多可以创建差不多300个左右的线程。 但实际会比这个数小一点,因为程序本身占内存,还有些管理线程。64位系统的不一样,64系统的线程数并不是简单是用 内存/线程栈 ,

    因此,进程最多可以创建的线程数是根据分配给调用栈的大小,以及操作系统(32位和64位不同)共同决定的。
     

     

     

     

     

     

     

      可以使用ulimit -s来设置stack size,设置的小一点开辟的线程就多。
        同时,

      /usr/include/bits/local_lim.h中的PTHREAD_THREADS_MAX限制了进程的最大线程数
      /proc/sys/kernel/threads-max中限制了系统的最大线程数

       查看公司的服务器:

       限制数为:  2^19
       实际测试结果:2^16

    三、最靠谱的方法还是自己写程序测试的结果

    #include<unistd.h>
    #include<stdlib.h>
    #include<pthread.h>
    #include<stdio.h>
     
    void* foo(void* param)
    {
    }
     
    int main()
    {
            int i = 0;
            pthread_t thread;
            while (1) {
                    if (pthread_create(&thread, NULL, foo, NULL) != 0)
                            break;
                    i ++;
            }
            printf("i = %d\n", i);
    }

    编译命令如下:

    g++ main.cpp -o main -lpthread

     执行结果:

    [root@localhost]# ./main

    i = 32747

    原文:

    https://blog.csdn.net/lvyibin890/article/details/82255047

    https://www.cnblogs.com/bugutian/p/9722240.html

    展开全文
  • 首先说说:僵尸进程是什么?僵尸进程是当子进程比父进程先结束...我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。进程停止后, 该进程就会从进程表中移除。僵尸进程啥危害?由于子进程的...

    1d2856e91843c8523c3b6d198be40830.gif

    首先说说:僵尸进程是什么?

    僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。

    我们都知道进程的工作原理。我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。进程停止后, 该进程就会从进程表中移除。

    僵尸进程啥危害?

    由于子进程的结束和父进程的运行是一个不同过程,父进程无法判断子进程什么时候结束. 或者说不知道 子进程什么时候结束,而丢失子进程结束时的状态信息呢? 不会。因为UNⅨ提供可用机制,这种机制就是:在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程释放. 但这样就导致了问题,如果进程不更新掉,那么保留的那段信息就不会释放,其进程号就会一直被占用,系统进程号有限,如果大量的产生僵尸进程,可能因为进程太多占用无法产生新的进程,这应该避免。

    1、那么如何查看僵尸进程呢?

    如何查看linux系统上的僵尸进程,或者如何统计有多少僵尸进程?

    命令:ps -ef | grep defunct

    或者查找状态为Z的进程,Z就是代表zombie process,僵尸进程的意思,使用top命令查看,如果状态为Z也就是(zombie process)说明它就是僵尸进程。

    Tasks: 85 total, 2 running, 82 sleeping, 0 stopped, 0 zombie

    top命令也可以查看。或者使用下面的命令:

    ps -ef | grep defunct | grep -v grep | wc -l

    2、如何杀死僵尸进程?

    一般僵尸进程很难直接kill掉,不过您可以kill父进程(僵尸父亲),“父亲”死后,僵尸进程成为”孤儿进程”,接着给init它始终会负责清理僵尸进程.紧随着父亲消失了,儿子也就跟着消失了。

    ps -e -o ppid,stat | grep Z | cut –d” ” -f2 | xargs kill -9

    kill -HUP `ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’`

    当然了,如果您精通其他语言的话,当真是简单方便

    3、如何避免僵尸进程?

    对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结 束,子进程将成为僵尸进程(zombie)从而占用系统资源。如果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。在Linux下 可以简单地将 SIGCHLD信号的操作设为SIG_IGN。

    signal(SIGCHLD,SIG_IGN); 

    用两次fork()参数,而且使紧跟的子进程直接退出,让孙子进程成为孤儿进程,从而init进程将负责清除这个孤儿进程。

    3b5f9d536a2ee04430aedf4ffa2dae85.pngc12ea83611c1b464b07415d2af3ad252.png

    展开全文
  • Linux查看某个进程所占用的资源

    千次阅读 2020-04-08 15:48:48
    Linux 上进行开发和运营维护的时候,免不了要查看一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个: 1:top -p pid 查看程序的情况 2:ps -aux | grep process_name 3:cat /...

    如何查看某进程占用内存情况

    在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个:

    1:top -p pid 查看程序的情况

    2:ps -aux | grep process_name

    3:cat /proc/pid/status
    这里会打印出当前进程详细的情况,其中,内存是 VmRSS。
    注:pid是要替换成一个id数字的。

    Linux中/proc/[pid]/status详细说明

    在这里插入图片描述

    参数解释

    Name 应用程序或命令的名字 
    State 任务的状态,运行/睡眠/僵死/ 
    SleepAVG 任务的平均等待时间(以nanosecond为单位),交互式任务因为休眠次数多、时间长,它们的 sleep_avg 也会相应地更大一些,所以计算出来的优先级也会相应高一些。 
    Tgid 线程组号 
    Pid 任务ID 
    Ppid 父进程ID 
    TracerPid 接收跟踪该进程信息的进程的ID号 
    Uid Uid euid suid fsuid 
    Gid Gid egid sgid fsgid 
    FDSize 文件描述符的最大个数,file->fds 
    Groups 
    VmSize(KB) 任务虚拟地址空间的大小 (total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页 
    VmLck(KB) 任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm) 
    VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss) 
    VmData(KB) 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据; (total_vm-shared_vm-stack_vm) 
    VmStk(KB) 任务在用户态的栈的大小 (stack_vm) 
    VmExe(KB) 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code) 
    VmLib(KB) 被映像到任务的虚拟内存空间的库的大小 (exec_lib) 
    VmPTE 该进程的所有页表的大小,单位:kb 
    Threads 共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。 
    SigQ 待处理信号的个数 
    SigPnd 屏蔽位,存储了该线程的待处理信号 
    ShdPnd 屏蔽位,存储了该线程组的待处理信号 
    SigBlk 存放被阻塞的信号 
    SigIgn 存放被忽略的信号 
    SigCgt 存放被俘获到的信号 
    CapInh Inheritable,能被当前进程执行的程序的继承的能力 
    CapPrm Permitted,进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的,CapEff是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性 
    CapEff Effective,进程的有效能力 
    

    注,进程状态:S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数。

    参考资料

    https://blog.csdn.net/wl1070325332/article/details/60876479

    展开全文
  • 请关注本头条号,每天坚持更新原创...在linux中,有一个命令允许您查看系统中的资源是如何使用(或浪费)的,我想快速解释一下如何监视运行在您机器上的进程。2. 统一查看正在运行进程的命令行工具-top答案很简单,...
  • 查看linux进程

    千次阅读 2021-02-08 16:06:17
    进程是在 CPU 及内存中运行的程序代码,而每个进程可以创建一个或多个进程(父子进程)。 查看进程方法: 第一种: ps auxps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是...
  • linux系统查看进程

    千次阅读 2021-01-20 23:34:08
    进程一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。在Linux系统中有很多命令。那么哪些命令可以查看所有运行中的进程呢? 你可以使用ps命令。它能显示当前运行中进程的相关信息,包括进程的...
  • 1、top -H top -H --直接查看系统中所有进程以及其中线程的运行情况 top -H -p <pid> --查看特定进程下的线程运行情况 ...htop比较类似于windows资源管理器,是一个基于ncurses的交互进程查看器 ...
  • Linux查看进程占用的CPU内存资源

    千次阅读 2019-03-29 10:05:00
    linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head 该命令组合实际上是下面两句命令: ps aux|head -1 ps aux|grep -v PID|sort -rn -k +3|...
  • init:linux系统中启动的第一个进程 USER 该进程是由哪个用户产生的 PID 进程的ID号 %CPU 该进程占用CPU资源的百分比,占用越高,进程越耗费资源 %MEM 该进程占用物理内存的百分比,占用越高,...
  • 一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发...
  • Linux进程查看

    2011-12-06 10:32:47
     进程一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份拷贝 编辑本段who
  • 进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。   二 进程管理的作用 1、判断服务器健康状态 2、查看系统中所有进程 3、杀死进程   三 查看...
  • 首先说说:僵尸进程是什么?僵尸进程是当子进程比父进程先结束...我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。进程停止后, 该进程就会从进程表中移除。僵尸进程啥危害?由于子进程的...
  • 一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发...
  • 使用 ps 命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。 语法 ps [options] 复制代码可使用的option值...
  • Linux7:多进程初步:进程相关概念,创建进程,特殊...运行着的程序都是一个进程 系统本身也运行着许多管理系统资源和用户访问的程序 一个程序可以被加载多次成为不同的进程 查看进程: windows操作系统下: 任务管理器
  • 有时候我们需要对操作系统的当前进程进行监测和控制,这时候我们需要查看当前进程,以此了解当前进行的情况,这时候我们就需要使用到ps命令,ps命令就是种最基本的进程查看命令。使用改命令可以查看当前有哪些...
  • ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。...
  • linux查看进程(应用)目前使用资源以及打开文件资源情况,已经堆栈等资源的使用情况方法: ...进入./proc文件夹,此时一定存在一个以PID命名的文件夹,进入对应PID文件夹则可查看进程所有资源情况。
  • Linux下常用的性能分析工具,能够实时显示系统中各个进程资源占用情况 输入:top 将后台中的命令调至前台继续进行 输入:fg 将一个在后台暂停的命令,变成继续在后台执行 输入:bg 进程终止根据jobs...
  • 命令用于动态监控进程所占系统资源,每隔3秒变次。这命令的特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。 top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)...
  • 1、linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head 2、linux下获取占用内存资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;...
  • linux查看进程

    2011-07-30 23:21:27
    进程一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份拷贝。 1,ps命令 作用:ps命令...
  • 一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发...
  • Linux 查看进程命令

    2011-04-13 10:57:13
    ps是Linux 操作系统中的一个命令,用来查看系统进程的。 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以...
  • 问题:linux使用top命令查看服务器资源,发现有两个进程占CPU值大于60%,通过PID无法查看到具体进程服务 ...解决:使用ps -aux命令查看服务器所有正在运行的进程,查看是否有某一个进程占CPU过高,进行处理 ...
  • 一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,184
精华内容 473
关键字:

linux查看一个进程资源

linux 订阅