在Linux中,每个执行的程序(代码)都称为一个进程,每个进程都会被分配一个进程号。 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。 每个进程都可能以两种方式存在——前台与后台。 一般系统的进程服务都是以后台进程的方式存在,而且都会常驻在系统中,知道关机才结束。
显示系统正在执行的进程
查看进程使用的指令是ps
,一般来说使用的参数是ps -aux
(当然也可以不添加任何参数)
ps -a
,显示当前终端的所有进程信息ps -u
,以用户的格式显示进程信息ps -x
,显示后台进程运行的参数ps -e
,显示所有的进程ps -f
,以全格式显示进程的信息ps
指令详解
ps -aux | grep XXX
(可以使用grep查找相关进程)
显示出的进程信息如下:
System -V
,表示进程信息的显示风格USER
,使用该进程的用户名称PID
,进程号%CPU
,进程占用CPU的百分比%MEM
,进程占用物理内存的百分比VSZ
,进程占用的虚拟内存的大小kB
RSS
,进程占用的物理内存大小kB
TTY
,终端名称STAT
,进程状态S
,表示该进程正在睡眠s
,表示该进程是会话的先导进程N
,优先级比普通进程更低R
,表示该进程正在运行D
,短期等待中Z
,僵死进程T
,被跟踪或被停止等STARTED
,进程的启动时间TIME
,进程使用CPU的总时间COMMAND
,启动进程所用的指令和参数,过长会被截断显示USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 194220 7440 ? Ss 5月18 0:21 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 5月18 0:00 [kthreadd] root 4 0.0 0.0 0 0 ? S< 5月18 0:00 [kworker/0:0H]
以全格式显示所有进程ps -ef | grep xxx
显示出的进程新信息有:
PPID
,父进程idC
,是cpu用于计算进程优先级的因子,当C越大表示进程的优先级越低STIME
,进程启动的时间终止进程kill
和killall
当某个进程执行到一般需要停止时,或者已经使用了很大的系统资源时,可以考虑停止该进程。
kill [选项] 进程号
,使用进程号杀死进程
killall 进程名称
,使用进程名称杀死进程,支持通配符。在系统因负载过大变得缓慢时有很大的用处。
可以添加参数-9
来强制关闭进程。
如,踢掉某个非法用户:
ps -aux | grep bajie
获得该用户的进程号,kill 进程号
查看进程树pstree
可以直观的显示进程信息,常用选项有
-p
,显示进程信息-u
,显示进程的所属用户服务的本质就是进程,但是会运行在后台,通常会监听某个端口,等待其他程序的请求。 比如mysql、sshd防火墙,因此服务又称为守护进程。在CentOS7.0以后不再使用service,而是使用systemctl
service管理指令
systemctl [start | stop | restart | reload | status] 服务名
,用于开启、关闭、重启、查看服务状态。
查看服务名
setup
指令后查看系统服务ls -l /etc/init.d/
服务的运行级别
在之前的文章中我们说到Linux系统的七个运行级别,常用的运行级别为3和5。可以使用指令systemctl get-default
查看默认的运行级别。
运行级别与服务有着一些关系,在开启Linux系统时,会先确定当前系统的运行级别,然后运行该级别下定义的服务。所以可以设置与运行级别对应的服务,在该运行级别下,该服务会自动开启运行。
chkconfig
指令
通过chkconfig
指令可以给每个服务的各个运行级别设置自启动或者自关闭。
chkconfig --list |grep xxx
chkconfig --level 级别 服务名 on/off
,config --level 5 sshd off
,表示在运行级别5下设置sshd服务不启动config iptables off
,表示在所有运行级别下关闭防火墙使用top
指令可以动态监控进程,该指令与ps
十分类似,都用于显示正在执行的进程,但是top
指令可以在执行一段时间时更新正在运行的进程。
top
指令的参数
top -d 秒数
,用于指定top
指令每隔几秒更新一次进程,默认是3秒,可以在交互模式下使用top -i
,使top
不显示任何闲置或者僵死的进程top -p 进程号
,指定进程号来仅实时监控该进程的状态交互模式下的top
指令操作
top
交互模式u + 用户名
可以监视特定用户进程k + 进程号
可以根据进程号杀死进程top -d 秒数
可以在交互模式下指定进程刷新时间间隔使用指令netstat [选项]
可以查看当前系统的网络状态,包括使用网络的进程和占用的端口号等
参数有
netstat -an
,表示按照一定的顺序排列输出网络状态信息netstat -p
,表示显示正在使用网络服务的进程rpm是一种用于互联网下载软件包的打包及安装工具,包含在某些Linux的分发版中。它可以生成具有.rpm
后缀的文件。RPM是Redhat Package Manager,类似于Windows的setup.exe,Linux发行版都有采用这一理念,可以算作是行业公认标准。
RPM包简单查询指令
rpm -qa
,查询已经安装的rpm软件列表
rpm -qi 软件包名
,查看rpm软件包的信息
rpm -ql 软件包名
,用于查询软件包中的文件,常用于查询软件包安装的路径
rpm -qf 文件全路径名
,可以用于查询文件所属的软件包,如rpm -qf /etc/passwd
卸载RPM软件包
使用指令rpm -e 软件包名
可以卸载rpm软件包,但是当其他软件吧依赖于该软件包时则不能卸载。此时可以使用rpm -e --nodeps
来强制卸载该软件包。
安装RPM软件包
可以使用指令rpm -ivh rpm软件包全路径
来安装rpm软件包。但是前提是需要挂载CentOS.iso文件。在挂载了该文件后,所有的rpm软件包都会在该文件下的/Packages
目录中。
安装软件包的参数意义为:
rpm -i
,表示install,即安装软件包rpm -v
,表示verbose,显示安装软件包的提示信息rpm -h
,表示hash,显示安装进度YUM是一个Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并进行进行安装,并且可以自动处理依赖关系,一次性安装所有的软件包。使用YUM的前提是必须连接到网络。
yum install xxx
,下载并安装软件包yum list | grep xxx
,查询yum服务器是否有该需要安装的软件