Linux 中的进程管理

1、进程的定义

进程的定义:
程序是静态的代码文件
进程是指程序运行时的形态
进程是程序的一个副本
进程是有生命周期的(准备期、运行期、终止期)

进程和线程 (线程是在cpu为多核的时候提出的,单核没有线程的说法)
进程是资源调用的最小单位
线程是进程的最小单位 线程是为了缩短进程的时间

程序执行流是从上到下贯穿运行的
当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程,线程资源是共享的。

2、进程的状态

命令用户
R(TASK——RUNNING)可执行态(running,ready)
S(TASK——INTRRUPTABLE)可唤醒状态 ,进程被cpu处理时间是有限的,超过时间就进入休眠状态
D(TASK——UNINTRRUPTABLE)不可唤醒状态
T(TASK——STOP)暂停状态 (认为控制,可以人为停止,认为启动)
Z(EXIT——ZOMBIE)僵死态 (当进程出现bug 时出现的状态,当进程结束时,如果还占用系统资源不放,就需要手动结束,,这种越多,系统崩溃越快)

3、进程查看命令

  1. 进程查看命令

    gnome -system-moniter ## 图形进程查看工具

ps

命令用户
a与终端相关的进程 (当用户登陆系统后产生的进程都是终端的)
x与终端无关相关的进程
u用户信息归类的查看方式
f进程层级关系
o显示指定参数 pid comm nice pri (进程的优先级) pcpu(副极进程占用的cpu ) ppid (副极进程的Pid) stat, user ,group
-e显示所有进程
-f显示信息的完整格式
-H显示进程的层级结构
-o显示指令参数
–sort=表示排序
[root@foundation50 Desktop]# ps ax  显示所有进程

[root@foundation50 Desktop]# ps aux    用户信息的查看方式
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1 245508 14228 ?        Ss   08:53   0:06 /usr/lib/syst
emd/systemd --switched-root --system --deserialize 18
root           2  0.0  0.0      0     0 ?        S    08:53   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   08:53   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   08:53   0:00 [rcu_par_gp]
root           6  0.0  0.0      0     0 ?        I<   08:53   0:00 [kworker/0:0H
-events_highpri]
root           8  0.0  0.0      0     0 ?        I<   08:53   0:00 [mm_percpu_wq

[root@foundation50 Desktop]# ps ax -o comm,%cpu,%mem,pid,ppid  显示指定参数
COMMAND         %CPU %MEM     PID    PPID
systemd          0.0  0.1       1       0
kthreadd         0.0  0.0       2       0
rcu_gp           0.0  0.0       3       2
rcu_par_gp       0.0  0.0       4       2
kworker/0:0H-ev  0.0  0.0       6       2
mm_percpu_wq     0.0  0.0       8       2
ksoftirqd/0      0.0  0.0       9       2
rcu_sched        0.0  0.0      10       2

[root@foundation50 Desktop]# ps ax -o %cpu,comm --sort=%cpu  按照cpu正序排序
 0.0 sleep
 0.0 ps
 0.1 sssd_kcm
 0.1 chrome
 0.2 pulseaudio
 0.3 chrome
 0.6 chrome
 0.7 Xorg
 1.1 gnome-shell
 1.7 chrome
 2.5 chrome
 7.3 chrome
13.3 chrome
[root@foundation50 Desktop]# ps ax -o %cpu,comm --sort=-%cpu  按照cpu到序排序
%CPU COMMAND
 8.6 chrome
 4.4 chrome
 2.5 chrome
 1.7 chrome
 1.1 gnome-shell
 0.7 Xorg
 0.6 chrome
 0.3 chrome
 0.2 pulseaudio
 0.1 sssd_kcm
 0.1 chrome
 0.0 systemd
 0.0 kthreadd
[root@foundation50 Desktop]# ps  f   显示进程层级关系
  PID TTY      STAT   TIME COMMAND
      2 ?        S      0:00 [kthreadd]
      3 ?        I<     0:00  \_ [rcu_gp]
      4 ?        I<     0:00  \_ [rcu_par_gp]
      6 ?        I<     0:00  \_ [kworker/0:0H-events_highpri]
      8 ?        I<     0:00  \_ [mm_percpu_wq]
      9 ?        S      0:00  \_ [ksoftirqd/0]
     10 ?        I      0:08  \_ [rcu_sched]
     11 ?        S      0:00  \_ [migration/0]
     12 ?        S      0:00  \_ [watchdog/0]
     13 ?        S      0:00  \_ [cpuhp/0]
     14 ?        S      0:00  \_ [cpuhp/1]
     
[root@foundation50 Desktop]# ps -H  显示进程层级关系
    PID TTY          TIME CMD
   2804 pts/0    00:00:00 su
   2810 pts/0    00:00:00   bash
   2970 pts/0    00:00:00     su
   2973 pts/0    00:00:00       bash
  11219 pts/0    00:00:00         ps

[root@foundation50 Desktop]# ps -e  查看所有进程

ps ax 显示信息如下:

PID进程id
TTY进程用到的终端
STAT进程状态
TIME进程占用 cpu 时长
COMMAND进程名称

ps aux 显示信息如下:

USER进程所有人
PID进程id
%CPU进程使用cpu 的用量
%MEM进程所有用到的内存用量
RSS进程常驻内存中的数据大小
VSZ进程使用的虚拟内存大小
TTY进程用到的终端
STAT进程状态
START进程运行时长
TIME进程占用 cpu 时长
COMMAND进程名称

4 、pgrep 进程过滤

命令功能
-u uid显示指定用户进程
-U user显示指定用户进程
-t tty显示指定终端进程
-l显示进程名称
-a显示进程的完整名词
-p进程的子进程
[root@foundation50 Desktop]$ pgrep -u 0   过滤超级用户的进程
501
502
505
506
507
3716 chrome
[root@foundation50 Desktop]$ pgrep -lU westos 显示进程名称
2904 crashpad_handle
2910 chrome
2911 chrome
2912 nacl_helper
2915 chrome
2934 chrome
2938 chrome
2946 chrome
[root@foundation50 Desktop]$ pgrep -aU westos   显示进程完整的名字
2026 /usr/libexec/at-spi2-registryd --use-gnome-session
2045 /usr/bin/gnome-shell
2055 /usr/libexec/gvfsd
[westos@foundation50 Desktop]$ pgrep -P 2709  显示子进程
2715
[root@foundation50 Desktop]# pgrep -t pts/1  显示指定终端进程
4569
4602
4608

5 、 pidof 查看命令产生进程id

命令功能
pidof (查看一个命令产生的进程id 是多少) vim查看vim 的pid
[root@foundation50 Desktop]# pidof bash
4608 4569 1028
[root@foundation50 Desktop]# pidof cat
2900 2899

6、top动态进程查看

6.1、top命令的参数(外部)默认刷新频率为3秒。

命令功能
-d指定刷新频率 (-d 1 ,指定刷新频率为1秒。 结束用q)
-b以批次方式显示(-b 结束方式用ctrl +c结束, -n -b (n指定几个批次,执行完之后就自动结束)
-n指定显示的批次数量 -n(会自动进入到top 内部查看 )
[root@foundation50 Desktop]# top -d 1  一秒钟刷新一次进程
[root@foundation50 Desktop]# top -b  以批次方式显示进程
[root@foundation50 Desktop]# top -b -n 2  以2个批次方式显示

6.2 top 内部命令 (再用TOP 打开动态进程之后,然后按相应的命令即可得到相应的效果)

命令功能
Pcpu 排序
M内存排序
T累计占用cpu 时间排序
l关闭/开启 uptime (负载 也就是第一行top )信息
t关闭/开启 cpu&task 信息
s指定刷新频率
k操作进程 (用id 来管理进程看是关闭还是怎么样)
u查看指定用户进程 ( 指定用户的名称查看指定用户的进程,按u 之后如果什么都不按就会查看所有的进程)

top 中的内容显示信息 按l 则top信息就开启,如下:

top - 20:56:31 up 25 min,  1 user,  load average: 0.75, 0.53, 0.41 
 top -  中信息表示
09:48:51     系统时间
up  18:54      运行时长
1 users       系统中有一个用户登陆
load  average : 0.75, 0.53, 0.41|   cpu的负载,分别表示1min  5min  15min cpu队列中进程等待的时长

%Cpu(s) 内容信息,按t 则cpu信息就开启了,再次按tcpu信息就关闭了

%Cpu(s):  1.5us,  1.9 sy,  0.0 ni, 58.9 id,  0.0 wa,  2.1hi,  0.2 si,  0.0 st                            
#%Cpu(s)
#1.5 us           用户空间
#1.9 sy            内核空间
#0.0 ni           nice 值调整时间                           
#58.9 id          空闲时间
#0.0 wa           等待io输出时间
#2.1 hi           处理硬件中断时间
#0.2 si           处理软件中断时间                           
#0.0 st           被偷走的时间(虚拟机 所用到的所有的cpu 的时间,vm使用时间)

s 指定刷新频率,默认为三秒

按s,然后输入指定刷新频率时间
Change delay from 3.0 to 1

k 操作进程 (用id 来管理进程看是关闭还是怎么样)

按k
PID to signal/kill [default pid = 4947] :  7840 (输入需要操作的进程id),回车
Send pid 7840 signal [15/sigterm] 15  (15为删除该进程)

Taxts 里面的信息

Tasks: 282 total,   3 running, 329sleeping,   0 stopped,   0 zombie
 331 total       任务总量
 3 running        正在运行
 329 sleeping    休眠任务数量
 0 stopped        被暂停数量
0 zombie         僵死任务数量

MiB Mem 里面信息内容:

MiB Mem :  11885.5 total,   8541.9 free,   1612.1 used,   1731.6 buff/cache
7664.6   total       内存总量
5383.9   free        空闲 
1312.1   used        占用
968.8    buff(cpu在运行程序时,从硬盘里加载程序数据到内存里)/cache(将要从内存保存到硬盘的数据为缓存)         缓存

MiB Swap: 虚拟交换分区用量,如上

MiB Swap:   6008.0 total,   6008.0 free,      0.0 used.   9616.3 avail Mem 

top 表头表示的内容

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
 #PID              进程id
#USER             进程所有者的用户名                           
 #PR               优先级
#NI               nice 值。负值表示高优先级,正值表示低优先级
#VIRT             进程使用的虚拟内存总量,单位 kb 。VIRT=SWAP+RE
 #RES              进程使用的、未被换出的物理内存大小,单位kb。   RES=CODE+DATA
 #SHR              共享内存大小,单位kb
 #S                进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止 ,Z=僵尸进程)
 #%CPU             上次更新到现在的CPU 时间占用百分比
#%MEM             进程使用的物理内存百分比
 #TIME+            进程使用的CPU 时间总计,单位 1/100秒
#COMMAND          命令名 /命令行

7. 进程优先级

系统是多任务多用户的操作模式
任务的重要性是有区分的
如何确定任务的重要性
“优先级”
范围: 0–139
内核自控优先级范围 :0–99
用户可控优先级:100–139 he pri的数值不一样
用nice直来调整优先级 ,nice (nice 值) (普通用户的优先级只能调低,不能调高,值越负优先级越高))
-20(对应用户可控级别的100)–19(19 对应139)这是在Linux 中的

ps ---- >pri(优先级策略) — 39- 0 (在 UNIX 中使用的优先级是从39-0,在UNIX中值越正优先级越高)
nice -20 - 19
priority 39 - 0(真正 0-139 (100-139 用户可用优先级)

7.1 、更改优先级

命令功能
renice -n -5 4331##更改优先级
[root@foundation50 Desktop]# ps ax -o comm,pri,nice | grep cat 
cat              19   0
[root@foundation50 Desktop]# ps ax -o pid,comm,pri,nice | grep cat
   2759 cat              19   0
[root@foundation50 Desktop]# renice -n -5 2759  更改优先级为-5  直越小优先级越高
2759 (process ID) old priority 0, new priority -5
[root@foundation50 Desktop]# ps ax -o pid,comm,pri,nice | grep cat  查看
   2759 cat              24  -5
[root@foundation50 Desktop]# renice -n 5 2759
2759 (process ID) old priority -5, new priority 5
[root@foundation50 Desktop]# ps ax -o pid,comm,pri,nice | grep cat 更改优先级为5  直越大优先级越低
2759 cat              14   5

7.2 、指定优先级

命令功能
nice -n -5 cat## 指定优先级打开进程
[root@foundation50 Desktop]# ps ax -o pid,comm,pri,nice | grep cat  默认优先权限为0
   2759 cat              19   0
[root@foundation50 Desktop]# nice -n -5 cat 指定权限为 -5
[root@foundation50 Desktop]# ps ax -o pid,comm,pri,nice | grep cat 查看优先级
   2759 cat              19   -5  

8.STAT(状态) 的显示信息

命令功能
Ssleeping
<优先级高
s顶级进程 过滤时不要ax 就可以显示
Tstop ctrl+z 打入后台就进入了停止 的状态。
N优先级底
Rrunning
+运行在前台
l内存中有锁定空间
[root@foundation50 Desktop]# ps -o comm,pid,stat,nice
COMMAND             PID STAT  NI
bash               3628 SN     5   休眠优先级低
[root@foundation50 Desktop]# renice -n 5 3628 修改优先级
[root@foundation50 Desktop]# ps -o comm,pid,stat,nice
COMMAND             PID STAT  NI
bash               3628 S<    -5    休眠优先级高
[root@foundation50 Desktop]# ps -o comm,pid,stat,nice
COMMAND             PID STAT  NI
ps                  5687 R<+   -5   运行在前台优先级高
[root@foundation50 Desktop]# gedit & 后台运行
dfrgtjhydfgrdfgdhthtyjhtyjryjtyjtfhrd
[root@foundation50 Desktop]# ps -o comm,pid,stat,nice
COMMAND             PID STAT  NI
gedit              5773 S<l   -5  内存中有锁定空间优先级高睡眠状态

9.进程前后台调用

命令功能
+##把占用的shell 的进程打入后台挂起
bg + job号##把后台挂起的进程运行起来
fg + job号##把后台进程调回前台
&##运行进程在后台 gedit & 在打开gedit 的时候就是在后台中运行。
jobs##查看当前shell 中在后台的所有工作

10、进程信号 (有1-31这些信号)

命令功能
1#从新加载系统配置文件 (source) (游戏中的不停服更新)
2#清空内存中的进程数据
3#清空内存中的鼠标(ctrl + \)
9#强行结束进程 (不能被阻塞)
15#正常关闭进程 (内核权衡这个进程的重要性,要是重要就会被阻塞)
18#运行被暂停的进程 ( 阻塞时输入的信息,在被运行时会立即输入进程)
19#暂停进程 (不会被阻塞)
20#暂停进程 (会被阻塞)
[root@westosa Desktop]# ps 
    PID TTY          TIME CMD
   7128 pts/0    00:00:00 bash   查看bash的id
   7938 pts/0    00:00:00 ps
[root@foundation50 Desktop]# fshfgkghkfdghdfgk  在shell里输入内容,这些内容在内存中
[root@foundation50 Desktop]# kill -2 7128  -2  清空内存中未被锁定的进程数据
[root@foundation50 Desktop]# fshfgkghkfdghdfgk^C
[root@foundation50 Desktop]# 
按ctrl + \  鼠标弓形就会不见,动鼠标鼠标弓形就会出现
[root@foundation50 Desktop]# gedit  图形打开i文件
[root@foundation50 Desktop]# ps
    PID TTY          TIME CMD
   9104 pts/2    00:00:00 bash
  10101 pts/2    00:00:00 gedit
  10113 pts/2    00:00:00 ps
[root@foundation50 Desktop]# kill -15 9104 正常关闭shell,发现无法关闭,因为gedit正在shell基础上运行,shell正在忙!!!
[root@foundation50 Desktop]# ps
    PID TTY          TIME CMD
   9104 pts/2    00:00:00 bash    进程还在运行
  10101 pts/2    00:00:00 gedit   
  10139 pts/2    00:00:00 ps
[root@foundation50 Desktop]# kill -9 9104  用-9强制删除
Killed
[root@foundation50 Desktop]# gedit  
按ctrl + z 打入后台暂停
[1]+  Stopped                 gedit
[root@foundation50 Desktop]# kill -18 10573  运行被暂停的进程
[root@foundation50 Desktop]# kill -19 10819  暂停进程 (不会被阻塞)
[root@foundation50 Desktop]# kill -20 10819  暂停进程 (会被阻塞)

11、进程信号控制工具

命令功能
kill -进程信号 pidd 只能一次结束一个
killall -进程信号 进程名字名称可以一次结束多个
pkill -进程信号 进程条件-u westos 表示结束这个用户的进程,但有时候会被阻塞,可以再加上-9
[root@foundation50 Desktop]# ps
    PID TTY          TIME CMD
  10813 pts/1    00:00:00 su
  10819 pts/1    00:00:00 bash
  10980 pts/1    00:00:00 vim
  10987 pts/1    00:00:00 vim
  10994 pts/1    00:00:00 vim
  11001 pts/1    00:00:00 ps
[root@foundation50 Desktop]# kill -9 10980  只能结束一个
[1]   Killed                  vim
[root@foundation50 Desktop]# killall -9 vim  名称可以一次结束多个
[2]-  Killed                  vim
[3]+  Killed                  vim
[root@foundation50 Desktop]# ps
    PID TTY          TIME CMD
  10813 pts/1    00:00:00 su
  10819 pts/1    00:00:00 bash
  11118 pts/1    00:00:00 ps
 [root@foundation50 Desktop]# pkill -9 -u westos 指定关闭westos的进程 ,把所有westos进程关掉
 Killed
Killed
Killed

12、systemd 守护进程 (管理次重要的进程,受内核控管,相当于内核的帮手)

pstree可以看到守护进程的情况
systemd守护进程的管理工具systemctl
systemctl命令的用法:

命令功能
start## 开启
stop## 关闭
status## 查看状态
reload## 重新加载 (不是所有的服务都支持)
restart## 重新启动服务
enable## 设定服务开机启动 (不会影响当前的状态,当再次开启时会变化)
enable --now## 设定服务开机启动并且当前开启服务
disable## 设定服务开启不启动 (不会影响当前的状态,当再次开启时会变化)
disable --now## 设定服务开机不启动并且当前开启服务
list-units## 查看系统所有服务当前状态
list-unit-files## 查看服务开机状态
list-dependencies## 列出服务依赖性
mask## 冻结服务
unmask## 解锁
[root@foundation50 Desktop]# systemctl status sshd  查看sshd服务状态
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset>  
   Active: active (running) since Tue 2021-08-24 21:57:12 CST; 54s ago  处于运行状态
     Docs: man:sshd(8)
[root@foundation50 Desktop]# systemctl stop sshd  关闭sshd服务
[root@foundation50 Desktop]# systemctl status sshd 查看状态
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset>
   Active: inactive (dead) since Tue 2021-08-24 21:59:18 CST; 5s ago   处于关闭状态
[root@foundation50 Desktop]# systemctl start sshd  开启sshd服务
[root@foundation50 Desktop]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset>
   Active: active (running) since Tue 2021-08-24 22:01:00 CST; 4s ago   处于开启状态,这些都是开机后的状态,若关机再开机服务是什么状态,取决于开机自启服务是开启还是关闭 
[root@foundation50 Desktop]# systemctl enable sshd  设定服务开机启动
[root@foundation50 Desktop]# systemctl status sshd  
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset> 出现enable,不会影响当前的状态,当再次开启时会变化
   Active: active (running) since Tue 2021-08-24 22:01:00 CST; 5min ago
[root@foundation50 Desktop]# systemctl enable --now sshd   设定服务开机启动并且当前开启服务
[root@foundation50 Desktop]# systemctl status sshd 
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset>  enable 出现 ,并且当前服务也会开启
   Active: active (running) since Tue 2021-08-24 22:01:00 CST; 11min ago
[root@foundation50 Desktop]# systemctl disable sshd.service   设定服务开机不启动
Removed /etc/systemd/system/multi-user.target.wants/sshd.service.
[root@foundation50 Desktop]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor prese>  出现disabled,不会影响当前状态,当再次开启时会变化
   Active: active (running) since Tue 2021-08-24 22:01:00 CST; 13min ago
[root@foundation50 Desktop]# systemctl disable --now sshd    设定服务开机不启动并且当前关闭服务
[root@foundation50 Desktop]# systemctl sta
start   status  
[root@foundation50 Desktop]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor prese>  disabled出现,并且服务关闭
   Active: inactive (dead)
[root@foundation50 Desktop]# systemctl mask sshd  冻结sshd服务  
Created symlink /etc/systemd/system/sshd.service → /dev/null.
[root@foundation50 Desktop]# systemctl stop sshd  
[root@foundation50 Desktop]# systemctl start sshd  
Failed to start sshd.service: Unit sshd.service is masked.    sshd服务不能被开启
[root@foundation50 Desktop]# systemctl unmask sshd.service   解锁sshd服务
Removed /etc/systemd/system/sshd.service.
[root@foundation50 Desktop]# systemctl start sshd  开启sshd服务
[root@foundation50 Desktop]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor prese>  服务开启
   Active: active (running) since Tue 2021-08-24 22:24:02 CST; 8s ago
[root@foundation50 Desktop]# systemctl list-units    查看系统所有服务当前状态
  UNIT                        LOAD   ACTIVE SUB       DESCRIPTION              
  proc-sys-fs-binfmt_misc.automount loaded active waiting   Arbitrary Executabl>
  sys-devices-pci0000:00-0000:00:02.0-drm-card0-card0\x2deDP\x2d1-intel_backlig>
  sys-devices-pci0000:00-0000:00:03.0-sound-card0.device loaded active plugged >
  sys-devices-pci0000:00-0000:00:1b.0-sound-card1.device loaded active plugged >
  sys-devices-pci0000:00-0000:00:1c.2-0000:03:00.0-net-wlp3s0f0.device loaded a>
[root@foundation50 Desktop]# systemctl list-unit-files  查看服务开机状态
UNIT FILE                                  STATE    
proc-sys-fs-binfmt_misc.automount          static   
-.mount                                    generated
boot-efi.mount                             generated
boot.mount                                 generated
dev-hugepages.mount                        static   
dev-mqueue.mount                           static   
proc-fs-nfsd.mount                         static   
proc-sys-fs-binfmt_misc.mount              static   
sys-fs-fuse-connections.mount              static   
[root@foundation50 Desktop]# systemctl list-dependencies 列出服务依赖性
default.target    default.target  为sshd服务的依赖性
● ├─accounts-daemon.service
● ├─gdm.service
● ├─rtkit-daemon.service
● ├─systemd-update-utmp-runlevel.service
● ├─udisks2.service 

13、设定系统运行模式set-default

命令功能
systemctl set-default multi-user.target无图形网络模式 , 运行后reboot,就为无图形界面,若要恢复图形则startx这种方式运行级别不会发生改变,而用init5后运行级别会发生改变 运行级别用runlever查看 init5 是在3的基础上开了个5
systemctl set-default graphical.target有图形的网络模式
get-default ## 查看系统运行模式

系统运行模式可以用 runlevel查看运行级别 # 0-6
# 0 POWEROFF
# 1 single (改密码)
# 2 noG+NETWORK
# 3 (2-4 是无图形的网络模式)
# 4
# 5 G+NETWORK (有图形的网络模式)
# 6 REBOOT

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小莫细说linux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值