进程管理
一、进程查看
进程概述
进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
简单理解为正在运行中的程序。一个系统程序或者命令运行至少会产生一个进程。
java中:进程(Process):程序的一次运行。
进行是操作系统分配资源的最小单位。同一个进程是共享同一份内存资源,不同的进程不共享。
如果两个进程之间需要数据交换,可以通过“文件”、网络通信等方式,复杂,成本高。
线程(Thread):当某个进程需要同时完成多个功能时,可以采用多线程。
线程是进程的其中一条执行路径。即一个进程至少有一个线程,还可以有多线程。
线程是CPU调度资源的最小单位,多个线程之间是有共享内存,共享同一个进程的资源。
因为CPU给每个线程分配的时间特别短,所以用户感觉不到,感觉像同时运行的。
进程管理的作用
1.1判断服务器健康状态top(进程管理的主要作用)
语法:top 【选项】
-d 秒数: 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令。
?或h: 显示交互模式的帮助
P:以CPU使用率排序,默认就是此项
M:以内存的使用率排序
N:以PID排序
q:退出top
说明: 可以在输入命令top后,按shift +P以CPU使用率排序,按shift +M内存的使用率排序
输入命令top后,最重要的是前五行信息,如下:
top - 03:39:41 up 6:28, 2 users, load average: 0.24, 0.26, 0.26
Tasks: 146 total, 1 running, 145 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.3%hi, 0.0%si, 0.0%st
Mem: 1034828k total, 251784k used, 783044k free, 54580k buffers
Swap: 2097144k total, 0k used, 2097144k free, 150704k cached
主要看第一行的平均负载、第三行的空闲CPU百分比、第四行的空闲物理内存
僵尸进程:这个进程正在终止,但还未终止。
1.2 查看系统中所有进程 ps、pstree
1、语法:ps aux #查看系统中所有进程,使用BSD操作系统格式
或语法:ps -le #查看系统中所有进程,使用linux标准命令格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2072 636 ? Ss Mar05 0:01 init [3]
一般系统启动第一个进程是init,其进程ID号PID=1
具体解释如下:
USER:该进程是由哪个用户产生的;
PID:进程的ID号;
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源
%MEM:该进程占用物理内存的百分比,占用越高越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位kb
RSS :该进程占用实际物理内存的大小,单位kb
TTY:该进程是在哪个终端中运行的(登录终端)。
其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
(如果是’?'表示其进程由内核直接产生,并不是由某个终端登录)
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME :该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
2、查看进程树 pstree
语法:pstree 【选项】
-p :显示进程的PID
-u : 显示进程的所属用户
1.3 杀死进程kill、killall、pkill
只有进程失效的时候才会用到杀死进程。(如果碰到病毒等,杀死进程并不会彻底解决。需要找到源头)
1、kill 命令
语法1: kill -l #查看可用的进程信号
语法2: kill PID #杀死某进程
如下图,常用的1、9、15分别代表重启、强制终止、正常终止。
范例:
kill -1 22353 #重启PID为22353的进程
kill -9 22368 #强制杀死进程
2、killall 命令
语法: killall 【选项】【信号】 进程名
#按照进程名杀死进程
选项:-i :交互式,询问是否要杀死某个进程;-I:忽略进程名的大小写
信号选项与kill命令的信号选项通用。
3、pkill 命令
语法:pkill 【选项】【信号】 进程名
#按照进程名终止进程
选项:-t 终端号:按照终端号(TTY)踢出用户(这是跟killall最大的区别)
按照终端号踢出用户步骤:
(1)命令: w #使用w命令查询本机已经登录的用户
(2)pkill -9 -t pts/0 #强制杀死从pts/0虚拟终端登录的进程
二、工作管理
2.1 把进程放入后台 &或者ctrl+z
方法一:tar -zcf etc.tar.gz /etc &
#在执行某个命令后打一个’&’,此方法放入后台的命令还在运行
方法二:top
#在top命令执行的过程中,按下ctrl+z快捷键
#此方法放入后台的命令已经暂停,停止运行
2.2 查看后台的工作 jobs
语法:jobs 【-l】
选项: -l : 显示工作的PID
注:“+”号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作
2.3 将后台暂停的工作恢复到前台执行 fg
语法:fg %工作号
参数:
%工作号: %号可以省略,但是注意工作号和PID的区别,工作号是用jobs命令查询时‘[ ]’里面的数字
2.4 把后台暂停的工作恢复到后台执行 bg
语法:bg %工作号
注意:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行。例如top、vim命令,就算放入后台执行它因为需要交互也无法执行。
三、系统资源查看
3.1 监控系统资源 vmstat
语法:vmstat 【刷新延时 刷新次数】
例如:vmstat 2 3
#表示监听三次系统资源,每次间隔2s
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 760276 63372 155924 0 0 1 0 13 5 0 0 100 0 0
0 0 0 760276 63372 155940 0 0 0 0 1562 38 0 0 100 0 0
0 0 0 760276 63372 155948 0 0 0 0 1567 40 0 0 100 0 0
==注意:==主要看memory内存和cpu的占用情况。
3.2 开机时内核检测 dmesg
范例: dmesg | grep CPU
3.3 查看内存使用状态 free
语法:free 【-b|-k|-m|-g】
选项:
-b :以字节为单位显示;
-k :以kb为单位显示,默认kb
-m:以MB为单位显示
-g :以GB为单位显示
total used free shared buffers cached
Mem: 1010 268 742 0 61 152
缓存和缓冲的区别:简单来说缓存(cache)是用来加速数据从硬盘中“读取”的,而缓冲(buffer)是用来加速数据“写入”硬盘的。
3.4 查看CPU信息 cat /proc/cpuinfo
model name : Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
cpu MHz : 1992.000
主要信息:主频和CPU型号。
提醒: 前面学的用dmesg命令可以看开机时CPU信息
3.5 系统启动时间和平均负载 uptime
语法:uptime
#显示系统的启动时间和平均负载,也就算top命令的第一行。w命令也可以看到这个信息。
3.6 查看系统与内核相关信息 uname
语法:uname 【选项】
选项:-a : 查看系统所有相关信息
-r :查看内核版本
-s :查看内核名称
uname -a
Linux localhost.localdomain 2.6.18-194.el5 \#1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux
uname -r
2.6.18-194.el5
uname -s
Linux
3.7 判断当前系统位数 file /bin/ls
因为没有可以直接查看系统位数的命令,可以通过查看系统外部命令文件的方式间接查到系统位数。
file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
3.8 查询当前Linux系统的发行版本 lsb_release -a
lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.5 (Final)
Release: 5.5
Codename: Final
3.9 列出进程打开或使用的文件信息 lsof
语法:lsof 【选项】
选项: -c 字符串 : 只列出以字符串开头的进程打开的文件
-u 用户名 : 只列出某个用户的进程打开的文件
-p pid :列出某个PID进程打开的文件
四、系统定时任务
4.1 服务管理与访问控制 crond
1、启动crond
service crond restart
chkconfig crond on
#了解启动管理方法就行,一般开机默认都是启动了。
2、用户的crontab设置
语法:crontab 【选项】
选项:-e : 编辑crontab定时任务
-l :查询crontab任务;
-r : 删除当前用户所有的crontab任务
范例:
crontab -e #进入contab编辑界面。会打开vim编辑你的工作。
* * * * * 执行的任务