Linux进程管理

Linux 进程管理 进程是运行在linux中的程序的一个实例,是管理事务的基本单元;进程拥有自己独立的处理环境和系统资源。进程的状态是变化的,其包括进程的创建、调度和消亡。生命周期通常从安装开始,到最终被用户卸载结束。在这个过程中,它会经历不同的阶段,包括引导、运行、维护和再次引导。3)什么是进程状态:进程状态主要指的是进程在不同时刻所处的工作状态↓运行态:‌进程正在CPU上执行。‌就绪态:‌进程已经准备好,‌等待CPU分配时间片以执行。‌阻塞态:‌进程由于等待某些条件(‌如I/O操作完成)‌而暂停执行。‌。 阅读详情
1、Linux程序与进程
程序:

程序是一组指令及参数的集合,通过逻辑控制运行起来,完成某项特定任务。
静态的,封闭的。

进程:

进程是程序运行起来的结果,是操作系统运行的基本单位。

有生命周期(产生---->死亡)
进程有运行状态(running,sleepping,等待,僵死)
并发性,交互性(管道)----共享内存,队列(kafka)。
程序与进程的区别:
程序是静态,进程是动态的有生命周期,有状态
程序与进程的关系不是一一对应,/usr/bin/vim(程序) -----vim test1 ,vim test2
程序是封闭的,进程有并发性和交往性。进程之间可以通信,
(|);方式:(1)共享内存,(2)消息队列

2、子进程和父进程

子进程继承父进程的特性:安全性的身份认证;过去和当前的文件描述符,端口等资源特权;环境变量;程序代码。
父进程------->fork()----->子进程
子进 ------>exec()------>运行程序
子进程-------->exit()------->退出

  每个进程都可以产生子进程,
  父进程  ----sleep---------------------running-------->
                |                          |
              fork()-----exec()----------exit() ---->zombie码片

————————————————
版权声明:本文为优快云博主「不淘气」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_45961525/java/article/details/105538136

3、进程和线程

对于linux而言,不严格区分,对于进程和线程都将拥有独立的一套完整资源集(内存---->虚拟内存,CPU------>时间片)。
在这里插入图片描述

4、进程管理工具

(1)pstree:用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出是谁创建了谁。(Centos5/6: init ____ Centos7:systemd)
安装方法及选项:

  [root@centos-node1 ~]# yum provides pstree      //查找 pstree包
  [root@centos-node1 ~]# yum install psmisc	     //找准位置安装

 -A: 用途,当终端不支持UTF-8(中文),显示乱码,此时用该参数。
 -U:各进程树之间的连接以utf8字符来链接,某些终端可能会有错
 -p:列出pid
 -u:列出每个进程所属账号名称

例:

[root@centos-node1 ~]# pstree
systemd─┬─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─login───bash
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─sshd───bash───pstree   //本终端下的进程
        │      └─sshd───sftp-server
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}

[root@centos-node1 ~]# pstree -p    //列出PID
systemd(1)─┬─NetworkManager(7333)─┬─dhclient(8303)
           │                      ├─{NetworkManager}(7342)
           │                      └─{NetworkManager}(7344)
           ├─VGAuthService(6688)
           ├─auditd(6160)───{auditd}(6166)
           ├─crond(6943)
           ├─dbus-daemon(6728)───{dbus-daemon}(6871)
           ├─firewalld(6970)───{firewalld}(7608)
           ├─login(8081)───bash(8088)
           ├─lvmetad(3534)
           ├─master(7933)─┬─pickup(7934)
           │              └─qmgr(7935)
           ├─polkitd(6673)─┬─{polkitd}(6830)
           │               ├─{polkitd}(6884)
           │               ├─{polkitd}(6893)
           │               ├─{polkitd}(6896)
           │               ├─{polkitd}(6909)
           │               └─{polkitd}(6962)
           ├─rsyslogd(7804)─┬─{rsyslogd}(8062)
           │                └─{rsyslogd}(8064)
           ├─sshd(7800)─┬─sshd(8104)───bash(8110)───pstree(8496)
           │            └─sshd(8108)───sftp-server(8127)
           ├─systemd-journal(3510)
           ├─systemd-logind(6722)
           ├─systemd-udevd(3545)
           ├─tuned(7802)─┬─{tuned}(8043)
           │             ├─{tuned}(8044)
           │             ├─{tuned}(8045)
           │             └─{tuned}(8060)
           └─vmtoolsd(6696)───{vmtoolsd}(6964)
[root@centos-node1 ~]# pstree -u    //列出每个进程所属账号名称
systemd─┬─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon(dbus)───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─login───bash
        ├─lvmetad
        ├─master─┬─pickup(postfix)
        │        └─qmgr(postfix)
        ├─polkitd(polkitd)───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─sshd───bash───pstree
        │      └─sshd───sftp-server
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}

(2)ps命令
ps --help <simple|list|output|threads|misc|all>
ps --help <s|l|o|t|m|a>

选项功能
-A所有进程都显示出来,与-e具有同样的效用
-a显示终端机下的进程,包括其他用户
-u以用户为 主的进程状态
x除了TTY控制的其他进程

输出格式规划:
l:较长、较详细地将该PID的信息列出
j:工作格式
-f:打印完整输出

例:

[root@centos-node1 ~]# ps -a
   PID TTY          TIME CMD
  9139 pts/0    00:00:00 ps
[root@centos-node1 ~]# ps -A
   PID TTY          TIME CMD
     1 ?        00:00:01 systemd
     2 ?        00:00:00 kthreadd
     3 ?        00:00:01 ksoftirqd/0
     5 ?        00:00:00 kworker/0:0H
     7 ?        00:00:00 migration/0
     8 ?        00:00:00 rcu_bh
     9 ?        00:00:01 rcu_sched
    10 ?        00:00:00 lru-add-drain
    11 ?        00:00:00 watchdog/0
    13 ?        00:00:00 kdevtmpfs
    14 ?        00:00:00 netns
    15 ?        00:00:00 khungtaskd
    16 ?        00:00:00 writeback
    ......

[root@centos-node1 tmp]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   8110   8104  0  80   0 - 28860 do_wai pts/0    00:00:00 bash
0 R     0   8521   8110  0  80   0 - 38309 -      pts/0    00:00:00 ps

F 代表这个进程的旗帜(flag)
S 代表这个进程的状态(STAT)
UID 代表执行者身份
PID 进程的ID号
C CPU使用的资源百分比
PRI 指进程的执行优先权
NI 进程的nice值,指执行的优先级的修正数值
ADDR 内核函数
SZ 使用掉的内存大小
WCHAN 进程是否在运行,-表示正在运行
TTY 登入者的终端机位置
TIME 使用掉的CPU时间
CMD 所下达的指令名称

[root@centos-node1 ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.7 128024  6544 ?        Ss   11:07   0:01 /usr/lib/syste
root          2  0.0  0.0      0     0 ?        S    11:07   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    11:07   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   11:07   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    11:07   0:00 [migration/0]

USER: 进程的发起者
PID:进程的ID号
%CPU:CPU使用百分比
%MEM:内存使用百分比
VSZ :虚拟内存
RSS :固定内存
TTY :终端
STAT: 状态 (S,T,R,Z)
START: 启动时间
TIME: 该进程实际使用CPU运作的时间
COMMAND: 指令

(3)pgrep:查看pid与进程名的对应

选项功能
-l同时显示进程名和PID
-o当匹配多个进程时,显示进程号最小的那个
-n当匹配多个进程时,显示进程号最大的那个

注意:进程号越大,并不一定意味着进程的启动时间越晚

[root@centos-node1 ~]# pgrep ssh    //默认只显示PID
7800
8104
8108
[root@centos-node1 ~]# pgrep -l ssh    //同时显示PID和进程名称
7800 sshd
8104 sshd
8108 sshd
[root@centos-node1 ~]# pgrep -l -n ssh    //当匹配多个进程时,显示进程号最大的那个
8108 ssh  
[root@centos-node1 ~]# pgrep -l -o ssh    //当匹配多个进程时,显示进程号最小的那个
7800 sshd

(4)killall ,kill ,pkill -----------通过发送信号的方式,对进程行为做控制
killall命令用于杀死指定名字的进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一。

选项功能
-z只杀死拥有scontext的进程
-e要求匹配进程名称
-I忽略小写
-g杀死进程组而不是进程
-i交互模式,杀死进程前先询问用户
-l列出所有的已知信号名称
-q不输出警告消息
-s发出指定的信号
-v报告信号是否发送成功
-w等待进程死亡
–help显示帮助信息
–version显示版本信息

语法格式:
kill [选项] [进程id]
-l 列出全部信号名称
-a 处理当前进程时不限制名里面和进程号的对应关系
-p 指定kill命令只打印相关进程的进程号,而不发送任何信息
-s 指定发送信号
-u 指定用户
实例:

[root@centos-node1 ~]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

0 ---->嗅探进程是否存在,不对其做任何操作
1 ---->断开终端
2 ---->中断,ctrl + c
3 ---->退出,ctrl + \
15 --->默认,终止
9  --->强制终止,
18 --->继续
19 --->暂停

实例:

[root@centos-node1 ~]# pgrep httpd
9182
9184
9185
9186
9187
9191
[root@centos-node1 ~]# kill 9191
[root@centos-node1 ~]# pgrep httpd
9182
9184
9185
9186
9187
9194
[root@centos-node1 ~]# kill 9186
[root@centos-node1 ~]# pgrep httpd
9182
9184
9185
9187
9194
9197
[root@centos-node1 ~]# kill 9182
[root@centos-node1 ~]# pgrep httpd
[root@centos-node1 ~]# systemctl start httpd
[root@centos-node1 ~]# pgrep httpd
9210
9230
9231
9232
9233
9234
[root@centos-node1 ~]# kill `pgrep -o httpd`
[root@centos-node1 ~]# pgrep httpd
[root@centos-node1 ~]# systemctl start httpd
[root@centos-node1 ~]# killall -0 httpd
[root@centos-node1 ~]# echo $?
0
[root@centos-node1 ~]# killall -15 httpd
[root@centos-node1 ~]# pgrep httpd
[root@centos-node1 ~]# systemctl start httpd
[root@centos-node1 ~]# pgrep httpd
9267
9268
9269
9270
9271
9272

实例2:通过开启两个端口,并执行ping命令来了解kill的用法与功能。

首先在1号端口上执行ping命令
[root@centos-node1 ~]# ping 192.168.229.134
PING 192.168.229.134 (192.168.229.134) 56(84) bytes of data.
64 bytes from 192.168.229.134: icmp_seq=1 ttl=64 time=0.295 ms
64 bytes from 192.168.229.134: icmp_seq=2 ttl=64 time=0.388 ms
64 bytes from 192.168.229.134: icmp_seq=3 ttl=64 time=0.286 ms
64 bytes from 192.168.229.134: icmp_seq=4 ttl=64 time=0.220 ms
64 bytes from 192.168.229.134: icmp_seq=5 ttl=64 time=0.492 ms
64 bytes from 192.168.229.134: icmp_seq=6 ttl=64 time=0.757 ms
我们再到2号端口上进行查看和kill命令操作
[root@centos-node1 ~]# ps -ef |grep ping
root       9306   9284  0 16:22 pts/1    00:00:00 ping 192.168.229.134
root       9308   8110  0 16:22 pts/0    00:00:00 grep --color=auto ping
[root@centos-node1 ~]# kill -2 9306  //中断指令,相当于ctrl + c
1号端口收到指令中断ping命令
64 bytes from 192.168.229.134: icmp_seq=31 ttl=64 time=0.282 ms

--- 192.168.229.134 ping statistics ---
31 packets transmitted, 31 received, 0% packet loss, time 30014ms
rtt min/avg/max/mdev = 0.220/0.350/0.757/0.114 ms
我们再次在1号端口运行运行ping命令
[root@centos-node1 ~]# ping 192.168.229.134
PING 192.168.229.134 (192.168.229.134) 56(84) bytes of data.
64 bytes from 192.168.229.134: icmp_seq=1 ttl=64 time=0.250 ms
64 bytes from 192.168.229.134: icmp_seq=2 ttl=64 time=0.307 ms
64 bytes from 192.168.229.134: icmp_seq=3 ttl=64 time=0.316 ms
64 bytes from 192.168.229.134: icmp_seq=4 ttl=64 time=0.265 ms

在2号端口进行查看和kill命令
[root@centos-node1 ~]# ps -ef |grep ping
root       9310   9284  0 16:24 pts/1    00:00:00 ping 192.168.229.134
root       9312   8110  0 16:24 pts/0    00:00:00 grep --color=auto ping
[root@centos-node1 ~]# kill -3 9310     //退出指令,相当于ctrl + \
回到1号端口
64 bytes from 192.168.229.134: icmp_seq=22 ttl=64 time=0.789 ms
64 bytes from 192.168.229.134: icmp_seq=23 ttl=64 time=0.306 ms
23/23 packets, 0% loss, min/avg/ewma/max = 0.193/0.348/0.367/0.866 ms    //相当于退出一次,然后继续执行
64 bytes from 192.168.229.134: icmp_seq=24 ttl=64 time=0.393 ms
64 bytes from 192.168.229.134: icmp_seq=25 ttl=64 time=0.263 ms

2号端口:
[root@centos-node1 ~]# kill -19 9310    //暂停指令
1号端口:
64 bytes from 192.168.229.134: icmp_seq=41 ttl=64 time=0.292 ms
64 bytes from 192.168.229.134: icmp_seq=42 ttl=64  time=0.287 ms

[1]+  Stopped                 ping 192.168.229.134
2号端口:
[root@centos-node1 ~]# kill -18 9310    //继续指令
1号端口:
[root@centos-node1 ~]# 64 bytes from 192.168.229.134: icmp_seq=43 ttl=64 time=0.367 ms
64 bytes from 192.168.229.134: icmp_seq=44 ttl=64 time=0.311 ms
64 bytes from 192.168.229.134: icmp_seq=45 ttl=64 time=0.271 ms
64 bytes from 192.168.229.134: icmp_seq=46 ttl=64 time=0.230 ms
64 bytes from 192.168.229.134: icmp_seq=47 ttl=64 time=0.290 ms

(5)top:动态的打印系统信息
在这里插入图片描述

top前5行统计信息

第一行:top - 18:09:44 up 7:03, 3 users, load average: 0.00, 0.01, 0.05

内容含义
18:09:44表示当前时间
up 7:03系统运行时间 格式为时:分
3 users当前登录用户数
load average: 0.00, 0.01, 0.05系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

注:load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:Tasks: 174 total, 2 running, 172 sleeping, 0 stopped, 0 zombie
第三行:%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

内容含义
174 total进程总数
2 running正在运行的进程数
172 sleeping睡眠的进程数
0 stopped停止的进程数
0 zombie僵尸进程数
0.0 us用户空间占用CPU百分比
0.0 sy内核空间占用CPU百分比
0.0 ni用户进程空间内改变过优先级的进程占用CPU百分比
100.0 id空闲CPU百分比
0.0 wa等待输入输出的CPU时间百分比
0.0 hi硬中断(Hardware IRQ)占用CPU的百分比
0.0 si软中断(Software Interrupts)占用CPU的百分比

第四行:KiB Mem : 929944 total, 135644 free, 161648 used, 632652 buff/cache
第五行:KiB Swap: 2002940 total, 2002676 free, 264 used. 566868 avail Mem

内容含义
KiB Mem : 929944 total物理内存总量
135644 free空闲内存总量
161648 used使用的物理内存总量
632652 buff/cache用作内核缓存的内存量
KiB Swap: 2002940 total交换区总量
2002676 free空闲交换区总量
264 used使用的交换区总量
566868 avail Mem代表可用于进程下一次分配的物理内存数量
cached Mem缓冲的交换区总量

缓冲的交换区总量:即内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

进程信息
列名含义
PID进程id
PPID父进程id
RUSER-Real user name-
UID进程所有者的用户id
USER进程所有者的用户名
GROUP进程所有者的组名
TTY启动进程的终端名。不是从终端启动的进程则显示为 ?
PR优先级
NInice值。负值表示高优先级,正值表示低优先级
P最后使用的CPU,仅在多CPU环境下有意义
%CPU上次更新到现在的CPU时间占用百分比
TIME进程使用的CPU时间总计,单位秒
TIME+进程使用的CPU时间总计,单位1/100秒
%MEM进程使用的物理内存百分比
VIRT程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP程使用的虚拟内存中,被换出的大小,单位kb
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE可执行代码占用的物理内存大小,单位kb
DATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR共享内存大小,单位kb
nFLT页面错误次数
nDRT最后一次写入到现在,被修改过的页面数
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
COMMAND命令名/命令行
WCHAN若该进程在睡眠,则显示睡眠中的系统函数名
Flags任务标志
  • 在top基本视图中,按键盘数字“1”可以监控每个逻辑CPU的状况:
  • 敲击键盘‘b’(打开关闭加亮效果)
  • 敲击键盘‘x’(打开/关闭排序列的加亮效果)
  • 改变进程显示字段

在top基本视图中,敲击”f”进入另一个视图,在这里可以编辑基本视图中的显示字段

  h|?帮助
  M 按内存的使用排序
  P 按CPU使用排序
  N 以PID的大小排序
  R 对排序进行反转
  f 自定义显示字段
  1 显示所有CPU的负载
  < 向前
  > 向后
  z 彩色
  W 保存top环境设置

(6)htop:top的增强版
epel 源
yum install epel*
yum install htop
下载扩展源,安装htop。
在这里插入图片描述
(7)vmstat
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用
率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参
数是采样的次数,如:

[root@centos-node1 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 386892   2108 380452    0    0    13     3   51   97  0  0 100  0  0
[root@centos-node1 ~]# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 386900   2108 380488    0    0    13     2   51   97  0  0 100  0  0
[root@centos-node1 ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 2  0      0 386900   2108 380492    0    0    13     2   51   97  0  0 100  0  0
 0  0      0 386900   2108 380492    0    0     0     0   55   94  0  0 100  0  0
 1  0      0 386900   2108 380492    0    0     0     0   54   89  0  1 100  0  0
 0  0      0 386900   2108 380492    0    0     0     0   52   86  0  1 100  0  0
 0  0      0 386900   2108 380492    0    0     0     0   60   95  0  0 100  0  0

用法:vmstat [-V] [-n] [-S unit] [delay [count]]

选项功能
-V显示vmstat版本信息
-n只在开始时显示一次各字段名称
-a显示活跃和非活跃内存
-d显示各个磁盘相关统计信息
-D显示磁盘总体信息
-p显示指定磁盘分区统计信息
-s显示内存相关统计信息及多种系统活动数量
-m显示slabinfo
-t在输出信息的时候也将时间一并输出出来
-S使用指定单位显示。参数有k、K、m、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024bytes)
delay刷新时间间隔。如果不指定,只显示一条结果
count刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷
类别选项含义说明
Processr等待执行的任务数展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈
B等待IO的进程数量
Memoryswpd正在使用虚拟的内
存大小,单位k值大于0表示物理内存已经不足,需要考虑升级内存
free空闲内存大小指物理内存
buff已用的buff大小,对块设备的读写进行缓冲
cache已用的cache大小,文件系统的cache指的是page cached内存大小
nact非活跃内存大小,即被标明可回收的内存,区别于free和active具体含义见:概念补充(当使用-a选项时显示)
active活跃的内存大小具体含义见:概念补充(当使用-a选项时显示)
Swapsi每秒从交换区写入内存的大小(单位:kb/s)表示有磁盘调入内存,也就是内存进入内存交换区的内存大小;通俗的讲就是 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗存进程解决掉
so每秒从内存写到交换区的大小表示由内存进入磁盘,也就是由内存交换区进入内存的内存大小。
IObi每秒读取的块数(读磁盘)现在的Linux版本块的大小为1024bytes
bo每秒写入的块数(写磁盘)如果bi+bo的值过大,且wa值较大,则表示系统磁盘IO瓶颈
Systemin每秒中断数,包括时钟中断值越大,会看到由内核消耗的cpu时间会越多
cs每秒上下文切换数值越大,会看到由内核消耗的cpu时间会越多
CPUUs用户进程执行消耗cpu时间(usertime)us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了
Sy系统进程消耗cpu时间(systemtime)sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。一般来说us+sy应该小于80%,如果大于80%,说明可能存在CPU瓶
Id空闲时间(包括IO等待时间)
wa等待IO时间Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

(8)sar :CPU资源监控

[root@centos-node1 ~]# sar -u 5 3
Linux 3.10.0-957.el7.x86_64 (centos-node1)      04/24/2020      _x86_64_        (1 CPU)

02:40:58 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:41:03 PM     all      0.61      0.00      1.62      0.00      0.00     97.78
02:41:08 PM     all      0.00      0.00      0.20      0.00      0.00     99.80
02:41:13 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.20      0.00      0.60      0.00      0.00     99.19

输出项说明:
CPU:all 表示统计信息为所有 CPU 的平均值。
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice:显示在用户级别,用于 nice 操作,所占用 CPU 总时间的百分比。
%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait:显示用于等待 I/O 操作占用 CPU 总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

    1. 若 %iowait 的值过高,表示硬盘存在 I/O 瓶颈
    1. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
    1. 若 %idle 的值持续低于 1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。

inode、文件和其他内核表监控
例如,每 5秒采样一次,连续采样 3 次,观察核心表的状态。

[root@centos-node1 ~]# sar -v 5 3
Linux 3.10.0-957.el7.x86_64 (centos-node1)      04/24/2020      _x86_64_        (1 CPU)

02:44:40 PM dentunusd   file-nr  inode-nr    pty-nr
02:44:45 PM    119674      1344    110905         3
02:44:50 PM    119674      1344    110905         3
02:44:55 PM    119674      1344    110905         3
Average:       119674      1344    110905         3

输出项说明:
dentunusd:目录高速缓存中未被使用的条目数量
file-nr:文件句柄(file handle)的使用数量
inode-nr:索引节点句柄(inode handle)的使用数量
pty-nr:使用的 pty 数量

内存和交换空间监控
例如,每 5秒采样一次,连续采样 3 次,监控内存分页:

[root@centos-node1 ~]# sar -r 5 3
Linux 3.10.0-957.el7.x86_64 (centos-node1)      04/24/2020      _x86_64_        (1 CPU)

02:39:57 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
02:40:02 PM    386272    543672     58.46      2108    226796    299616     10.22    116920    188520        28
02:40:07 PM    386272    543672     58.46      2108    226796    299616     10.22    116924    188520        28
02:40:12 PM    386272    543672     58.46      2108    226796    299616     10.22    116924    188520        28
Average:       386272    543672     58.46      2108    226796    299616     10.22    116923    188520        28

输出项说明:
kbmemfree:这个值和 free 命令中的 free 值基本一致,所以它不包括 buffer 和 cache 的空间.
kbmemused:这个值和 free 命令中的 used 值基本一致,所以它包括 buffer 和 cache 的空间.
%memused:这个值是 kbmemused 和内存总量(不包括 swap)的一个百分比.
kbbuffers 和 kbcached:这两个值就是 free 命令中的 buffer 和 cache.
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是 kbcommit 与内存总量(包括 swap)的一个百分比.
内存分页监控
例如,每 5 秒采样一次,连续采样 3 次,监控内存分页:

[root@centos-node1 ~]# sar -B 5 3
Linux 3.10.0-957.el7.x86_64 (centos-node1)      04/24/2020      _x86_64_        (1 CPU)

02:48:47 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
02:48:52 PM      0.00      7.83     13.86      0.00     13.65      0.00      0.00      0.00      0.00
02:48:57 PM      0.00      0.00      5.22      0.00     10.44      0.00      0.00      0.00      0.00
02:49:02 PM      0.00      0.00   1792.99      0.00    854.51      0.00      0.00      0.00      0.00
Average:         0.00      2.61    604.82      0.00    293.24      0.00      0.00      0.00      0.00

输出项说明:
pgpgin/s:表示每秒从磁盘或 SWAP 置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或 SWAP 的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
pgfree/s:每秒被放入空闲队列中的页个数
pgscank/s:每秒被 kswapd 扫描的页个数
pgscand/s:每秒直接被扫描的页个数
pgsteal/s:每秒钟从 cache 中被清除来满足内存需要的页个数
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比
I/O 和传送速率监控
例如,每 5 秒采样一次,连续采样 3 次,报告缓冲区的使用情况,需键入如下命令:

[root@centos-node1 ~]# sar -b 5 3
Linux 3.10.0-957.el7.x86_64 (centos-node1)      04/24/2020      _x86_64_        (1 CPU)
02:50:24 PM       tps      rtps      wtps   bread/s   bwrtn/s
02:50:29 PM      0.00      0.00      0.00      0.00      0.00
02:50:34 PM      1.00      0.00      1.00      0.00      8.03
02:50:39 PM      0.20      0.00      0.20      0.00      3.22
Average:         0.40      0.00      0.40      0.00      3.75

输出项说明:
tps:每秒钟物理设备的 I/O 传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

进程队列长度和平均负载状态监控
例如,每 5 秒采样一次,连续采样 3 次,监控进程队列长度和平均负载状态:

[root@centos-node1 ~]# sar -q 5 3
Linux 3.10.0-957.el7.x86_64 (centos-node1)      04/24/2020      _x86_64_        (1 CPU)

02:50:45 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
02:50:50 PM         1       185      0.00      0.01      0.05         0
02:50:55 PM         1       185      0.00      0.01      0.05         0
02:51:00 PM         1       185      0.00      0.01      0.05         0
Average:            1       185      0.00      0.01      0.05         0

输出项说明:
runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后 1 分钟的系统平均负载(System load average)
ldavg-5:过去 5 分钟的系统平均负载
ldavg-15:过去 15 分钟的系统平均负载
系统交换活动信息监控
例如,每 5 秒采样一次,连续采样 3 次,监控系统交换活动信息:

[root@centos-node1 ~]# sar -w 5 3
Linux 3.10.0-957.el7.x86_64 (centos-node1)      04/24/2020      _x86_64_        (1 CPU)

02:53:21 PM    proc/s   cswch/s
02:53:26 PM      0.80     92.57
02:53:31 PM      0.80     97.99
02:53:36 PM      0.80     96.59
Average:         0.80     95.72

输出项说明:
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量

(9)tsar:
淘宝开源,以周期计划任务的方式执行
安装:
[root@bogon ~]# wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip
–no-check-certificate
[root@bogon ~]# yum install unzip
[root@bogon ~]# unzip tsar.zip
[root@bogon tsar-master]# cd tsar-master/
[root@bogon tsar-master]# make
[root@bogon tsar-master]# make install
常用命令
以 1 秒钟为间隔,实时打印 tsar 的概述数据

[root@centos-node1 ~]# tsar -i 1 -l
Time              ---cpu-- ---mem-- ---tcp-- -----traffic---- --sda--- --sr0--- --dm-0-- --dm-1--  ---load-
Time                util     util   retran    bytin  bytout     util     util     util     util     load1
24/04/20-14:59:23   1.01    35.35     0.00   256.00  382.00     2.80     0.00     2.80     0.00      0.00
24/04/20-14:59:24   0.00    35.35     0.00   316.00  334.00     0.00     0.00     0.00     0.00      0.00
24/04/20-14:59:25   1.00    35.35     0.00   316.00  302.00     0.00     0.00     0.00     0.00      
......

tsar 显示 1 天内的历史汇总(summury)信息,以默认 5 分钟为间隔

[root@centos-node1 tsar-master]# tsar
Time           ---cpu-- ---mem-- ---tcp-- -----traffic---- --sda--- --sr0--- --dm-0-- --dm-1--  ---load-
Time             util     util   retran    bytin  bytout     util     util     util     util     load1
24/04/20-08:50   1.20    23.58     0.00    41.00   42.00     0.16     0.00     0.16     0.00      0.03
24/04/20-08:55   0.13    23.59     0.00    11.00    0.00     0.10     0.00     0.10     0.00      0.00
24/04/20-09:00   0.13    23.60     0.00    13.00    0.00     0.12     0.00     0.12     0.00      0.00
......

tsar --cpu -i 1 显示一天内 cpu 的历史信息,以 1 分钟为间隔

[root@centos-node1 tsar-master]# tsar --cpu -i 1
Time           -----------------------cpu----------------------
Time             user     sys    wait    hirq    sirq    util
24/04/20-08:45   0.06    0.11    0.00    0.00    0.01    0.18
24/04/20-08:46   0.27    2.88    0.02    0.00    0.00    3.14
24/04/20-08:47   0.22    2.76    0.02    0.00    0.00    2.98
24/04/20-08:48   0.05    0.08    0.00    0.00    0.00    0.13
......

tsar --live --mem -i 2 以 2 秒钟为间隔,实时打印 mem 的数据。

[root@centos-node1 tsar-master]# tsar --live --mem -i 2
Time              -----------------------mem----------------------
Time                free    used    buff    cach   total    util
24/04/20-15:09:00 363.3M  321.2M    2.1M  221.6M  908.1M   35.37
24/04/20-15:09:02 362.9M  321.6M    2.1M  221.6M  908.1M   35.41
24/04/20-15:09:04 362.9M  321.6M    2.1M  221.6M  908.1M   35.41
......

tsar --cpu --mem -i 1 显示一天内的 cpu 和内存历史数据,以 1 分钟为间隔。

[root@centos-node1 tsar-master]# tsar --cpu --mem -i 1
Time           -----------------------cpu---------------------- -----------------------mem----------------------
Time             user     sys    wait    hirq    sirq    util     free    used    buff    cach   total    util
24/04/20-08:45   0.06    0.11    0.00    0.00    0.01    0.18   608.0M  209.0M    2.1M   89.0M  908.1M   23.02
24/04/20-08:46   0.27    2.88    0.02    0.00    0.00    3.14   606.8M  210.2M    2.1M   89.1M  908.1M   23.15
......

(11)lsof
lsof输出信息含义 在终端下输入lsof即可显示系统打开的文件。

[root@centos-node1 ~]# lsof
COMMAND     PID  TID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1         root  cwd       DIR              253,0       224         64 /
systemd       1         root  rtd       DIR              253,0       224         64 /
systemd       1         root  txt       REG              253,0   1616360   16968336 /usr/lib/systemd/systemd
......

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述,应用程序通过文件描述符识别该文件
TYPE:文件类型
DEVICE:指定磁盘的名称
NODE:索引节点
NAME:打开文件的确切名称

LINUX系统进程管理 进程是计算机系统中最重要的概念之一,在计算机系统中并行运行着大量的程序,这些程序不可能独占系统的全部资源,而是需要这些程序共享系统资源,所以这些程序在运行时会产生一定的竞争关系。那在这种情况下,系统资源怎么分配?运行程序该如何管理呢?操作系统为了解决这一系列的问题引入了进程的概念,用来作为操作系统分配和管理系统资源的基本单位。所以进程的出现是为了让系统资源的利用更加合理,从而提高系统的运行效率。定义进程,就避免不了提到另一个概念“程序”。 阅读详情

相关推荐

linux-CPU 性能优化总结

在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU、内存、网络、IO 性能。本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法。 1.分析手段 在理解平均负载之前,先要理清楚 Linux 下的进程状态。 1.1.进程状态 1.1.1. R (TASK_RUNNING),可执行状态 只有在该状态的进程才可能在 CPU 上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的 task_struct 结构(进程控制块)被放入对应 CPU ..

neo949332116的博客 1956

【Linux】Linux进程管理

Linux进程管理

Linux小白一只~正处于学习阶段,觉得我写的还好的请多多给我点赞呀,谢谢大家!!(๑>ڡ<)☆ 5213

【Linux系统】进程管理

进程是一个正在运行的程序实例,是操作系统分配资源(如 CPU 时间、内存、文件描述符等)的基本单位。每个进程都有一个唯一的标识符(PID,进程 ID),通过它可以管理和区分不同的进程。CPU ----> CPU是一个中介,这些进程是挂壁等待执行的程序,比如深圳的三和大神,打两天零点工 + 在网吧躺三天,然后再打三天零工,虽然三和大神摆烂了,但为了生存所需他们仍旧需要工作,于是,等到他们需要又会去黑中介那里接单打几天零工 —— 三和大神的工作模式就类似于电脑中的各种进程;

猫猫的小茶馆 1215

Linux系统的进程管理

中断状态 S。设置自动挂载 Dev/sdb1 swap swap defaults 0 0。C 运行此进程CPU的占用率。CMD 该进程对应的实际命令。TTY 开启此进程的终端。S 进程状态。PPID 进程的父进程ID。STIME 此进程被运行时间。PID 进程的ID。

z2050025507的博客 1570

基于YOLOv5的隧道衬砌缺陷智能检测系统

计算机视觉在工程检测领域正发挥越来越重要的作用,特别是目标检测技术通过深度学习算法实现了对复杂场景的智能分析。YOLOv5作为当前主流的目标检测框架,通过改进网络结构和训练策略,可以显著提升检测精度和效率。在隧道工程领域,结合通道注意力机制和多尺度特征融合技术,能够有效解决衬砌缺陷识别中的小目标检测难题。这种AI检测系统相比传统人工判读地质雷达图像,不仅将效率提升20倍,还能将识别准确率提高到92.3%,特别适用于3cm以上结构缺陷的自动化检测。系统通过深度可分离卷积等优化,实现了模型轻量化,便于在边缘计算

weixin_29064103的博客 326

Arduino程序设计(十)8×8 共阴极LED点阵显示(MAX7219)

本文主要介绍8×8 LED点阵显示实验,分别是:1、介绍MAX7219点阵模块;2、点阵显示部分图形;3、点阵显示数字 0~9 及 26 个英文字母。1、通过上述两个点阵实验,了解了8*8点阵显示的基本原理;2、通过SPI通信控制点阵显示,学会了Arduino用SPI通信方式控制外设。

Alice的博客 1万+

Linux进程管理指令

<br /><br />作者:北南南北<br />来自:LinuxSir.Org<br />摘要:本文讲述的时进程管理的基本概念和进程管理工具介绍;文中的重点对进程管理工具的分类介绍及应用举例,包括 ps、pgrep、top 、kill、pkill、killall、nice和renice 等工具。<br /><br /><br />1、程序和进程;<br /><br />程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。<br />一个运行着的程序,可能

lengyuhong的专栏 3782

避开模板匹配的坑:OpenCVSharp中边缘梯度算法的优化实践

本文深入探讨了OpenCVSharp中边缘梯度算法在模板匹配中的优化实践,解决了传统方法在尺度变化、角度旋转和光照差异下的局限性。通过Sobel算子提取边缘梯度特征,结合轮廓检测和多尺度匹配策略,显著提升了匹配的鲁棒性和准确性。文章还分享了并行计算、内存访问优化等实战技巧,适用于工业检测和自动化识别场景。

http9protocoller的博客 198

linux-进程管理

进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。这么讲很难理解,那我们换一种说法。程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合。而进程是正在执行中的程序。当程序被执行时,执行人的权限和属性,以及程序的代码都会被加载入内存,操作系统给这个进程分配一个 ID,称为 PID(进程 ID)。也就是说,在操作系统中,所有可以执行的程序与命令都会产生进程。

qq_64485253的博客 1309

AMP架构下的核间通信:RPMSG与共享内存原理详解

本文以RK3568等异构多核硬件为例,深入浅出解析了AMP架构下核间通信的核心逻辑,阐明RPMSG并非替代共享内存,而是以共享内存为数据载体、硬件信箱为中断通知工具、VirtIO为数据管理规则,构建的标准化高层协议与框架,为开发者提供简洁API,实现不同操作系统核心间高效通信。

qq_61335271的博客 2049

YOLOv11 环境配置全流程 | 从零开始搭建训练与推理环境

YOLOv11环境配置与训练全流程指南 本文详细介绍了YOLOv11目标检测模型的环境配置、训练与推理全流程。内容包括: 环境要求:列出GPU、CUDA、Python等组件的版本要求,提供快速检查脚本 Windows配置: CUDA 12.6和cuDNN 8.9.7安装步骤 使用Conda创建隔离环境 PyTorch GPU版本安装方法 IDE环境配置 Linux配置:提供Ubuntu 22.04下的CUDA、cuDNN安装命令和Conda环境搭建 Docker方案:提供一键式容器化部署命令 训练实战: 数

shrgegrb的博客 2017

Linux——内核——进程管理

本文系统介绍了Linux进程管理的核心内容,包括进程的基本概念(定义、状态)和关键管理命令(ps、top、kill等)。详细阐述了进程创建、调度、监控及终止等操作流程,以及进程间通信机制和常用管理工具(systemctl、screen等)。内容涵盖进程全生命周期管理,为Linux系统管理员提供全面的操作指南。

m0_65153260的博客 569

C# MES通信从入门到精通(10)——C#使用HTTP的Post和Get方法和Mes系统通信

本文详细介绍了如何利用C#完成与HTTP协议的MES系统进行通信,通过POST和GET方法实现与MES系统的交互,由高级工程师的实战经验总结,实属C#与MES通信领域的葵花宝典!

qq_34059233的博客 3413

linux进程管理

Linux进程管理 Linux实现进程管理 在linux中每个执行的程序都称为一个进程。每个进程都分配一个ID号 每一个进程都会对应一个父进程,这个父进程可以复制多个子进程 每个进程都可以以两种方式存在: 前台和后台 一般系统的服务都是以后台进程的方式存在 Ps命令 相关字段: PID 进程识别号 TTY 终端机号 TIME 此进程所消耗的CPU时间 CMD 正在执行的命令或进程名 ps -a 显示当前终端的所有进程信息 Ps -u 以用户的格式显示进程信息 Ps -x 显示后台运行的参数 相关例子 Ps

qq_51088445的博客 6673

避坑指南!YOLO26模型导出/推理常见问题,99%的开发者都踩过

版本锁定:Ultralytics=8.4.2、OpenVINO=2024.0.0、Python=3.10,版本不一致是80%问题的根源;参数对齐:训练/导出/推理的imgsz、归一化、坐标映射必须完全一致,差一步就出错;算子统一:避免自定义算子,优先用YOLO26原生算子(C3k2/PSABlock),确保推理引擎兼容;分步验证:导出后先校验ONNX/IR模型→单图片推理→RTSP流推理→72小时稳定性测试,一步过易踩坑;工业级测试。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 510

Microsoft Bitlocker企业级管理部署方案

BitLocker是Windows 10以及更高版本中内置的磁盘加密工具,是一种可靠的数据保护机制,可以保护计算机上的敏感数据不被未经授权的人访问。BitLocker的工作原理是将整个系统卷或其他数据卷加密的同时,向某个可信软件或硬件模块请求密钥解密数据。BitLocker最大的好处在于其内置于Windows系统,所以用户无需安装其他软件或购买额外的许可证或硬件设备。本文将介绍Microsoft BitLocker企业级管理部署方案,包括:BitLocker部署前的准备工作。

xueyunshengling的博客 2075

linux进程管理,Linux进程管理优秀教程

Linux进程管理优秀教程Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。以下是小编为大家搜索整理的Linux进程管理优秀教程,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!在Linux系统上所有运行的'东西都可以称之为一个进程。每个用户任务、每个系统...

weixin_39711914的博客 185

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深入解析 Linux 进程管理

深入学习进程相关知识,包括概念、状态、创建、特殊进程情况、调度、优先级、特性以及环境变量与相关指令、函数等。

Edison's 小宇宙 7万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Linux中的进程管理

进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。启动后台进程需要使用“&”操作符,将“&”操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。在 Linux 中,进程是系统中所有任务的核心,进程管理命令主要用于查看、控制和调度系统中的进程。这个命令可以帮助你快速找到之前运行的命令。

xiaozhenghahaha的博客 785

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux进程管理和调度

进程:是正在运行的程序的实例,是操作系统进行资源分配和调度的基本单位。进程ID(PID):每个进程都有一个唯一的标识符,称为进程ID。

weixin_42300449的博客 865
上一篇: LVM逻辑卷的创建
下一篇: Linux的htop
PerDrix?
博客等级 码龄7年 6粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值