Linux进程管理

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

前言

只有光头才能变强

回顾前面:

这篇主要讲解在Linux下进程的管理。

那么接下来就开始吧,如果文章有错误的地方请大家多多包涵,不吝在评论区指正哦~

声明:基于Centos6.9

一、Linux下的进程

每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux**给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一**的。

Linux 给每个进程都打上了运行者的标志,用户可以控制自己的进程:给自己的进程分配不同的优先级,也可以随时终止自己的进程。

  • 进程从执行它的用户处继承UID、GID,从而决定对文件系统的存取和访问。

Linux 不可能在一个 CPU 上同时处理多个任务(作业)请求,而是采用 “分时” 技术来处理这些任务请求。

使用PID区分不同的进程

  • 系统启动后的第一个进程是init,它的PID是1。init是唯一一个由系统内核直接运行的进程。
  • 除了init之外,每个进程都有父进程(PPID标识)
  • 每个进程还有四个与用户和组相关的识别号

    • 实际用户识别号 (real user ID,RUID)
    • 实际组识别号 (real group ID,RGID)
    • 有效用户识别号 (effect user ID,EUID)
    • 有效组识别号 (effect group ID,EGID)

      1. RUID和RGID的作用:识别正在运行此进程的用户和组。
      2. EUID和EGID的作用:确定一个进程对其访问的文件的权限。

进程类型:

  • 交互进程
    • 由一个Shell启动的进程。
    • 交互进程既可以在前台运行,也可以在后台运行。
  • 批处理进程
    • 不与特定的终端相关联,提交到等待队列种顺序执行的进程。
  • 守护进程(Daemon)
    • 在Linux在启动时初始化,需要时运行于后台的进程。

进程的启动方式:

  • 手工方式:使用操作系统提供的用户接口
    • 前台
    • 后台 (&)
  • 调度方式:按照预先指定的时间执行
    • at
    • batch
    • cron

前台进程:

  • 指一个程序控制着标准输入/输出,在程序运行时,shell 被暂时挂起,直到该程序运行结束后,才退回到 shell。在这个过程中,用户不能再执行其它程序

后台进程:

  • 用户不必等待程序运行结束就可以执行其它程序。运行后台进程的方法是在命令行最后加上 “&”

进程和作业的区别:

  • 进程:操作系统的概念,由操作系统负责管理
  • 作业:shell程序的概念,由shell程序负责管理
    • 一个操作系统可以启动多个shell程序,shell本身也是一个进程
    • 一个作业里至少包含一个进程,也可以包含多个进程
    • 作业分前台和后台运行之分

有了上面的知识点,我们就可以画出这么一张流程图:

1.1管理进程常用命令

使用ps命令查看进程状态信息:

  • ps -ef
  • ps aux

ps命令参数说明:

ps命令输出说明:

还有其他几个常用命令:

  • 注销后继续运行进程:nohup 命令 [选项] [参数] [输出文件] &
    • 用过SpringBoot打jar包部署到Linux下的同学对上面这个命令一定不会陌生啦~
  • 杀死进程:kill pid -9
  • free:查看内存使用状况
  • top :查看实时刷新的系统进程信息
  • 进程调度的优先权nice命令:
  • 进程运行后调整优先级:renice命令。

作业控制是指控制当前正在运行的进程的行为,也被称为进程控制。

  • 暂时停止某个运行程序 使用Ctrl+z
  • 列举作业号码和名称:jobs
  • 在后台恢复运行:bg [%作业号码]
  • 在前台恢复运行:fg [%作业号码]
  • 发送信号:kill -[信号] pid

1.2进程练习题

以root账户登录,运行ps命令,选项分别用-a和-af;观察对比结果,并截图;运行ps命令,选项为-ef,观察结果;运行ps,选项为au,观察结果,并截图。

切换到jkXX账户,用长格式列出/usr/bin/passwd命令,观察命令的权限属性;用后台方式运行passwd命令;运行ps命令,选项为-ao,参数为user,pid,ruid,euid,tty,cmd,观察结果并截图

切换到peter账户,用后台执行命令ls -l /usr/bin | more &,观察结果;上述命令再次执行两遍,观察结果;执行ps命令,选项为au,观察有哪些进程在运行;执行命令jobs,查看有哪些作业在运行;通过fg命令把后台命令转移到前台,使之结束,观察剩余作业;直到作业全部结束。

切换到jason账户,用nice命令启动在后台启动vi编辑软件,优先级增加10,用ps命令,选项为-l观察vi进程的优先级;用nice命令启动在后台启动vi编辑软件,优先级减少10,观察结果,为什么不成功;切换到root账户,用nice命令启动在后台启动vi编辑软件,优先级减少10;

ps命令中显示TTY代表什么?

答:tty代表字符终端。

ps命令的输出结果,哪个进程的状态为运行状态?哪个进程为休眠状态?

答:ps au命令的进程是运行状态,用R表示;其余的都是休眠状态。

passwd命令的euid为多少,它在执行中应获得谁的权限?

答:euid为0,它在执行中应获得文件所有者root的权限。

如果用chmod命令把passwd命令的suid属性去掉,在普通账户下运行passwd命令,可以修改密码吗?为什么?

答:不可以,因为passwd命令要修改shadow文件,shadow文件是root用户的,普通账户运行passwd命令,没有获得root用户权限,无法修改shadow文件。

nice命令减少优先级的值,需要什么样的权限?

答:需要root用户权限

二、守护进程

始终在后台运行并响应合法请求的程序称为守护(Daemon)进程。守护进程不是由用户启动运行的,也不与终端关联。

  • 一个实际运行中的系统一般会有多个守护进程在运行,且各个系统中运行的守护进程都不尽相同。
  • 除非程序异常中止或者人为终止,否则它们将一直运行下去直至系统关闭。
  • UNIX/Linux的守护进程在Windows系统中被称作“服务”。

守护进程的分类:

  • 系统守护进程
    • 计划性任务 daemon:如 atd、crond
    • 系统日志 daemon:如 rsyslogd
    • 打印假脱机 daemon:如 cupsd、lpd
    • 网络参数设置 daemon:如 network
  • 网络守护进程:
    • 各种网络协议侦听 daemon
    • 如:sshd、httpd、postfix、vsftpd
  • 网络超级服务器(Supper Server)
    • 如:xinetd 或 inetd

超级服务器的引入xinetd:

  • 对于系统所要提供的每一种网络服务,都必须运行一个监听某个端口连接发生的守护程序,这通常意味着系统资源的浪费。
  • 为了避免系统资源浪费引入了“超级服务器”。超级服务器启动后同时监听它所管理的服务的所有端口
  • 当有客户提出服务请求时
    • 超级服务器会判断这是对哪一个服务的请求,然后再开启与此服务相应的守护进程
    • 由超级服务器产生的某服务的进程处理客户的请求,当处理结束便终止此服务进程
    • 超级服务器本身继续监听其他服务请求

守护进程的启动方式:

  • 独立启动
    • 独立运行的守护进程由init脚本负责管理,脚本存放在/etc/rc.d/init.d/目录下
    • 所有的系统服务都是独立运行的。如:crond、syslogd等
    • 一些常用的网络守护进程是独立运行的。如:httpd等
  • 瞬态启动
    • 由网络超级服务器(xinetd)运行的守护进程,由xinetd管理的守护进程的配置文件存在/etc/xinetd.d/目录下
    • 默认的xinetd的主配置文件是/etc/xinetd.conf
    • 一些不常用的网络守护进程是由xinetd启动的,如:telnet、 tftp等
    • xinetd本身是独立运行的守护进程

2.1管理守护进程常用命令

chkconfig命令的功能

  • 添加指定的新服务
  • 清除指定的服务
  • 显示由chkconfig管理的服务
  • 改变服务的运行级别
  • 检查服务的启动状态

chkconfig --list会显示出对应的运行级别:

  • 0: 关机
  • 1: 单用户
  • 2: 无网络的多用户
  • 3: 命令行模式
  • 4: 未用
  • 5: GUI(图形桌面 模式)
  • 6 : 重启

用ntsysv管理守护进程

使用service管理守护进程

  • service --status-all
  • service server-name status
  • service server-name start|stop|restart

2.2守护进程练习题

安装守护进程工具ntsysv,并运行它;通过ntsysv界面,取消crond的自动启动,通过命令chkconfig来检查crond自动运行是否被取消;通过chkconfig命令设置crond启动启动,通过ntsysv检查结果;观察结果,并截图

编辑xinetd的主配置文件,修改链接instances = 2,重新启动xinetd;用putty以telnet方式连接到linux,用pstree命令观察xinetd启动的telnet进程数量;继续开启telnet链接,直到连接超过限制

编辑系统服务文件services,修改telnet服务的端口为27,重启xinetd;用putty以telnet方式连接到linux,显示当前的网络链接;恢复telnet默认的服务端口,并检查;观察结果,并截图。

telnet服务端口可以改变吗?如果可以改变,连接telnet服务应注意什么问题?

答:telnet服务端口可以改变。连接telnet服务的时候,应该注意端口号修改为正在提供telnet服务的端口号。

修改telnet配置文件,需要xinetd服务重启吗?为什么?

答:需要重新启动xinetd服务,因为xinetd作为超级服务器,它负责管理telnet服务的启动,也要同时查看telnet的服务配置文件。当telnet服务配置文件修改的时候,xinetd服务需要知道配置文件的变化,重新启动会重新读取配置文件的内容,使之生效。

Telnet为什么可以看到脚本程序的执行结果?

答:telnet是一个远程的字符界面的网络工具,它实现了远程字符界面的标准输入和输出功能;脚本执行的结果是输出到标准输出设备,也就是字符界面的屏幕,telnet将标准输出通过网络传递到telnet客户端的屏幕上显示,因此它可以看到脚本程序执行的结果。

通过ntsysv命令和chkconfig命令打开守护进程启动运行的结果是否完全一样?有什么不同?

答:ntntsysv命令关闭守护进程,只是改变了当前用户运行级别的守护进程开关,具体来说,改变了3号运行级别命令行模式的守护进程开关。chkconfig命令默认改变3、4、5级别的全部开关,chkconfig还可以指定某个运行级别的守护进程开关。

三、安排自动化任务

调度任务的守护进程:

  • atd
  • crond

安排调度任务的几个命令:

  • at 安排作业在某一时刻执行一次
  • batch 安排作业在系统负载不重时执行一次
  • cron 安排周期性运行的作业

3.1atd守护进程

atd守护进程负责监控一次性任务的执行,atd守护进程的执行参数/etc/sysconfig/atd

控制普通用户的使用

  • 若/etc/at.allow存在,仅列在其中的用户允许使用
  • 若/etc/at.allow 不存在,检查/etc/at.deny,没有列于其中的所有用户允许使用
  • 若两个文件均不存在,仅允许root用户使用
  • 空的/etc/at.deny文件,表示允许所有用户使用(默认值)

如何使用:

  • 安装命令yum install at
  • atd的启动service atd start
  • atd服务的查看chkconfig --list | grep atd或者ps -aef | grep atd
  • at 命令格式及参数 at [-q 队列] [-f 文件名] 时间

3.2cron

  • crond守护进程负责监控周期性任务的执行
  • crond守护进程的执行参数配置文件/etc/sysconfig/crond

控制普通用户的使用

  • 若/etc/cron.allow存在,仅列在其中的用户允许使用
  • 若/etc/cron.allow 不存在,检查/etc/cron.deny,没有列于其中的所有用户允许使用
  • 若两个文件均不存在,仅允许root用户使用
  • 空的/etc/cron.deny文件,表示允许所有用户使用(默认值)

crond启动以后,每分钟唤醒一次,检测如下文件的变化并将其加载到内存

  • /etc/crontab:是crontab格式(man 5 crontab)的文件
  • /etc/cron.d/*:是crontab格式(man 5 crontab)的文件
  • /var/spool/cron/*:是crontab格式(man 5 crontab)的文件
  • /etc/anacrontab:是anacrontab格式(man 5 anacrontab)的文件

3.3安排自动化任务练习

安装at计划任务服务,并且启动它;在下午茶的时间,检查网卡信息;在两分钟之后,开启防火墙;2019年6月1日凌晨两点,服务器重启;明天晚上9点,关闭eth1;用命令检查正在等待的计划任务;用at -c检查正在等待任务的具体内容;删除其中一条任务,观察结果。观察结果,并截图

编辑一个文件myatXX(XX为学生的学号末两位),要求按顺序执行如下命令:返回用户主目录;查看用户账户名;查看当前系统运行的所有进程,并将记录保存到文件ps.log中;添加一个计划任务,要求下午5点执行文件中的命令;观察结果,并截图

用普通账户jsjXX登录,添加一个计划任务,明天中午关闭eth0;更改at命令的相关配置文件,禁止jsjXX执行at命令,试验证之

修改crontab文件,添加一个新的周期任务,要求如下:每间隔6个小时,把服务器正在监听的端口信息,保存到/root/net.txt文件中;每周五或者10,20,30日上午9:00到下午15:00,每个小时第10分钟,清除目录/tmp下的所有文件

添加一个脚本,要求:每月执行该任务,查找/home目录下30天没有修改的文件,并删除它;脚本名称为clean-home

登录jsj08 账务,用crontab -e命令编写一个周期任务,要求每个2分钟按顺序执行:显示当前系统时间;显示账户名;显示当前账户的进程信息;以上命令的结果,全部以追加式方式保存到用户主目录下文件,文件名为myplanXX(XX为学生的学号末两位)。用crontab -l检查编写的任务

myatXX文件是否要修改权限,才能执行?

答:不需要。atd服务只是从myatXX文件中读取内容,真正执行的命令会存放在另外一个文件,我们用at -c命令可以看到这个真正执行文件内容。

脚本放在哪个目录下?脚本需要添加可执行属性吗?

答:脚本根据不同的周期放到不同的目录下,本题以月为周期执行,因此放入/etc/cron.monthly目录下。脚本需要添加可执行属性,因为这是真正可执行的脚本。

普通用户可以修改at服务的配置文件吗?

答:修改at配置文件需要root权限,普通用户不可以修改at的配置文件。

四、总结

本文主要是总结了Linux下操作进程和自动化任务知识~~~这两个知识点在Linux下也是很重要的,是学习Linux的基础~

继续完善上一次的思维导图:

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y。为了大家方便,刚新建了一下qq群:742919422,大家也可以去交流交流。谢谢支持了!希望能多介绍给其他有需要的朋友

文章的目录导航:

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

相关推荐

iPhone免越狱Git服务器搭建教程-iSH

iPhone免越狱Git服务器搭建教程

jts666的博客 4428

linux如何区分同名的进程,Linux下判断是否存在多个同名进程

Linux 下如何判断同名进程的个数,这个可以通过shell命令ps -e | grep -c "所查进程名字",就可以得到进程的个数。这里给出代码实现。bool processNumber(char *name){FILE *fptr;bool bret = false;char cmd[255] = {'\0'};char buf[255] = {'\0'};sprintf(cmd,"ps -...

weixin_34284072的博客 1822

BUCK电路的大信号模型与小信号模型推导

推导开关电源信号模型的核心是将非线性开关过程线性化,常用。如需具体拓扑的推导细节,可进一步说明!

创新改变世界! 1169

进程列表中多个JAVA进程的区分识别

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34074740的博客 1491

从放弃到再入门之拉格朗日对偶问题推导

普通同学的解法 无约束条件:求导就可以了 等式约束:代入消元,再求导 不等式约束:分情况讨论(在边界上和不在边界上),分别对应1,2的情况 然而发现,有些情况消元特别复杂,甚至不能求解 聪明同学的解法 发现:在最优点的情况下,约束曲面的法向量和目标函数的梯度反向必相同或相反 拉格朗日乘子法如何理解? (在2维里可以形象的解释为z=f(x,y)在约束条件g(x,y)=c中,极值...

qq_34564612的博客 1万+

线程池详解(通俗易懂超级好)

目标 【理解】线程池基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】使用java内置线程池完成综合案例 线程池 线程池基础 线程池使用 线程池综合案例 4.学员练习 5.线程池总结 概念介绍 1:什么是线程池 2:为什么使用线程池 3:线程池有哪些优势 什么是池 什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runna.

拉格朗日的学习笔记 12万+

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

Windows Server 2016远程桌面服务配置和授权激活

Server 2016默认远程桌面连接数是2个用户,如果多余两个用户进行远程桌面连接时,系统就会提示超过连接数,可以通过添加远程桌面授权解决:1、添加远程桌面授权服务第一步:服务器管理 - 添加角色和功能打开添加角色和功能向导窗口,选择基于角色或给予功能安装:第二步:添加远程桌面会话主机和远程桌面授权功能:以上配置完成后即可使用多于2用户同时登陆,但使用期限为120天,再次登陆会有如下提示:2、添...

mahailiang的专栏 6万+

linux-进程管理

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

qq_64485253的博客 1309

RK3399快速上手 | 01- 开发环境搭建(固件烧写、编译工具链安装、kernel编译)

一、编译工具链 编译工具链使用gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu。 下载地址: https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabihf/ wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/arm-linux-gnueabi

Mculover666的博客(嵌入式) 8836

Autosar NvM配置-手动配置Nvblock及使用-基于ETAS软件

NVM作为存储协议栈中最顶层的模块,是必须要掌握的。目前项目基本使用MCU带的Dflash模块,使用Fee模拟eeprom。在项目前期阶段,应该充分讨论需要存储的内容,包括应用数据,诊断数据等,用以评估Dflash空间是否够用。本文基于ETAS软件介绍NVBlock配置生成NVM参数及使用。使用NVBlock配置生成,基本不用手写代码,还是比较方便的。对于Nv block的划分,建议将同时写的一类数据放到一个block中,因为block除了data以外,Fee还会增加一些header数据,占用不少内存。

赞的博客 1884

Linux——内核——进程管理

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

m0_65153260的博客 569

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

linux进程管理

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

qq_51088445的博客 6673

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

weixin_39711914的博客 185

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

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

Linux 进程管理

作者:北南南北来自:LinuxSir.Org摘要:本文讲述的时进程管理的基本概念和进程管理工具介绍;文中的重点对进程管理工具的分类介绍及应用举例,包括 ps、pgrep、top 、kill、pkill、killall、nice和renice 等工具。 目录 1、程序和进程; 1.1 进程分类;1.2 进程的属性;1.3 父进程和子进程; 2、进程管理; 2.1 ps 监视进程工具...

weixin_33843409的博客 239

深入解析 Linux 进程管理

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

Edison's 小宇宙 7万+

Linux中的进程管理

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

xiaozhenghahaha的博客 785
上一篇: Linux用户和进程管理
下一篇: Linux网络管理
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值