Linux教程

Linux学习(四)

本文主要是介绍Linux学习(四),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux

十一 进程管理

进程的基本介绍
在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,父进程id
    • C,是cpu用于计算进程优先级的因子,当C越大表示进程的优先级越低
    • STIME,进程启动的时间
  • 终止进程killkillall
    当某个进程执行到一般需要停止时,或者已经使用了很大的系统资源时,可以考虑停止该进程。
    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,表示在所有运行级别下关闭防火墙
      使用chkconfig重新设置服务后需要使用reboot重启系统后生效
动态监控进程

使用top指令可以动态监控进程,该指令与ps十分类似,都用于显示正在执行的进程,但是top指令可以在执行一段时间时更新正在运行的进程。

  • top指令的参数

    • top -d 秒数,用于指定top指令每隔几秒更新一次进程,默认是3秒,可以在交互模式下使用
    • top -i,使top不显示任何闲置或者僵死的进程
    • top -p 进程号,指定进程号来仅实时监控该进程的状态
  • 交互模式下的top指令操作

    • P ,以cpu使用率排序显示进程,为默认模式
    • M,以内存使用率排序显示进程
    • N,以进程号排序显示进程
    • q,退出top交互模式
    • u + 用户名可以监视特定用户进程
    • k + 进程号可以根据进程号杀死进程
    • top -d 秒数可以在交互模式下指定进程刷新时间间隔
查看系统网络状态

使用指令netstat [选项]可以查看当前系统的网络状态,包括使用网络的进程和占用的端口号等
参数有

  • netstat -an,表示按照一定的顺序排列输出网络状态信息
  • netstat -p,表示显示正在使用网络服务的进程

十二 RPM和YUM

RPM包的管理

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包的管理

YUM是一个Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并进行进行安装,并且可以自动处理依赖关系,一次性安装所有的软件包。使用YUM的前提是必须连接到网络。

  • YUM的基础指令
    yum install xxx,下载并安装软件包
    yum list | grep xxx,查询yum服务器是否有该需要安装的软件
这篇关于Linux学习(四)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!