Linux(进阶篇)

一、进程

1 进程和内存管理

1.1 进程和线程的区别

  • 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位
  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见
  • 调度和切换:线程上下文切换比进程上下文切换要快得多

1.2 查看进程中的线程

grep -i threads /proc/PID/status

1.3 进程使用内存管理问题

1.3.1 内存泄漏:Memory Leak

指程序中用malloc或new申请了一块内存,但是没有用free或delete将内存释放,导致这块内存一直处于占用状态

1.3.2 内存溢出:Memory Overflow

指程序申请了10M的空间,但是在这个空间写入10M以上字节的数据,就是溢出

1.3.3 内存不足:OOM(Out Of Memory)

Linux(进阶篇)

原因

  • 给应用分配内存太少:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少
  • 应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出

使用的解决办法:

  • 限制java进程的max heap,并且降低java程序的worker数量,从而降低内存使用
  • 给系统增加swap空间

1.4 进程状态

  • 运行态:running
  • 就绪态:ready
  • 睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
  • 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
  • 僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态的子进程

范例:僵尸态

#父进程和子进程的创建
[root@rocky01 ~]# bash
[root@rocky01 ~]# echo $BASHPID
2267
[root@rocky01 ~]# echo $PPID
2209
[root@rocky01 ~]# pstree -p |grep 2209
           |-sshd(948)-+-sshd(2195)---sshd(2208)---bash(2209)---bash(2267)-+-grep(2289)

#将父进程设为停止态
[root@rocky01 ~]# kill -19 2209
#杀死子进程,进入僵尸态
[root@rocky01 ~]# kill -9 2267
#可以看到子进程STAT为Z,表示为僵尸态
[root@rocky01 ~]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        2267  0.0  0.0      0     0 pts/0    Z+   20:25   0:00 [bash] <defunct>
root        2295  0.0  0.1  58752  3972 pts/1    R+   20:27   0:00 ps aux

#&#x89E3;&#x51B3;&#x65B9;&#x6CD5;
#&#x65B9;&#x6CD5;&#x4E00;&#xFF1A;&#x6062;&#x590D;&#x7236;&#x8FDB;&#x7A0B;
[root@rocky01 ~]# kill -19 2209
#&#x65B9;&#x6CD5;&#x4E8C;&#xFF1A;&#x6740;&#x6B7B;&#x7236;&#x8FDB;&#x7A0B;
[root@rocky01 ~]# kill -9 2209</defunct>

范例:孤儿进程

[root@rocky01 ~]# (sleep 100 &)
[root@rocky01 ~]# pstree -p |grep sleep
           |-sleep(2342)

1.5 LRU算法

LRU:Least Recently Used 近期最少使用算法(喜新厌旧),释放内存

Linux(进阶篇)

1.6 IPC进程间通信

范例:利用管道文件实现 IPC

[root@rocky01 ~]# mkfifo test.fifo
[root@rocky01 ~]# ll test.fifo
prw-r--r-- 1 root root 0 Aug 15 20:51 test.fifo
[root@rocky01 ~]# echo Willoneday > test.fifo
#&#x6B64;&#x65F6;&#x4E3A;&#x7B49;&#x5F85;&#x8BFB;&#x5165;&#x72B6;&#x6001;&#xFF0C;&#x8BFB;&#x53D6;&#x6570;&#x636E;&#x540E;&#x624D;&#x4F1A;&#x8C03;&#x5230;&#x547D;&#x4EE4;&#x63D0;&#x793A;&#x7B26;

#&#x5728;&#x53E6;&#x4E00;&#x4E2A;&#x7EC8;&#x7AEF;&#x53EF;&#x4EE5;&#x4ECE;&#x6587;&#x4EF6;&#x4E2D;&#x8BFB;&#x53D6;&#x6570;&#x636E;
[root@rocky01 ~]# cat test.fifo
Willoneday

Linux(进阶篇)

1.7 进程优先级

  • 系统优先级:0-139, 数字越小,优先级越高,各有140个运行队列和过期队列
  • 实时优先级: 99-0 值最大优先级最高
  • nice值:-20到19,对应系统优先级100-139或

Linux(进阶篇)

2 进程管理和性能相关工具

Linux系统状态的查看及管理工具:
pstree
ps
pidof
pgrep
top
htop
glance
pmap
vmstat
dstat
kill
pkill
job
bg
fg
nohup

2.1 pstree 进程树

pstree 可以用来显示进程的父子关系,以树形结构显示

格式: pstree [ OPTION ] [ PID | USER ]

常用选项:

  • -p 显示PID
  • -T 不显示线程thread,默认显示线程
  • -u 显示用户切换
  • -H pid 高亮显示指定进程及其前辈进程

2.2 ps 进程信息

ps 即 process state,显示有关活动进程信息, Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
支持三种选项:

  • UNIX选项 如: -A -e
  • GNU选项 如: –help
  • BSD选项 如: a

格式: ps [ OPTION ]...

常用选项:

  • a 选项包括所有终端中的进程
  • x 选项包括不链接终端的进程
  • u 选项显示进程所有者的信息
  • f 选项显示进程树,相当于 –forest
  • k sort 属性 对属性排序,属性前加 – 表示倒序
  • o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
  • L 显示支持的属性列表
  • -C cmdlist 指定命令,多个命令用,分隔
  • -L 显示线程
  • -e 显示所有进程,相当于-A
  • -f 显示完整格式程序信息
  • -F 显示更完整格式的进程信息
  • -H 以进程层级格式显示进程相关信息
  • -u userlist 指定有效的用户ID或名称
  • -U userlist 指定真正的用户ID或名称
  • -g gid或groupname 指定有效的gid或组名称
  • -G gid或groupname 指定真正的gid或组名称
  • -p pid 显示指pid的进程
  • –ppid pid 显示属于pid的子进程
  • -t ttylist 指定tty,相当于 t
  • -M 显示SELinux信息,相当于Z

2.2.1 ps 输出信息

  • C : ps -ef 显示列 C 表示cpu利用率
  • VSZ: Virtual memory SiZe,虚拟内存集,线性内存
  • RSS: ReSident Size, 常驻内存集
  • STAT:进程状态
  • R:running
  • S: interruptable sleeping
  • D: uninterruptable sleeping
  • T: stopped
  • Z: zombie
  • +: 前台进程
  • l: 多线程进程
  • L:内存分页并带锁
  • N:低优先级进程

范例:查看进程的特定属性

[root@rocky01 ~]# ps axo pid,cmd,%mem,%cpu
    PID CMD                         %MEM %CPU
      1 /usr/lib/systemd/systemd --  0.2  0.0
      2 [kthreadd]                   0.0  0.0
      3 [rcu_gp]                     0.0  0.0
      4 [rcu_par_gp]                 0.0  0.0
      6 [kworker/0:0H-events_highpr  0.0  0.0
      9 [mm_percpu_wq]               0.0  0.0
...&#x7701;&#x7565;...

范例:按CPU利用率倒序排序

[root@rocky01 ~]# ps aux k -%cpu
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         927  0.2  0.8 568912 31904 ?        Ssl  Aug29  13:31 /usr/libexec/platform-python -Es /usr
root       22116  0.1  0.0      0     0 ?        I    19:16   0:08 [kworker/0:1-mm_percpu_wq]
root           1  0.0  0.2 172768 11204 ?        Ss   Aug29   0:09 /usr/lib/systemd/systemd --switched-r
root           2  0.0  0.0      0     0 ?        S    Aug29   0:00 [kthreadd]
...&#x7701;&#x7565;...

面试题:找到未知进程的执行程序文件路径

[root@rocky01 ~]# ll /proc/16642/exe
lrwxrwxrwx 1 root root 0 Aug 29 23:24 /proc/16642/exe -> /data/httpd-2.4.54/bin/httpd

2.3 prtstat 查看进程信息

可以显示进程信息,来自于psmisc包

格式: prtstat [ options ] PID ..

选项: -r raw&#x683C;&#x5F0F;&#x663E;&#x793A;

[root@rocky01 ~]# prtstat -r 16642
         pid: 16642                               comm: httpd
       state: S                                   ppid: 1
        pgrp: 16642                            session: 16642
      tty_nr: 0                                  tpgid: -1
       flags: 404040                            minflt: 307
     cminflt: 0                                 majflt: 0
     cmajflt: 0                                  utime: 290
       stime: 331                               cutime: 0
      cstime: 0                               priority: 20
        nice: 0                            num_threads: 1
 itrealvalue: 0                              starttime: 21243019
       vsize: 119353344                            rss: 1365
      rsslim: 18446744073709551615               startcode: 4194304
     endcode: 4967936                       startstack: 140721176867168
     kstkesp: 0                                kstkeip: 0
       wchan: 0                                  nswap: 0
      cnswap: 0                            exit_signal: 17
   processor: 1                            rt_priority: 0
      policy: 0                  delayaccr_blkio_ticks: 0
  guest_time: 0                            cguest_time: 0

2.4 设置和调整进程优先级

进程优先级调整

  • 静态优先级:100-139
  • 进程默认启动时的nice值为0,优先级为120
  • 只有根用户才能降低nice值(提高优先性)

2.4.1 nice 以指定的优先级来启动进程

2.4.2 renice 可以调整正在执行中的进程的优先级

范例:使用方法

#&#x67E5;&#x770B;&#x4F18;&#x5148;&#x7EA7;ni
[root@rocky01 ~]# ps axo pid,comm,ni

#nice
[root@rocky01 ~]# nice -n -10 ping 127.0.0.1
[root@rocky01 ~]# ps axo pid,cmd,nice |grep ping
 &#xA0;2118 ping 127.0.0.1 &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;-10
 &#xA0;2120 grep --color=auto ping &#xA0; &#xA0; &#xA0; &#xA0;0

#renice
[root@rocky01 ~]# renice -n -20 2118
2106 (process ID) old priority -10, new priority -20
[root@rocky01 ~]# ps axo pid,cmd,nice |grep ping
 &#xA0;2118 ping 127.0.0.1 &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;-20
 &#xA0;2200 grep --color=auto ping &#xA0; &#xA0; &#xA0; &#xA0;0

2.5 搜索进程

按条件搜索进程

  1. ps 选项 | grep ” “
  2. pgrep 按预定义的模式
  3. /sbin/pidof 按确切的程序名称查看pid

2.5.1 pgrep

格式: pgrep [options] pattern

常用选项:

  • -u uid: effective user,生效者
  • -U uid: real user,真正发起运行命令者
  • -t terminal: 与指定终端相关的进程
  • -l: 显示进程名
  • -a: 显示完整格式的进程名
  • -P pid: 显示指定进程的子进程

范例:使用方法

[root@rocky01 ~]# pgrep -lu root

2.5.2 pidof

格式: pidof [options] [program [...]]

选项: -x &#x6309;&#x811A;&#x672C;&#x540D;&#x79F0;&#x67E5;&#x627E;pid

范例:使用方法

[root@rocky01 ~]# pidof httpd
16761 16645 16644 16643 16642

[root@rocky01 ~]# cat ping.sh
#!/bin/bash
ping 127.0.0.1

#ping.sh&#x5FC5;&#x987B;&#x6709;shebang&#x673A;&#x5236;,&#x5426;&#x5219;pidof -x &#x4E5F;&#x65E0;&#x6CD5;&#x67E5;&#x627E;&#x5230;
[root@rocky01 ~]# pidof -x ping.sh
19035

2.6 uptime 负载查询

/proc/uptime 包括两个值,单位 s

  • 第一个值表示:系统启动时长
  • 第二个值表示:空闲进程的总时长(按总的CPU核数计算)

uptime 和 w 显示以下内容

  • 当前时间
  • 系统已启动的时间
  • 当前上线人数
  • 系统平均负载(1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报)

案例: 系统平均负载

指在特定时间间隔内运行队列中的平均进程数,通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题

如:linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用

[root@rocky01 ~]# uptime
 15:13:15 up  9:13,  1 user,  load average: 0.04, 0.02, 0.00

[root@rocky01 ~]# w
 15:14:30 up  9:14,  1 user,  load average: 0.06, 0.03, 0.00
...&#x7701;&#x7565;...

[root@rocky01 ~]# top
top - 15:14:41 up  9:14,  1 user,  load average: 0.05, 0.03, 0.00
...&#x7701;&#x7565;...

#load average&#xFF1A;&#x7CFB;&#x7EDF;&#x8D1F;&#x8F7D;&#x5E73;&#x5747;&#x5728;&#x8FC7;&#x53BB;&#x7684;1&#x3001;5&#x548C;15&#x5206;&#x949F;&#x5185;&#x5FD9;&#x4E0D;&#x5FD9;
#&#x503C;&#x4E00;&#x822C;&#x8D85;&#x8FC7;5&#x5C31;&#x4F1A;&#x4F7F;&#x7CFB;&#x7EDF;&#x53D8;&#x6162;

2.7 mpstat 显示CPU相关统计

来自于sysstat包

#&#x95F4;&#x9694;2&#x79D2;&#x6267;&#x884C;3&#x6B64;
[root@rocky01 ~]# mpstat 2 3
Linux 4.18.0-372.9.1.el8.x86_64 (rocky01)   09/02/2022  _x86_64_    (2 CPU)

10:34:06 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:34:08 PM  all    0.00    0.00    0.25    0.00    0.25    0.25    0.00    0.00    0.00   99.25
10:34:10 PM  all    0.00    0.00    0.00    0.00    0.25    0.00    0.00    0.00    0.00   99.75
10:34:12 PM  all    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75
Average:     all    0.00    0.00    0.17    0.00    0.17    0.08    0.00    0.00    0.00   99.58

2.8 top、htop 查看进程实时状态

2.8.1 top

Linux(进阶篇)

常见选项

  • -d #指定刷新时间间隔,默认为3秒
  • -b #全部显示所有进程
  • -n #刷新多少次后退出
  • -H #线程模式

排序:

  • P:以占据的CPU百分比,%CPU
  • M:占据内存百分比,%MEM
  • T:累积占据CPU时长,TIME
    首部信息显示:

  • uptime信息:l命令

  • tasks及cpu信息:t命令
  • cpu分别显示:1 (数字)
  • memory信息:m命令

  • 退出命令:q

  • 修改刷新时间间隔:s
  • 终止指定进程:k
  • 保存文件:W

2.8.2 htop

Linux(进阶篇)

2.9 free 内存空间

向/proc/sys/vm/drop_caches中写入相应的修改值,会清理缓存。建议先执行sync(sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)。执行echo1、2、3 至 /proc/sys/vm/drop_caches, 达到不同的清理目的

如果因为是应用有像内存泄露、溢出的问题时,从swap的使用情况是可以比较快速可以判断的,但通过执行free 反而比较难查看。但核心并不会因为内存泄露等问题并没有快速清空buffer或cache(默认值是0),生产也不应该随便去改变此值。

一般情况下,应用在系统上稳定运行了,free值也会保持在一个稳定值的。当发生内存不足、应用获取不到可用内存、OOM错误等问题时,还是更应该去分析应用方面的原因,否则,清空buffer,强制腾出free的大小,可能只是把问题给暂时屏蔽了。

排除内存不足的情况外,除非是在软件开发阶段,需要临时清掉buffer,以判断应用的内存使用情况;或应用已经不再提供支持,即使应用对内存的时候确实有问题,而且无法避免的情况下,才考虑定时清空buffer。

常用选项

  • -b 以字节为单位
  • -m 以MB为单位
  • -g 以GB为单位
  • -h 易读格式
  • -o 不显示-/+buffers/cache行
  • -t 显示RAM + swap的总和
  • -s n 刷新间隔为n秒
  • -c n 刷新n次后即退出

范例:清理缓存

[root@rocky01 ~]# cat /proc/sys/vm/drop_caches
0
[root@rocky01 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          3.6Gi       238Mi       3.0Gi       8.0Mi       399Mi       3.2Gi
Swap:         3.9Gi          0B       3.9Gi
[root@rocky01 ~]# echo 3 > /proc/sys/vm/drop_caches
[root@rocky01 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          3.6Gi       221Mi       3.3Gi       8.0Mi       112Mi       3.2Gi
Swap:         3.9Gi          0B       3.9Gi

2.10 pmap 进程对应的内存映射

格式: pmap [options] pid [...]

选项: -x: &#x663E;&#x793A;&#x8BE6;&#x7EC6;&#x683C;&#x5F0F;&#x7684;&#x4FE1;&#x606F;

#&#x4F7F;&#x7528;&#x65B9;&#x6CD5;1
[root@rocky01 ~]# pmap -x PID

#&#x4F7F;&#x7528;&#x65B9;&#x6CD5;2
[root@rocky01 ~]# cat /proc/PID/maps

2.11 vmstat 虚拟内存信息

格式: vmstat [options] [delay [count]]

[root@rocky01 ~]# 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    3415076   0   125060   0    0    45     9  112  181  0  1 99  0  0

procs
     r&#xFF1A;&#x53EF;&#x8FD0;&#x884C;&#xFF08;&#x6B63;&#x8FD0;&#x884C;&#x6216;&#x7B49;&#x5F85;&#x8FD0;&#x884C;&#xFF09;&#x8FDB;&#x7A0B;&#x7684;&#x4E2A;&#x6570;&#xFF0C;&#x548C;&#x6838;&#x5FC3;&#x6570;&#x6709;&#x5173;
     b&#xFF1A;&#x5904;&#x4E8E;&#x4E0D;&#x53EF;&#x4E2D;&#x65AD;&#x7761;&#x7720;&#x6001;&#x7684;&#x8FDB;&#x7A0B;&#x4E2A;&#x6570;(&#x88AB;&#x963B;&#x585E;&#x7684;&#x961F;&#x5217;&#x7684;&#x957F;&#x5EA6;)
memory
     swpd: &#x4EA4;&#x6362;&#x5185;&#x5B58;&#x7684;&#x4F7F;&#x7528;&#x603B;&#x91CF;
     free&#xFF1A;&#x7A7A;&#x95F2;&#x7269;&#x7406;&#x5185;&#x5B58;&#x603B;&#x91CF;
     buffer&#xFF1A;&#x7528;&#x4E8E;buffer&#x7684;&#x5185;&#x5B58;&#x603B;&#x91CF;
     cache&#xFF1A;&#x7528;&#x4E8E;cache&#x7684;&#x5185;&#x5B58;&#x603B;&#x91CF;
swap
     si&#xFF1A;&#x4ECE;&#x78C1;&#x76D8;&#x4EA4;&#x6362;&#x8FDB;&#x5185;&#x5B58;&#x7684;&#x6570;&#x636E;&#x901F;&#x7387;(kb/s)
     so&#xFF1A;&#x4ECE;&#x5185;&#x5B58;&#x4EA4;&#x6362;&#x81F3;&#x78C1;&#x76D8;&#x7684;&#x6570;&#x636E;&#x901F;&#x7387;(kb/s)
io
     bi&#xFF1A;&#x4ECE;&#x5757;&#x8BBE;&#x5907;&#x8BFB;&#x5165;&#x6570;&#x636E;&#x5230;&#x7CFB;&#x7EDF;&#x7684;&#x901F;&#x7387;(kb/s)
     bo: &#x4FDD;&#x5B58;&#x6570;&#x636E;&#x81F3;&#x5757;&#x8BBE;&#x5907;&#x7684;&#x901F;&#x7387;
system
     in: interrupts &#x4E2D;&#x65AD;&#x901F;&#x7387;&#xFF0C;&#x5305;&#x62EC;&#x65F6;&#x949F;
     cs: context switch &#xA0; &#xA0; &#x8FDB;&#x7A0B;&#x5207;&#x6362;&#x901F;&#x7387;
cpu
     us:Time spent running non-kernel code
     sy: Time spent running kernel code
     id: Time spent idle. Linux 2.5.41&#x524D;,&#x5305;&#x62EC;IO-wait time.

     wa: Time spent waiting for IO. &#xA0;2.5.41&#x524D;&#xFF0C;&#x5305;&#x62EC;in idle.

     st: Time stolen from a virtual machine. &#xA0;2.6.11&#x524D;, unknown.

2.12 iostat 统计CPU和设备IO信息

iostat 可以提供更丰富的IO性能状态数据

此工具由sysstat包提供

常用选项:

  • -c 只显示CPU行
  • -d 显示设备〈磁盘)使用状态
  • -k 以千字节为为单位显示输出
  • -t 在输出中包括时间戳
  • -x 在输出中包括扩展的磁盘指标

`
[root@rocky01 ~]# iostat
Linux 4.18.0-372.9.1.el8.x86_64 (rocky01) 09/02/2022 x86_64 (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.07 0.01 0.65 0.02 0.00 99.25

Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 3.18 79.02 15.72 365404 72707
scd0 0.03 0.37 0.00 1693 0
dm-0 2.58 67.25 14.83 310990 68574
dm-1 0.02 0.48 0.00 2220 0
dm-2 0.20 0.59 0.44 2749 2048

Original: https://www.cnblogs.com/Willoneday/p/16524732.html
Author: 会不会有那么一天
Title: Linux(进阶篇)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581490/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Centos7下载及安装

    Centos7下载及安装 1.下载虚拟机 虚拟机下载地址: https://www.vmware.com 或者 360一键安装(推荐) 2.在虚拟机上安装Centos7 2.1.通…

    Linux 2023年5月27日
    081
  • CentOS 7上安装和配置Ghost

    Ghost是一个轻量级的开源博客平台,易于使用。Ghost是完全可定制的,有许多主题可用。 在本教程中,您将在CentOS 7上设置Ghost。您还将配置Nginx以代理对Ghos…

    Linux 2023年6月13日
    055
  • CSAPP 之 BombLab 详解

    前言 本篇博客将会展示 CSAPP 之 BombLab 的拆弹过程,粉碎 Dr.Evil 的邪恶阴谋。Dr.Evil 总共设置了 6 个炸弹,每个炸弹对应一串字符串,如果字符串错误…

    Linux 2023年6月7日
    079
  • 前端Web实训项目-教务系统成绩查询

    通过暑期前半个月实训,我们选的方向是Web前端(虽然我想选Java全栈的),所以我们最终确立的主题是做一个网页。 这个项目是我们组四个人做的,因为技术水品都不咋样,所以有很多地方需…

    Linux 2023年6月7日
    0104
  • 进程

    理论知识 操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重…

    Linux 2023年6月14日
    071
  • 如何搭建android源代码repo仓库

    .版本: v0.3作者:河东西望日期:2022-7-5. 如果你的开发是基于AOSP源码来建仓,那么搭建repo服务器和部署自己的repo仓库就是非常必要的工作了。 现实中很多公司…

    Linux 2023年6月7日
    064
  • 【PHP代码审计】TP3.2某传销系统getshell

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/sevck/p/16547738.htmlAuthor:…

    Linux 2023年5月28日
    085
  • 实验一-密码引擎-商用密码算法实现1

    任务详情 参考https://weread.qq.com/web/reader/2fb3259071ef04932fbfd2ekc81322c012c81e728d9d180和网上…

    Linux 2023年6月8日
    0103
  • 质量问题不是不爆,时候未到

    没有质量,哪来效率,谈什么成本; 最近大半年,团队以极其曲折的方式,将一个支离破碎的应用从重构的边缘给拉了回来,最终项目回到了正常迭代的节奏中; 年初的时候,运营系统相关人员离职,…

    Linux 2023年6月14日
    073
  • 匿名远程启动jenkins的job

    安装jenkins插件Build Authorization Token Root job配置中的构建触发器,勾选触发远程构建,输入要用的令牌,如soul 通过jenkins地址调…

    Linux 2023年6月6日
    0107
  • 在Ubuntu机器上使用war包安装Jenkins

    因为一些需求需要迁移之前使用的Jenkins,原来是按照官方文档使用apt方式安装的,这次搬迁后的机器由于默认不通外网(可以通过代理走外网),因此趁此机会,尝试改用war包方式安装…

    Linux 2023年6月6日
    098
  • 十、进程管理

    什么是进程?进程(Process)是一个程序在其自身的虚拟地址空间的一次执行活动。之所以要创建进程,就是为了使多个程序可以并发的执行,从而提高系统的资源利用率和吞吐量。简单来说进程…

    Linux 2023年6月7日
    0129
  • GCC 内联汇编基础

    GCC 内联汇编 在 MIT6.828的实验中,有几处用到了很底层的函数,都以内联汇编的形式存在,例如 static inline uint32_t read_esp(void) …

    Linux 2023年6月8日
    071
  • C++的vector的使用方法

    vector c++的vector的使用方法,创建,初始化,插入,删除等。 #include "ex_vector.h" #include #include #…

    Linux 2023年6月14日
    077
  • Redis 事务

    一、概述 和传统关系型数据库一样,Redis 同样是支持事务的。Redis 的事务可以通过 MULTI/EXEC/DISCARD/WATCH 等命令来实现。 二、事务的 ACID …

    Linux 2023年5月28日
    085
  • [Linux] 如何在 Linux 电脑上制作专业的视频教程

    前言 1、软件工具准备 a. 录音软件 b. 录屏软件 c. 摄像头软件 d. 安卓屏幕操作软件 e. 视频剪辑软件 2、视频教程制作 3、效果 参考链接 前言 博主使用 Arch…

    Linux 2023年6月8日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球