基本介绍
(1)在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。
程序执行之后加载到内存中成为进程。程序是静态的,进程是动态的。
(2)每个进程都可能以两种方式存在:
前台与后台
前台进程:是用户目前的屏幕上可以进行操作的。
后台进程:是实际在操作的,但屏幕上无法看到,通常使用后台方式执行。
(3)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。
ps命令
ps -aux
ps命令是用来查看目前系统中,有哪些进程正在执行,以及它们执行的状况。
语法: ps [选项] Process Status
选项: -a 显示当前终端的所有进程信息
-u 以用户的格式显示进程信息
-x 显示后台程序运行的参数
常用指令:ps -aux
显示内容:
USER 执行进程用户名称
PID 进程号
%CPU 进程占用CPU百分比
%MEM 进程占用物理内存的百分比
VSZ 进程占用的虚拟内存大小(单位:KB)
RSS 进程占用的物理内存大小(单位:KB)
TTY 终端名称(有时缩写)
STAT 进程状态:
S-睡眠
s-表示该进程是会话的先导进程
N-表示进程拥有比普通优先级更低的优先级
R-正在运行
D-短期等待
Z-僵死进程
T-被跟踪或者被停止等等
START 进程执行的开始时间
TIME CPU 时间,即进程使用 CPU 的总时间
COMMAND 启动进程所用的命令和参数,如果过长会被截断显示
上述命令将所有进程显示出来,若只想查找某一个进程:
指令:ps –aux|grep xxx
比如查找 sshd 进程:ps -aux | grep sshd
ps -ef
是以全格式显示当前所有的进程。
-e 显示所有进程。-f 全格式
UID 用户ID
PID 进程ID
PPID 父进程ID
C CPU 用于计算执行优先级的因子。
数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;
数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME 进程启动的时间
TTY 完整的终端名称
TIME CPU 使用时间
CMD 启动进程所用的命令和参数
终止进程 kill [-9] killall
若是某个进程执行一半需要停止时,或是已经消耗了很大的系统资源时,此时可以考虑停止该进程。 使用 kill 命令来完成此项任务。
基本语法:
kill [选项] 进程号 (功能描述:通过进程号杀死/终止进程)
-1 重启进程
-9 表示强制终止进程 (系统觉得某个程序重要,可能会屏蔽你的kill指令,这时使用选项-9强制终止进程)
killall 进程名称
(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
使用killall,会将该进程的所有子进程也都删除/终止。
pkill命令
pkill [ 选项] [信号] 进程名
按照进程名终止进程
选项:
- t 终端号: 按照终端号踢出用户
案例:
案例 1:踢掉某个非法登录用户
kill 进程号
比如 kill 11421
假如使用tom登录,然后在图形界面打开终端写代码
假设认为tom是个非法用户,要踢掉它
先在图形界面写代码:ps -aux | grep sshd
sshd 是记载远程连接服务的配置文件
上述指令显示出了,远程登录的进程信息,从中看到了tom登录的进程的进程号11421
所以 kill 11421 这样tom就下线了!
案例 2:终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务
sshd ---> secure shell
首先查看 sshd 对应的进程号:
使用命令:ps -aux | grep sshd
有 /user/sbin/sshd 的那个进程就是 sshd 服务进程 进程号10748
终止 sshd 之后,就无法在xshell远程登陆了!
重启 sshd 服务指令:
/bin/systemctl start 服务名称
/bin/systemctl start sshd.service
案例 3:终止多个 gedit (文本编辑器)
在Linux桌面,主文件夹中,打开多个文本,然后使用killall 可以同时关闭所有打开的文本
killall gedit
案例 4:强制杀掉一个终端
在Linux系统桌面打开两个终端,bash即代表终端进程
在一个终端中输入指令强制关闭另一个终端
首先:查看终端进程的进程号:ps -aux | grep bash
得到对应的进程号,输入:kill -9 对应的进程号
也可以终端自己终止自己
按照终端号踢出用户
[root@localhost ~]# w
#使用w命令查询本机已经登录的用户
[root@localhost ~]# pkill -t -9 pts/1
#强制杀死从pts/1虚拟终端登录的进程
查看进程树 pstree [-u -p]
1.基本语法:pstree [选项]
功能:可以更加直观的来看进程信息(树的形式)2.常用选项:
-p :显示进程的 PID (父进程ID)
-u :显示进程的所属用户
3.应用实例:
案例 1:用树状的形式显示进程的pid(进程号)
pstree -p案例 2:用树状的形式显示进程的用户
pstree -u
chkconfig 指令
通过 chkconfig 命令可以给服务在 各个运行级别 设置开启自启动/关闭自启动
chkconfig 基本语法:
(1)查看服务和服务在各个级别是开启/关闭自启动 (有限,只能查看chkconfig管理下的服务)
chkconfig --list [| grep xxx] (若查找某一个服务使用grep过滤)
(2)chkconfig 服务名 --list(3)chkconfig --level 5 服务名 on 给该服务在5运行级别开启自启动
chkconfig --level 5 服务名 off 给该服务在5运行级别关闭自启动
案例演示: 对network服务进行各种操作,把 network 在 3 运行级别 关闭自启动
chkconfig --level 3 network off
注意:chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 生效.
systemctl 管理指令
基本语法:systemctl [start | stop | restart | status] 服务名
systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
systemctl 设置服务的自启动状态
systemctl list-unit-files [ | grep 服务名] (查看服务开机启动状态, grep 可以进行过滤)
systemctl enable 服务名 (设置服务开机自启动)
systemctl disable 服务名 (关闭服务开机自启动)
systemctl is-enabled 服务名 (查询某个服务是否是自启动的)
应用案例:
查看当前防火墙的状况,关闭防火墙和重启防火墙 firewalld.service
查看当前防火墙情况:systemctl status firewalld
关闭防火墙:systemctl stop firewalld
重启防火墙:systemctl start firewalld
.service写不写都行
注意:关闭或者启用防火墙后,立即生效。
但是 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
firewall 防火墙指令:打开或关闭指定端口
打开端口: firewall-cmd --permanent --add-port=端口号/协议
通过 netstat -anp | more 指令查看端口号的协议 (more 分页显示)
该指令输出的信息中:
Local Address下是 ip地址:端口号
Proto 是协议 (protocol 协议)
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
注意:无论是打开端口还是关闭端口,要重新载入才能生效
重新载入:firewall-cmd --reload
查询端口是否开放: firewall-cmd --query-port=端口/协议
应用案例:
(1) 启用防火墙,测试 111 端口是否能 telnet (远程登录) 不行
在本地主机DOS命令窗口输入:telnet Linux虚拟机ip地址:端口号
测试本地主机能否访问虚拟机的111端口
telnet 192.168.200.130 111
防火墙打开+端口关闭--->不可以访问端口
(2) 开放 111 端口
firewall-cmd --permanent --add-port=111/tcp ;
需要 firewall-cmd --reload
防火墙打开+端口打开--->可以访问端口
(3) 再次关闭 111 端口
firewall-cmd --permanent --remove-port=111/tcp
需要 firewall-cmd --reload
top指令:动态监控进程
介绍:
top 与 ps 命令很相似。
它们都用来显示正在执行的进程。
top 与 ps 最大的不同之处在于: top 在执行一段时间可以更新正在运行的的进程。
可以判断当前系统是否健康。
语法:
top [选项]
-d 秒数 指定top命令每隔几秒更新。默认3s
-i 使top不显示任何闲置或僵死进程
-p 通过指定监控进程id来监控某个进程状态
输入top指令后:每一条都是一个进程
显示:
第一行
第一个时间 当前时间
第二个时间 系统运行时间
2 users 有几个用户
load average 负载值(三个值相加除以3>0.7 说明系统负载过大,要提高性能)
第二行
Tasks 系统任务数
1 running 1个正在运行进程
184 sleeping 184个休眠进程
0 stopped 0个终止进程
0 zombie 0个僵死进程 (要清除僵死进程,因为僵死进程无用且占内存空间)
第三行 占用的CPU百分比
us 用户占用的CPU
sy 系统占用的CPU
id 空闲
第四行 Mem 内存占用情况
total 总共内存
free 空闲内存
user 已使用内存
第五行 Swap 分区
total 总共大小
free 未使用大小
used 已用大小
avail Mem 可获取的内存大小
交互命令说明:
输入命令top,
然后输入以下命令,得以下功能对进程进行排序
案例 1:监视特定用户, 比如监控 tom 用户
输入top
回车
输入u
回车
输入要监控用户名 (该用户要登录才能看到他的进程信息)
案例 2:终止指定的进程, 比如我们要结束 tom 登录
输入top
回车
输入k
回车
输入要结束的进程 ID 号 (bash那个进程的PID)
回车
输入信号量 9 强制删除
tom掉线
案例 3:指定系统状态更新的时间(每隔 10 秒自动更新),默认是 3 秒
top -d 10
netstat指令:监控网络状态
基本语法: netstat [选项]
选项说明: -an 按一定顺序排列输出
-p 显示哪个进程在调用
作用:主要用于查看协议和端口号
显示:
Proto 协议
Recv-Q 接收信息队列
Send-Q 发送信息队列
Local Address 本地地址 Linux地址
Foreign Address 外部地址
State LISTEN 监听 ESTABLISHED 已建立连接 TIME_WAIT 超时等待
TIME_WAIT 超时等待
--->某个连接断了之后(如用户退出登录),连接不会立刻消失,而是State变为TIME_WAIT
系统认为可能是网络状态不好,过一段时间仍无法连接,则连接消失。
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 36 192.168.200.130:22 192.168.200.1:14498 ESTABLISHED
要建立连接双方都要有一个端口
22端口在Linux
14498端口在Windows
后台管理
把程序放入后台
1. 指令后 + &
tar -zcf etc.tar.gz /etc & [程序还在运行]
2.输入指令后 按下 ctrl + z
[root@localhost ~]# top
#在top命令执行的过程中,按下ctrl+z快捷键 [程序暂停,除非恢复]
两者区别:& 在后台运行 ctrl+z 在后台暂停
查看后台的工作
[root@localhost]# jobs [-l]
选项:
-l: 显示工作的PID
注:
"+"号表示最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。
"-"号代表倒数第二个放入后台的工作
将后台暂停的工作恢复到前台执行
[root@localhost]# fg %工作号
参数:
%工作号:%号可以省略,但是注意工作号和PID的区别
把后台暂停的工作恢复到后台执行
[root@localhost]# bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行。
即:命令和前台有交互是不能恢复到后台运行。例如:top