Linux 进程管理

基本介绍

(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值