linux学习笔记19-管好进程
linux学习笔记19-管好进程
指令
程序:指令的集合。大对数时候被存为可执行文件。相当于菜谱
进程:相当于烹饪的过程,一个运行中的程序就是进程,有可能是多个进程。
我们只需要管理和控制进程,首先需要查看进程状态。process status
由于历史原因,比较复杂,兼容了好几种语法格式
主要是以下2个命令:
ps:
-A显示所有进程
-Af 显示所有进程更加完整的信息(增加UID-用户,PPID-父进程ID, C-CPU占用比例, STIME-进程开始时间)
用kill 【PID】可以结束进程
由于进程比较多,经常与管道一起用:
ps -Af|grep sshd 表示查看进程中包含sshd名称的进程
ps -Af|less 用less命令查看进程详细信息
-Al显示更多的进程相关信息,主要增加了以下信息:
F-进程的旗标
S-进程的运行状态status
PRI-进程优先级
NI-进程的nice值
ADDR-进程在内存的地址
SZ-进程占用的内存大小
WCHAN-进程是否在运行中
top:动态显示进程信息,每3秒刷新一次,
VIRT-表示进程使用的虚拟内存总量单位是kb
RES-表示进程使用的、未被换出的物理内存大小,单位kb
SHR-表示共享内存大小,单位kb
%CPU-表示上次更新到现在cpu时间占用比
%MEM-表示内存占用的百分比
TIME-表示使用cpu时间总计,单位是1/100秒
COMMAND-表示进程是由哪个命令创建
进入top命令时,默认是按照cpu占用率降序显示的
键入M,按照内存占用量降序显示
键入N,按照进程PID降序显示
键入P,按照默认的cpu占用降序显示
键入R,把当前显示的排序反向显示
键入<或>,在当前基础上向左或者右移动一个关键字排序
键入q,退出top命令和视图
操纵进程
kill命令 kill -l 可以列出所有kill的选项
需要了解的:
SIGTERM 序号15,是进程终止的信号,也是kill命令默认发送的信号
SIGKILL 序号9,是进程强制终止信号,
kill 【PID】使用的是默认的15号命令
kill -9 【PID】强制终止 往往会带来一些副作用,丢失数据或者终端异常。所以建议进程的主人和根用户来执行这个sigkill指令
教程的实例是用非root用户打开一个top进程,然后用此用户再开一个terminal来终结这个进程,最后能在非root用户的终端上看到进程“已ShaSi”的现象
ps -Af|grep top #stu用户来执行此命令能够看到所有和top进程相关的进程,筛选出来stu用户打开的top进程,记住pid号
kill 9565 #stu用户在另一个终端使用sigterm来结束这个进程
pkill
根据用户给出的信息终止相关的进程,举例:
pkill opera #把opera所有相关的进程都结束掉
pkill -u stu #把所有的stu用户的进程都结束掉,相当于注销了该用户
xkill
是图形化的终结命令,输入此命令后,鼠标光标变成可以移动的小×,左键点击哪个窗口就结束相应的进程
[stu@localhost ~]$ xkill
Select the window whose client you wish to kill with button 1....
简单管理linux系统服务
前台进程:系统从一个终端接收用户输入,且从这个终端显示输出结果,即:占用终端,此时终端无法执行别的命令
后台进程:系统执行命令后,终端不输出结果,可以执行别的命令。很多进程在一开机就一直在后台,直到关机才会结束。
守护进程:daemons。 这些进程独立于用户终端,周期性进行某种服务,或者等待处理某些事件,不需要用户输入就能运行,在后台为系统和用户提供某种服务,
[stu@localhost ~]$ ps -Af|grep httpd #httpd是Apache为提供http服务器主程序,启动后会后台监听80端口,在接受到客户请求的时候,用相应的网页来响应客户端
stu 10435 10350 0 15:43 pts/0 00:00:00 grep httpd
[stu@localhost ~]$ ps -Af|grep crond #crond是linux上的计划守护进程,启动后每分钟都会检查/etc/crontab配置文件去检查是否有计划任务需要执行
root 2308 1 0 Feb07 ? 00:00:01 crond
stu 10437 10350 0 15:44 pts/0 00:00:00 grep crond
实例:web服务的查看、启动和关闭
linux中最常见和可靠的web服务器就是 Apache Http Server,此进程无需和用户交互,是一个彻底的守护进程。
[root@localhost stu]# service httpd status
httpd 已停
[root@localhost stu]# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[确定]
chkconfig
设置服务开机自启动
[root@localhost stu]# chkconfig --list|grep httpd
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
# 表示httpd服务在0-6这7个运行级别(runlevel)中是关闭状态
0-6这7个运行级别,有3个基本运行级别,有3个其他运行级别,还有1个是保留
运行级别 runlevel
- 0:关闭或停止系统
- 1:单用户模式
- 2:没联网的多用户模式
- 3:联网的多用户模式
- 4:保留暂未使用
- 5:联网并且使用图形界面的多用户模式
- 6:重启系统
一般的守护进程都需要在运行级别3和5中开机自启动。
[root@localhost stu]# chkconfig --level 35 httpd on
[root@localhost stu]# service httpd status
httpd (pid 10540) 正在运行...
[root@localhost stu]# chkconfig|grep httpd
httpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
# 然后重启系统
[root@localhost stu]# service httpd status
httpd (pid 2291) 正在运行...
# httpd服务已经开机自启动了