目 录CONTENT

文章目录

02_实操Linux

ByteNews
2019-10-03 / 0 评论 / 0 点赞 / 14,613 阅读 / 13,265 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

02_实操Linux

开启允许远程连接

1570068962037

Xshell和Xftp:

  • Xshell:远程登录操作Linux
  • Xftp:上传下载文件

**前提:**Linux开启了sshd服务,开22端口。

用setup指令,然后进入系统服务(system service),找到sshd,看看是否开启。

vi和vim编辑器

所有的Linux系统都会内建vi文本编辑器。

Vim则是具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中广泛使用。

vi和vim常用的三种模式

1570070972848

  • 正常模式:在vim打开一个档案就直接进入一般模式了,在这个模式下,可以使用上下左右来移动光标,可以用删除复制等操作。
  • 插入模式:按下i,l,o,O,a,A,r,R等任何一个字母之后才可以进入编辑模式,一般来说i即可
  • 命令行模式:这个模式中,可以提供你相关的指令,完成读取、存盘、替换、离开vim、显示行号等。

vi和vim快捷键

  1. 拷贝当前行 yy,拷贝当前行向下的5行 5yy
  2. 删除当前行 dd,删除当前行向下的5行 5dd
  3. 在文件中查找某个单词,命令行模式下/关键字,n就是下一个
  4. 设置文件行号,取消文件行号:set nu和:set nonu
  5. 文档最末行 G 和 最首行 gg
  6. 撤销动作指令 u
  7. 移动到指定行 shift+g

关机&重启命令

  • shutdown:
    • shutdown -h now:立即关机
    • shutdown -h 1:1分钟后关机
    • shutdown -r now:现在重启
  • halt:关机,其他如上
  • reboot:现在重启
  • sync:把内存中的数据同步到磁盘

**注意:**无论是重启还是关闭系统,都要先运行sync命令,把内存中的数据写入到磁盘中

用户登录和注销

基本介绍

  1. 登录尽量少用root账号登录,因为他是系统管理员,最大的权限,避免操作失误。
  2. 可以用普通用户登录,登录后再用su 用户名 命令来切换管理员身份
  3. 在提示符下输入logout即可注销用户

使用细节

  1. logout注销指令在图形运行级别无效,在运行级别3下有效
  2. 运行级别

用户管理

基本介绍

1570076370680

添加用户

基本语法:

useradd 用户名

细节说明:

  1. 默认:当创建用户成功后,会自动的创建和用户同名的家目录
  2. 也可以通过useradd -d 指定目录 新的用户,给新创建的用户指定家目录

指定/修改密码

基本语法:

passwd 用户名

删除用户

基本语法:

userdel 用户名

细节说明:

  1. 删除用户,默认保留家目录
  2. 删除用户,以及删除家目录,加-r参数

一般不会删除家目录

查询、切换用户

查询用户信息

基本语法:

id 用户名

细节说明:

当用户不存在,返回无此用户

切换用户

基本语法:

su - 切换用户名

细节说明:

  1. 高权限用户切换到低权限用户不需要输入密码

  2. 用exit可以退回到原来的用户

查看当前用户/登录用户

基本语法:

whoami/who am i

用户组

基本语法:

添加组:groupadd 组名

删除组:groupdel 组名

增加用户的时候直接加上组:useradd -g 用户组 用户名

修改用户组:usermod -g 用户组 用户名

用户和组的相关文件

文件目录作用每行的含义
/etc/passwd文件用户(user)的配置文件,记录用户的各种信息用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow文件口令的配置文件登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件组(group)的配置文件,记录Linux包含的组的信息组名:口令:组标识符:组内用户列表

实用指令

指定运行级别

1570081723032

基本介绍:

0:关机

1:单用户【找回丢失密码】

  • 进入到单用户模式,然后修改root密码,因为进入到单用户模式,root不需要密码就可以登录
  • 用enter进入到选择引导界面,然后输入e,进第二个选项kernel,再输入一个e,空格 1,这个1就是让我们进入到单用户模式,再输入b去引导
  • 接下来就是进入系统,然后用passwd root修改密码即可
    • 有个前提,接触到机房的服务器,而不是通过远程连接

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字

CentOS7是在/lib/systemd/system文件中,命令为systemctl set-default runlevel3.target,改数字即可。

**切换到指定运行级别的指令:**init[0123456]

帮助指令

  • man获得帮助信息:
    • 基本语法:man[命令或配置文件](功能描述:获得帮助信息)
    • 案例:查看ls命令的帮助信息,man ls
  • help指令
    • 基本语法:help 命令(功能描述:获得shell内置命令的帮助信息)
    • 案例:查看cd命令的帮助信息,help cd
  • 直接百度即可。

文件目录类

  • pwd指令:

    • 基本语法:pwd(显示当前工作目录的绝对路径)
  • ls指令:

    • 基本语法:ls[选项][目录或是文件]
    • 常用选项:
      • -a:显示当前目录所有的文件和目录,包括隐藏的
      • -l:以列表的方式显示信息
      • -h:人容易阅读的格式
  • cd指令:

    • 基本语法:cd[参数](切换到指定目录)
    • 常用参数:
      • cd~或者cd回到自己的家目录
      • cd..回到上一级目录
  • mkdir指令:

    • 基本语法:mkdir[选项]要创建的目录
    • 常用参数:
      • -p:创建多级目录
  • rmdir指令

    • 基本语法:rmdir[选项]要删除的空目录
    • 注意:
      • rmdir删除的是空目录,如果有内容是无法被删除的,如果要删除有目录的目录,需要用rm -rf 要删除的目录
  • touch指令

    • 基本语法:touch 文件名称(创建文件,可以一次性创建多个)
  • cp指令

    • 基本语法:cp[选项] source dest
    • 常用选项:
      • -r:递归复制整个文件夹
    • 用\cp可以强制覆盖,不需要每次都y
  • rm指令

    rm指令移除文件或目录

    • 基本语法:rm[选项] 要删除的文件或目录
    • 常用选项:
      • -r:递归删除整个文件夹
      • -f:强制删除不提示
    • 用-f参数可以强制删除不提示
  • mv指令

    mv移动文件与目录或重命名

    • 基本语法:
      • mv oldNameFile newNameFile(重命名)
      • mv /temp/movefile /targetFolder(移动文件)
  • cat指令

    cat查看文件内容

    • 基本语法:cat[选项]要查看的文件
    • 常用选项:
      • -n:显示行号
    • 使用细节:
      • cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令|more,分页显示
  • more指令

    more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

    • 基本语法:more 要查看的文件
    • 操作说明:
      • 空白键:向下翻动一页
      • Enter:向下翻动一行
      • q:立即离开more,不再显示文件内容
      • Ctrl+F:向下滚动一屏
      • Ctrl+B:返回上一屏
      • =:输出当前行的行号
      • :f:输出文件名和当前行的行号
  • less指令

    less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。

    less指令在显示文件内容时,并不是一次将整个文件加载之后才显示的,而是根据显示需要加载内容,对于显示大型文件具有较高的效率

    • 基本语法:less 要查看的文件
    • 操作说明:
      • 空白键:向下翻动一页
      • pagedown:向下翻动一页
      • pageup:向上翻动一页
      • /字符串:向下搜寻【字符串】的功能;n:向下查找; N:向上查找
      • ?字符串:向上搜寻【字符串】的功能;n:向上查找; N:向下查找
      • q:离开less这个程序
  • 重定向和追加(>指令和>>指令)

    >输出重定向

    >>追加

    • 基本语法:

      指令功能描述
      ls -l > 文件列表的内容写入文件a.txt中(覆盖写)
      ls -al >> 文件列表的内容追加到文件aa.txt的末尾
      cat 文件1 > 文件2将文件1的内容覆盖到文件2
      echo "内容" >> 文件
    • 主要就是>和>>,用来写东西到文件中

  • echo指令

    echo输出内容到控制台

    • 基本语法
      • echo [选项][输出内容]
    • 实例:输出当前环境变量:echo $PATH
  • head指令

    head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

    • 基本语法
      • head 文件 (查看文件头10行内容)
      • head -n 5文件 (查看文件头5行内容,5可以是任意数字)
  • tail指令

    tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容

    • 基本语法:
      • tail文件(查看文件的后10行内容)
      • tail -n 5 文件(查看文件的后5行内容,5可以是任意数字)
      • tail -f 文件(实时追踪该文档的所有修改)
  • ln指令

    软链接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

    • 基本语法:
      • ln -s[原文件或目录][软链接名](给原文件创建一个软链接)
    • 细节说明:
      • 当我们使用pwd指令查看目录时,仍然看到的是软链接所在的目录。
  • history指令

    查看已经执行过的历史命令,也可以执行历史指令

    • 基本语法:
      • history:查看已经执行过的历史命令
      • history 10:查看最近10条历史命令
      • ! 5 :执行历史编号为5的历史命令,这里5可以是任意history中的编号

时间日期类

  • date指令

    date指令显示当前日期

    • 基本语法
      • date:显示当前时间
      • date +%Y:显示当前年份
      • date +%m:显示当前月份
      • date +%d:显示当前是哪一天
      • date "+%Y-%m-%d %H:%M:%S":显示年月日时分秒
  • date指令-设置日期

    • 基本语法
      • date -s 字符串时间
    • 实例:
      • 设置系统当前时间,比如date -s "2019-11-11 11:22:22"
  • cal指令

    查看日历指令

    • 基本语法
      • cal[选项] 不加选项,显示本月日历
      • cal 2020 则是2020年的日历
      • cal 12 2020 则是2020年12月的日历
      • cal 8 12 2020 则是2020年12月8日的日历

搜索查找类

  • find指令

    find指令将从指令目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端

    • 基本语法:

    • find[搜索范围][选项]

    • 选项说明:

      选项功能
      -name<查询方式>按照指定的文件名查找模式查找文件
      -user<用户名>查找属于指定用户名所有文件
      -size<文件大小>按照指定的文件大小查找文件,+n大于,-n小于,n等于,文件大小单位(k,M...)
  • locate指令

    locate指令可以快速定位文件路径。

    locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。

    locate指令无需遍历整个文件系统,查询速度较快,为了保证查询结果的准确度,管理员必须定期更新locate时刻。

    • 基本语法
      • locate 搜索文件
    • 特别说明
      • 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
  • grep指令和管道符号|

    grep过滤查找

    |管道符号,表示将前一个命令的处理结果输出传递给后面的命令处理

    • 基本语法

      • grep [选项] 查找内容 源文件
    • 常用选项

      选项功能
      -n显示匹配行及行号
      -i忽略字母大小写
    • 例子

      • cat a.txt | grep -n hello

压缩和解压类

  • gzip/gunzip指令

    • 基本语法
      • gzip 文件(压缩文件,只能将文件压缩为*.gz文件不保留源文件
      • gunzip 文件.gz(解压文件)
  • zip/unzip指令

    • 基本语法
      • zip [选项] XXX.zip 将要压缩的内容(压缩文件和目录的命令)
      • unzip [选项] XXX.zip (解压文件)
    • zip常用选项
      • -r:递归压缩,即压缩目录
    • unzip常用选项
      • -d <目录> :指定解压后文件的存放目录
  • tar指令

    • 基本语法

      • tar [选项] XXX.tar.gz 打包的内容(打包目录,压缩后的文件格式为.tar.gz)
    • 选项说明:

      选项功能
      -c产生.tar打包文件
      -v显示详细信息
      -f指定压缩后的文件名
      -z打包同时压缩
      -x解包.tar文件
    • 实例:

      • 把多个文件打包为a.tar.gz:tar -zcvf a.tar.gz a1.txt a2.txt
      • 将a.tar.gz解压到指定目录:tar -zxvf a.tar.gz -C /opt/tmp

组管理和权限管理(重点)

用户配置文件:/etc/passwd

密码登录信息:/etc/shadow

组配置文件:/etc/group

linux每个用户必须属于一个组,不能独立于组外。

  1. 所有者
  2. 所在组
  3. 其他组
  4. 改变用户所在的组

文件/目录所有者

一般为文件的创建者,谁创建了该文件,就自然成为该文件的所有者

  • 查看文件的所有者:ls -ahl
  • 修改文件的所有者:chown 用户名 文件名

组的创建

groupadd 组名

创建完后可以用useradd -g 组名 用户名来新建组的用户

文件/目录所在组

  • 查看文件的所在组:ls -ahl
  • 修改文件的所在组:chgrp 组名 文件名

其他组

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

改变用户所在组

  • usermod -g 组名 用户名
  • usermod -d 目录名 用户名 改变该用户登录的初始目录

权限的基本介绍

ls -l中显示的内容如下:

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

说明:

  1. 第0位确定文件类型
    • -:普通文件
    • l:软链接
    • d:目录
    • b:块设备【硬盘】
    • c:字符设备【键盘、鼠标】
    • p:管道
    • s:套接字
  2. 第1-3位确定所有者(该文件的拥有者)拥有该文件的权限。——User
  3. 第4-6位确定所属组(同用户组的)拥有该文件的权限。——Group
  4. 第7-9位确定其他用户拥有该文件的权限。——Other
  5. 第10位的说明:
    • 如果是文件,表示硬链接的数,如果是目录则表示该目录的子目录个数
  6. 第11位:所有者
  7. 第12位:所在组
  8. 第13位:文件大小,如果是目录则显示4096
  9. 第14位:文件最后的修改时间

rwx权限详解

rwx作用到文件:

  1. r代表可读(read):可读、查看
  2. w代表可写(write):可以修改,但不代表可以删除文件,删除文件的前提是对该文件所在的目录有写权限,才能删除该文件。
  3. x代表可执行(execute):可以被执行

rwx作用到目录:

  1. r代表可读(read):可以读取,ls查看目录内容
  2. w代表可写(write):可以修改,目录内创建+删除+重命名目录
  3. x代表可执行(execute):可以进入该目录

可以用数字表示权限:

x = 1

w = 2

xw = 1+2 = 3

r = 4

rx = 4+1 = 5

rw = 4+2 = 6

rwx = 4+2+1 = 7

修改权限(chmod)

1570157069905

+、-、=变更权限

u:所有者

g:所在组

o:其他人

a:所有人(u、g、o总和)

  1. chmod u=rwx,g=rx,o=x 文件或目录名
  2. chmod o+w 文件或目录名
  3. chmod a-x 文件或目录名

数字变更权限

chmod 751 文件目录名

修改文件所有者(chown)

  • chown newowner file 改变文件的所有者
  • chown newowner:newgroup file 改变用户的所有者和所有组
  • -R:如果是目录,则使其下所有的子文件或目录递归生效

修改文件所在组(chgrp)

  • chgrp newgroup file改变文件的所有组
  • -R:如果是目录,则使其下所有的子文件或目录递归生效

定时任务调度

1570173226019

crond任务调度

crontab进行定时任务的设置

  • 概述

    任务调度是指系统在某个时间执行的特定的命令或程序

    任务调度的分类有:

    • 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等。
    • 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
  • 基本语法

    • crontab[选项]
  • 常用选项

    选项描述
    -e编辑crontab定时任务
    -l查询crontab任务
    -r删除当前用户所有的crontab任务
  • 参数细节说明

    项目含义范围
    第一个*一小时当中的第几分钟0-59
    第二个*一天当中的第几个小时0-23
    第三个*一个月当中的第几天1-31
    第四个*一年当中的第几个月1-12
    第五个*一周当中的星期几0-7(0和7都代表星期日)
  • 特殊符号说明

    特殊符号含义
    *代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思
    ,代表不连续的时间。比如"0 8,12,16 * * * 命令",就代表在每天的8点0分,12点0分,16点0分都执行一次命令
    -代表连续的时间范围。比如"0 5 * * 1-6 命令",代表在周一到周六的凌晨5点0分执行命令
    */n代表每隔多久执行一次。比如"*/10 * * * * 命令",代表每隔10分钟就执行一遍命令
  • 特定时间执行任务案例

    时间含义
    45 22 * * * 命令在22点45分执行命令
    0 17 * * 1 命令每周一的17点0分执行命令
    0 5 1,15 * * 命令每月1号和15号的凌晨5点0分执行命令
    40 4 * * 1-5 命令每周一到周五的凌晨4点40分执行命令
    */10 4 * * * 命令每天的凌晨4点,每隔10分钟执行一次命令
    0 0 1,15 * 1命令每月1号和15号,每周一的0点0分都会执行命令。
    注意:星期几和几号最好不要同时出现,因为他们定义的都是天,非常容易让人混乱。
  • crond相关指令:

    • crontab -r:终止任务调度
    • crontab -l:列出当前有那些任务调度
    • service crond restart [重启任务调度]
  • 案例1:

    设置任务调度文件:/etc/crontab

    设置个人任务调度。执行crontab -e命令

    接着输入任务到调度文件

    如:*/1 * * * * ls -l /etc/ > /tmp/to.txt

    意思是每小时的每分钟执行一次 ls -l /etc/ > /tmp/to.txt命令

  • 案例2:

    每个1分钟,就把当前日期追加到/tmp/mydate文件中

    1. 先编写一个文件 mytask1.sh

      date >> /tmp/mydate

    2. 给mytask.sh一个可执行权限

    3. crontab -e

      */1 * * * * /root/Desktop/mytask1.sh

    4. 完成

  • 案例3:

    每天凌晨2点,备份mysql的testdb数据库,备份到mydb.bak文件中

    1. 编写脚本 mytask2.sh

      /usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak

    2. 改可执行权限

    3. crontab -e

      0 2 * * * /home/mytask1.sh

    4. 完成

Linux磁盘分区、挂载

分区基础知识

1570176212118

分区的方式:

  1. mbr分区
    • 最多支持4个主分区
    • 系统只能安装在主分区
    • 扩展分区要占用一个主分区
    • MBR最大支持2TB,但拥有最好的兼容性
  2. gpt分区
    • 支持无限多个主分区(但操作系统可能限制,如windows下最多128个分区)
    • 最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
    • windows7 64位以后支持gpt

Linux分区

1570176842747

  1. 对于Linux来说,无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
  2. Linux采用了一种叫做“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时候要载入的一个分区将使它的存储空间在一个目录下获得。

硬盘说明

  1. Linux硬盘分为IDE硬盘盒SCSI硬盘,目前基本上是SCSI硬盘

  2. 对于IDE硬盘,驱动器标识符为“hdx~”

    • “hd“表明分区所在设备的类型,这里是指IDE硬盘了。
    • “x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘)
    • “~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。

    例如,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。

  3. 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd“来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。

可以用lsblk -f或lsblk指令来查看当前系统的分区和挂载的情况:

1570201659406

挂载新硬盘

虚拟机中增加硬盘步骤(挂载到/home/newdisk)

  1. 虚拟机添加硬盘
    • 虚拟机菜单中,设置,设备列表里添加-->硬盘,修改磁盘大小,重启系统生效。
  2. 分区
    • fdisk /dev/sdb
      • m:显示命令列表
      • p:显示磁盘分区 同 fdisk -l
      • n:新增分区
      • d:删除分区
      • w:写入并退出
      • q:不保存退出
    • 说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入并退出,若不保存退出输入q。
  3. 格式化
    • mkfs -t ext4 /dev/sdb1
    • 其中ext4是分区文件系统类型
  4. 挂载
    • 先创建/home/newdisk
    • 挂载mount /dev/sbd1 /home/newdisk
    • 卸载用umount 设备名称或者挂载目录
  5. 设置可以自动挂载(永久挂载)
    • 如果不设置自动挂载,那么重启了就没有挂载,因为是临时挂载
    • vim /etc/fstab 这里记录了分区以及挂载点的情况
    • 拷贝一份之前的格式,然后UUID=xxx删除,改为/dev/sdb1 /home/newdisk 最后两位0 0
    • 添加完成后,执行mount -a即刻生效

磁盘情况查询

  • 查询系统整体磁盘使用情况
    • df -h
  • 查询指定目录的磁盘占用情况
    • du -h /目录
    • 默认为当前目录
    • 参数:
      • -s:指定目录占用大小汇总
      • -h:带计量单位
      • -a:含文件
      • --max-depth=1:子目录深度
      • -c:列出明细的同时,增加汇总值

常用指令:

  1. 统计/home文件夹下文件的个数

    ls -l /home | grep "^-" | wc -l

    • grep匹配开头为-的文件类型,也就是文件
    • wc是用于统计的指令
  2. 统计/home文件夹下目录的个数

    ls -l /home | grep "^d" | wc -l

  3. 统计/home文件夹下文件的个,包括子文件夹里的

    ls -lR /home | grep "^-" | wc -l

    ls -lR:R表示递归

  4. 统计文件夹下目录的个数,包括子文件夹里的

    ls -lR /home | grep "^d" | wc -l

  5. 以树状显示目录结构

    yum install tree安装tree指令

    tree 目录名

网络配置

Linux网络配置原理图:

1570241262789

查看网络IP和网关

查看虚拟网络编辑器:

虚拟机的编辑-->虚拟网络编辑器

修改IP

修改虚拟网卡的IP

虚拟网络编辑器-->修改VMnet8 NAT模式--> 子网IP

查看网关

虚拟网络编辑器-->修改VMnet8 NAT模式--> NAT设置

查看windows环境中的VMnet8网络配置(ipconfig指令)

  1. ipconfig查看
  2. 打开网络和共享中心-->更改适配器--> VMnet8右键属性--> IPv4

Linux网络环境配置

第一种方式(自动获取):

​ 登录后,通过界面来设置自动获取IP,缺点是每次自动获取的ip地址可能不一样。

​ 系统--> 首选项--> 网络连接--> 编辑--> 自动链接勾上即可

第二种方式(指定固定的IP):

​ 直接修改配置文件来指定IP,并可以连接到外网;

​ 编辑/etc/sysconfig/network-scripts/ifcfg-eth0

1570243585574

1570242782086

​ 重启服务service network restart

CentOS7文件为ifcfg-ens33,重启网络为systemctl restart network

进程管理

进程的基本介绍

  1. 在Linux中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个ID号。
  2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
  3. 每个进程都可能以两种方式存在。前台与后台,所谓的前台进程就是用户目前的屏幕上可以进行操作的。后台就是实际在操作的,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才会结束。

显示系统执行的进程

ps命令是用来查看目前系统中有哪些正在执行的进程以及执行情况。可以不加任何参数;

ps命令显示的信息选项:

字段说明
PID进程识别号
TTY终端机号
TIME此进程所消耗的CPU时间
CMD正在执行的命令或进程名

ps -a:显示当前终端的所有进程信息

ps -u:以用户的格式显示进程信息

ps -x:显示后台进程运行的参数

1570245252922

常用的几个指令:

  • ps -aux|more
  • ps -aux|grep 进程名

ps详解:

一般用ps -aux|grep xxx

  • System V展示风格
  • USER:用户名称
  • PID:进程号
  • %CPU:进程占用CPU的百分比
  • %MEM:进程占用物理内存的百分比
  • VSZ:进程占用的虚拟内存大小(单位:KB)
  • RSS:进程占用的物理内存大小(单位:KB)
  • TT:终端名称,缩写
  • STAT:进程状态
    • S:睡眠
    • s:表示该进程是会话的先导进程
    • N:表示进程拥有比普通优先级更低的优先级
    • R:正在运行
    • D:短期等待
    • Z:僵死状态
    • T:被跟踪或者被停止等等
  • STARTED:进程的启动时间
  • TIME:CPU时间,即进程使用CPU的总时间
  • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

用ps -ef | more显示的是父进程信息,PPID是父进程的PID

  • -e表示所有进程
  • -f全格式

ps -ef | grep xxx

  • 是BSD风格
  • UID:用户ID
  • PID:进程ID
  • PPID:父进程ID
  • C:CPU用于计算执行优先级的因子。
    • 数值越大,表明进程是CPU密集型运算,执行优先级会降低。
    • 数值越小,表名进程是I/O密集型运算,执行优先级会提高
  • STIME:进程启动的时间
  • TTY:完整的终端名称
  • TIME:CPU时间
  • CMD:启动进程所用的命令和参数

终止进程kill和killall

若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源的时候,此时可以考虑停止该进程。

使用kill命令来完成此项任务。

kill [选项] 进程号(通过进程号来杀死进程)

killall 进程名称(通过进程名车功能来杀死进程,也支持通配符,这在系统因负载过大而变慢的时候很有用)

常用选项:

-9:表示强迫进程立即停止

案例:

  1. 踢掉某个非法登录用户
    • 先ps -aux | grep sshd
    • 找到要踢出的用户进程号
    • kill 进程号
  2. 终止远程登录服务sshd,在适当的时候再次重启sshd服务
    • ps -aux | grep sshd
    • kill进程号即可
  3. 终止多个gedit编辑器
    • killall gedit
  4. 强制杀掉一个终端
    • ps -aux | grep bash
    • 找到/bin/bash就是个终端
    • kill -9 进程号

查看进程树pstree

基本语法:

​ pstree [选项],更直观查看进程信息

常用选项:

  • -p:显示进程的PID
  • -u:显示进程的所属用户

服务(service)管理

服务[service]本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql、sshd、防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

1570254430837

service管理指令

service 服务名 start|stop|restart|reload|status

systemctl【CentOS7】

例子:

查看防火墙情况,关闭和重启防火墙:

​ service iptables status

​ service iptables stop

​ service iptables restart

可以在windows命令行用telnet ip地址 端口 来测试linux的端口是否可以访问(可能默认没有开,可以到系统设置-->控制面板-->程序和功能-->启用和关闭Windows功能-->开启telnet )

用service指令开启和停用服务只是暂时的,重启之后还是会恢复原来的状态,如果希望开启或关闭状态永久生效,需要用chkconfig指令

chkconfig指令

通过chkconfig指令可以给每个服务的各个运行级别设置自启动/关闭

  1. 查看服务chkconfig --list | grep xxx
  2. chkconfig 服务名 --list
  3. chkconfig --level 5 服务名 on/off

注意:chkconfig重新设置服务之后,需要重启reboot才能生效。

查看服务名

方式1:使用setup指令 --> 系统服务 就可以看到

方式2:/etc/init.d/服务名称

服务的运行级别(runlevel)

查看或修改默认级别:vi /etc/inittab

Linux系统有7种运行级别(runlevel):常用的级别是3和5

  • 0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动
  • 1:单用户工作状态,root权限,用于系统维护,禁止远程登录
  • 2:多用户状态(没有NFS),不支持网络
  • 3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
  • 4:系统未使用,保留
  • 5:X11控制台,登录后进入图形GUI模式
  • 6:系统正常关闭并重启,默认运行级别不能设置为6,否则不能正常启动

开启的流程说明:

1570255484813

动态监控进程

top与ps命令和相似,都是用来显示正在执行的进程。

top与ps最大的不同就是在于top在执行一段时间可以更新正在运行的进程。

1570262305713

基本语法:

​ top [选项]

选项说明

选项功能
-d 秒数指定top命令每隔几秒更新。默认是3秒
-i使top不显示任何闲置或僵死进程
-p通过指定监控进程ID来仅仅监控某个进程的状态

交互操作说明:

操作功能
P以CPU的使用率排序(默认)
M以内存的使用率排序
N以PID排序
q退出top
u输入用户名,可以监视指定用户的进程情况
k输入要结束的进程号,即可结束进程

监控网络状态

查看系统网络情况用netstat指令

基本语法:

​ netstat [选项]

选项说明:

  • -an:按一定顺序排列输出
  • -p:显示哪个进程在调用

一般用netstat -anp|grep xxx 即可

检测主机连接命令ping:

是一种网络检测工具,主要用于检测远程主机是否正常,或两部主机间的介质是否为断、网线是否脱落或网卡故障。

如:ping 对方的ip地址

RPM

rpm包的管理

一种用于互联网下载包的打包及安装工具,它包含在某些Linux发行版中。

他生成具有.rpm扩展名的文件。

RPM是RedHat Package Manger(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但是理念是通用的。

Linux发行版都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。

rpm包的简单查询指令:

  • 查询已安装的rmp列表:rpm -qa | grep xx

rpm包名基本格式:

一个rpm包名:firefox-52.8.0-1.el6.centos.x86_64.rpm

名称:firefox

版本号:52.8.0-1

适用操作系统:el6.centos.x86_64,表示centos6.x的64位系统

如果是i686、i386表示32位系统,noarch表示通用。

rpm包的其他查询指令:

i:用来展示详细信息

l:用于展示包安装了哪些文件

f:用于展示文件属于哪个rpm包的,与l相反

  • rpm -qa:查询所安装的所有rpm软件包
    • rpm -qa | more
    • rpm -qa | grep X[rpm -qa | grep filefox]
  • rpm -q 软件包名:查询软件包是否安装
    • rpm -q firefox
  • rpm -qi 软件包名:查询软件包信息
    • rpm -qi file
  • rpm -ql 软件包名:查询软件包中的文件
    • rpm -ql firefox
  • rpm -qf 文件全路径名:查询文件所属的软件包
    • rpm -qf /etc/passwd
    • rpm -qf /root/install.log

卸载rpm包

基本语法:

​ rpm -e rpm包的名称

细节讨论:

  1. 如果其他软件包依赖于你要卸载的软件包,卸载的时候会产生错误信息
    • 如:rpm -e foo
    • removing these packages would break dependencies:foo is needed by bar-1.0-1
  2. 如果我们就是要删除foo这个rpm包,可以增加参数 --nodeps,就可以强制卸载,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行

安装rpm包

基本语法:

​ rpm -ivh rpm包全路径名称

参数说明:

  • i:install安装
  • v:verbose提示
  • h:hash进度条

可以把CentOS7的iso镜像挂载到虚拟机上,然后在/media目录把指定的rpm包复制出来,再用rpm -ivh rpm包 进行安装。

YUM

yum是一个Shell前端软件包管理器。

基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。

yum的基本指令

  • 查询yum服务器是否有需要安装的软件
    • yum list | grep xx软件列表
  • 安装指定的yum包
    • yum install xxx 下载安装
0

评论区