1.Linux中的进程的基本概念
- 在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!(和Windows中每一个进程的PID是一样的)
- 每一个进程呢,都会有一个父进程!
- 进程可以有两种存在方式:前台(当前可得到的),后台(当前看不到的)运行
- 一般服务都是在后台运行的,基本的程序都是在前台运行的
2.Linux中的进程的命令
1.查看进程信息
-
命令:
ps
,用于 查看当前系统中正在执行的所有进程的信息【很常用】 -
ps 的参数选项,可以使用
ps -help all
/man -ps
查看参数使用方法和功能 :
- -A :所有的进程均显示出来,与 -e 具有同样的效用
- -a : 显示当前终端机(就是我们连接远程云服务器的这台电脑)开启运行的所有进程,包括其他用户的进程(TTY :进程启动时的终端设备)
- -u :显示属于该用户的程序进程的信息,也可使用用户名称来指定
- x :单独使用效果和-A相同,和-a联合使用可以列出一些更加详细的信息,比如开启这个进程的command
- au(x) 的输出格式 为:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
==============================
简单翻译上面的字段:
- USER :启动这些进程的用户
- PID:进程的进程ID
- %CPU :进程占用的CPU百分比
- %MEM :占用内存的百分比
- VSZ :该进程使用的虚拟內存量(KB)
- RSS :该进程占用的固定內存量(KB)(驻留中页的数量)
- TTY :进程启动时的终端设备
- STAT :进程的状态
- START :该进程被触发启动时间
- TIME :运行进程需要的累计CPU时间
- COMMAND:启动的程序名称
还有一些其他的字段:
- UID:启动这些进程的用户
- PID:进程的进程ID
- PPID:父进程的进程号(如果该进程是由另一个进程启动的)
- C:进程生命周期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累计CPU时间
- CMD:启动的程序名称
-
ps -aux :将所有的进程信息全部打印
-
| :在Linux中这个符号叫做管道符,管道符左边命令的输出就会作为管道符右边命令的输入使用语法为 “命令A |命令 B”
-
grep:使用语法 “grep 被查找的字符串 文件名”
Linux grep 命令用于查找文件里符合条件的字符串;grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来 -
ps -aux | grep 进程名称/进程包含的字符串
使用这样一条组合命令,可以先将所有进程信息查询出来(ps -aux),然后将查询出来的进程信息作为grep查询的文本( | ),grep将会筛选出符合我们指定的字符串的进程的信息比如查找MySQL相关进程就可以使用:ps -aux | grep mysql
查找Java相关进程就可以使用:ps -aux | grep java
- 对于我们来说,我们只要会使用
ps -xxx(参数aux可选) | grep 想要过滤出来查看信息的进程名称
来查看想要查看的进程的信息即可 - 常用命令
ps -ef
,用于查看父进程的信息,除了这个命令我们也可以使用pstree -参数选项
来查看父进程,使用树状结构查看效果更好一些(即使用进程树查看父进程的效果更好,所以推荐使用进程树)pstree -pu #进程树,效果更好,相比于ps -ef,我们更应该优先使用这个命令 - p:显示父ID - u:显示用户组
2.结束进程
- 结束进程:即杀掉正在运行的进程,这在Windows中见怪不怪了,很常用的就是打开任务管理器,然后结束某一个任务
- 在Linux中强制结束某一个进程的执行,命令为:
kill -9 进程的ID
,注意:-9这个参数起到强制结束进程的作用 - 正在的服务器上面运行的进程基本不会使用这个命令,但是我们自己平时使用服务器跑的Java程序如果出bug/死循环了,我们就需要使用这个命令来结束我们的Java进程
3.小结
- 对于我们Java开发人员来说,Linux更偏向于常规的使用即可
- Linux中一切皆文件,所以我们需要掌握文件的读、写和执行操作;又因为Linux是一个多用户的OS,所以我们还需要掌握文件的权限设置;即掌握文件的读、写、执行和权限控制
- 权限就衍生出来用户+用户组的概念,所以为了学习权限管理,我们学习了用户管理和用户组管理
- 除此之外,我们还需要会使用Linux这个OS,所以我们学习了Linux的磁盘管理和进程管理
- 小结上面的内容,就是我们需要掌握的基本Linux操作为:
- 文件的读、写和执行(查看,创建,删除,移动,复制,编辑)
- 文件的权限(用户、用户组)
- 系统操作(磁盘,进程)
- 命令小结
1.进程查看:我们只要会使用 ps -参数(aux任选) | grep 进程名称 来筛选出指定的进程信息进行查看即可
对于父进程的信息查看,我们更加推荐使用树结构进行查看,即使用命令 pstree -pu 来查看信息
2.结束进程:我们只要会使用 kill -9 进程ID 来强制结束某一个进程即可
在正常使用情况下我们不会去结束服务器本来就运行者的某一个进程,我们一般只会结束自己开的一些进程,
比如Java程序进程等