Linux---进程管理
引言
正如Windows系统里有进程一说,Linux系统中每个执行的程序都成为一个进程,每个进程都分配一个进程号。
每个进程都会对应一个父进程,而这个父进程可以复制多个子进程,例如www 服务器。
每个进程都可能以两种方式存在,前台与后台:前台进程就是用户目前的屏幕上可以进行的操作,后台进程则是虽然在执行,但是不能在屏幕上看到进程,通常使用后台打开。
一般系统的服务都会以后台进程的方式打开,而且会常驻在系统中,知道关机才结束进程。
1)显示系统执行的进程
查看进程使用的指令是ps,一般来说都会配合参数使用:ps -aux
ps -a : 显示当前终端的所有进程信息
ps -u : 以用户的格式显示进程信息
ps -x : 显示后台进程运行的参数
ps -ef | more
值得一提的是这里还有个 C 列:这里表示CPU用于计算执行优先级的因子,此数值越大,表明进程是CPU密集型运算,执行优先级会降低;反之如果数值越小,表明进程是I/O密集型晕眩,执行的优先级会提高。【重要】
如果知道进程名,可以根据名称查询父进程号:
显示sshd的父进程号:
2)终止进程kill和killall
如果某一个进程执行时主要终止,或者某一进程消耗了过多的系统资源,可以考虑使用kill指令来停止该进程。
①、基本语法
kill 【选项】 进程号 通过进程号杀死进程
killall 进程名 通过进程名杀死进程,也支持通配符,这在系统负载过大而变得很慢时很有用。
常用选项:-9 :表示强迫进程立刻停止
②、使用案例
案例1:踢除非法用户
为此我用xshell登陆了普通用户hadoop1
查看用户进程号
杀死进程
此时会看到XShell那里绿色变成红色,被剔除了。
3)查看进程树pstree
pstree 【选项】可以更加直观的来看进程信息
常用选项:-p 显示进程的PID
-u 显示进程的所属用户
4)服务(Service)管理
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql、sshd、防火墙)因此我们称之为守护进程,是Linux中的重要知识点
service 服务名 【选项】
选项处可填:start/stop/restart/reload/status,比如你可以使用service iptables status查看防火墙的状态,可以使用service iptables stop来关闭防火墙。
关于关闭或启用防火墙,有个细节需要注意:通过上述方式关闭或启动服务知识临时的,当系统重启后,还是会到原来对该服务的设置,如果希望设置某个服务自启动或永久关闭,要使用chkconfig指令。
5)查看服务名
方式一:指令 setup 就可以看到跳出窗口
方式二:/etc/init.d/ 服务名 ls -l /etc/init.d
6)开机的流程说明
Linux启动流程:
开机==>BIOS ==>/boot牵引==>init进程1==>运行级别==>运行对应的服务
7)chkconfig指令
通过chkconfig命令可以给每个服务的各个运行级别设置自启动/关闭
①、查看服务
chkconfig --list
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
使用chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效
8)动态监控进程【重要】
top与ps指令很相似,他们都用来显示正在执行的进程,但是top与ps的不同之处在于top指令会在执行一段时间后更新正在运行的进程。
top【选项】
常用选项:-d 秒数 指定top命令每个几秒更新一次,默认是3秒。
-i 使top不显示任何闲置或者僵死进程
-p 通过指定监控进程ID来监控某个进程的状态
当指令top指令时可以进行交互:【比较重要】
p 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top
u 提示你输入哪一位用户的进程
k 同时要杀死的进程的进程号
9)查看系统网络情况 netstat 【重要】
netstat 【选项】
常用选项:-an 按一定的顺序排列输出
-p 显示哪个进程在调用
案例1:查看系统所有的网络服务
q键退出
案例2:查看服务名为sshd的服务信息