zoukankan      html  css  js  c++  java
  • Linux基础知识

    目录

    一、Centos安装

    二、网络连接的三种模式

    三、安装vmtools文件

    四、创建共享文件

    五、目录结构

    六、VIM编辑器

    七、查看基本信息

    八、用户与组管理

    九、运行级别

    十、找回root密码

    十一、常用指令

    十二、调整文件及目录权限

    十三、定时任务调度

      1、crontab进行定时任务的设置

      2、at定时任务

    十四、磁盘分区与挂载

      1、概念详解

      2、挂载案例

      3、磁盘情况查询

    十五、网络配置

      1、NAT网络配置

      2、设置主机名和hosts映射

      3、主机名解析过程分析

    十六、修改命令行终端样式

    十七、进程管理

      1、基本介绍

      2、ps -aux

      3、ps -ef

      4、终止进程kill、killall

      5、查看进程树pstree

    十八、服务管理

      1、service管理指令

      2、chkconfig指令

      3、systemcrl管理指令

      4、动态监控进程

      5、netstat查看网络情况

    十九、rpm与yum软件安装

      1、rpm包相关

      2、yum源安装

    二十、atime、mtime、ctime

    ------------------------------------------------------------------------------

    一、Centos安装

    swap为交换分区,一般和与运行内存等大即可

    安装完成后需要将进行一些配置

    vi /etc/sysconfig/network-scripts/ifcfg-ens33 #修改网络信息
    --修改
    ONBOOT=yes
    BOOTPROTO=static
    --添加
    IPADDR=192.168.80.128
    NETMASK=255.255.255.0
    GATEWAY=192.168.80.2
    DNS1=114.114.114.114
    删除------
    UUID
    
    systemctl restart network.service #重启网卡重新加载配置文件
    
    systemctl stop firewalld #(本次服务内关闭防火墙)
    systemctl disable firewalld #(禁用防火墙服务)
    
    #去除软件安装限制
    vi /etc/selinux/config
    SELINUX=disabled   

    centos8在学习环境下安装的时候软件选择需要勾选以下两个,如果是生产环境直接勾选最小安装即可

    二、网络连接的三种模式

    桥接模式(V0):虚拟系统可以和外部系统通讯,但容易造成IP冲突

    NAT模式(V8):网络地址转换模式,虚拟系统可以和外界进行通讯,不造成IP冲突

    仅主机模式(V1):仅主机模式的虚拟网络适配器仅对主机可见,并在虚拟机和主机系统之间提供网络连接。

    相对于NAT模式而言,仅主机模式不具备NAT功能,因此在默认情况下,使用仅主机模式网络连接的虚拟机无法连接到Internet

    三、安装vmtools文件

    ①点击”虚拟机“---安装vmare tools

    ②打开光盘,将tar文件解压

    tar -zxvf VMwareTools-10.3.22-15902021.tar.gz

    ③执行安装程序

    ./vmware-install.pl -d

    注意:安装VM Tools时需要系统安装gcc,执行命令gcc -v可以检验是否安装了gcc,如果没有则需要yum安装

    四、创建共享文件

    ①虚拟机开启共享

    ②Linux下文件路径

    /mnt/hgfs/

    注意:此种方式只适合Linux与主机在同意终端上,实际生产环境中都是利用远程管理工具进行连接,比如Xshell、XFtp

    五、目录结构

    1) linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。

    2)深刻理解 linux树状文件目录是非常重要的,记住一句经典的话:在Linux 世界里,一切皆文件

    树状目录结构:

    /bin:普通用户和管理员都可以执行的命令字

    /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,只有管理员才能执行(关机、重启等)

    /boot:存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件

    /dev:设备文件存放目录,类似于 windows的设备管理器,把所有的硬件用文件的形式存储

    /etc:所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库时mysql的配置文件都在/etc下

    /home:普通用户的家目录

    /root:管理员的家目录

    /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下

    /mnt:临时设备挂载目录,系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就查看相应的内容了

    /proc:进程的所在目录,里面的数据都在内存中

    /tmp:临时文件安装目录

    /var:常变文件存放目录(日志文件、邮件文件等)

    /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DIL文件,几乎所有的应用程序都需要用到这些共享库

    /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

    /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录

    /proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

    /srv:service缩写,该目录存放一些服务启动之后需要提取的数据

    /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs

    /opt:这是给主机额外安装软件所存放的目录,如安装ORACLE 数据库就可放到该目录下,默认为空

    /usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序

    /selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置

    Linux系统中如何分辨文件类型

    蓝色=目录、黑色=普通文件、浅蓝色=符号链接(快捷方式)、红色=压缩包

    黑底黄字=设备文件 硬盘 sda、黑底红字=警告故障文件、绿色=带有执行权限的文件、紫色=图片 模块文件

    六、VIM编辑器

    vim filename #正常打开
    vim +8 filename  #打开文件,并将光标置于第8行
    vim + filename   #打开文件,将光标置于最后一行
    vim +/word filename  #打开指定搜索单词的位置,按n查找下一个,按N查找上一个

    命令模式到输入模式按键解析

    i:在当前位置插入数据
    a:追加数据
    o:在当前行后面开启一个新的输入行
    I:行首
    A:行尾
    O:上一行

    底线命令模式

    :wq    #保存并退出
    :q!      #不保存直接退出
    :set nu    #显示行号
    :set nonu     #取消显示行号
    :50,60 d     #删除50-56行的数据
    :w [filename]    #将编辑的数据储存成另一个档案(类似另存新档)
    :s/old/new/g   #替换字符串,g表示替换当前行所有 否则只替换当前行第一个
    :3,8s/old/new/g   #查找指定行
    :g/old/s//new/g   #替换全文
    /pattern  #搜索指定的字符串,并将结果高亮显示
    :noh  #取消字符串高亮显示

    命令模式

    yy      #复制游标所在的那一行
    nyy     #复制光标所在的向下 n 行
    p       #粘贴到当前行下
    dd      #删除当前行
    ndd     #删除光标所在的向下 n 行
    gg      #回到第一行
    G       #到最后一行
    nG      #快速跳转至第n行
    p, P    #p为将已复制的数据在光标下一行贴上,P则为贴在游标上一行
    Ctrl+f    #屏幕『向下』移动一页,相当于 [Page Down]按键 
    Ctrl+b    #屏幕『向上』移动一页,相当于 [Page Up] 按键
    0 或功能键[Home]    #移动到这一行的最前面字符处
    $ 或功能键[End]     #移动到这一行的最后面字符处
    /word     #向光标之下寻找一个名称为 word 的字符串
    ?word     #向光标之上寻找一个字符串名称为 word 的字符串
    u         #撤销上一次操作
    Ctrl+r    #重做上一个动作
    .         #重复前一个动作的意思

    七、查看基本信息

    查看内存信息:cat/proc/meminfo

    查看cpu信息:cat/proc/cpuinfo

    重启与关机

    shutdown -h now    #立该进行关机
    shudown -h 1         #"hello,1分钟后会关机了”
    shutdown -r now    #现在重新启动计算机
    halt       #关机,作用和上面一样.
    reboot   #现在重新启动计算机
    sync      #把内存的数据同步到磁盘

    不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中,虽然目前的shutdown/reboot/halt等命令均已经在关机前进行了sync,但还是小心驶得万年船

    登录与注销

    登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。

    可以利用普通用户登录,登录后再用“su - 用户名”命令来切换成系统管理员身份.

    在提示符下输入 logout 即可注销用户

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

    返回上一级目录:cd ..

    列出当前所在目录路径:pwd

    列出当前目录中的内容:ls

    / = 操作系统的起始路径,即根路径

    查看硬盘信息:fdisk -l

    /dev/sda 操作系统中第一块硬盘的名称以及所在路径,sd=硬盘类型,a=第一块,同理第二块/dev/sdb

    Linux操作系统中一切皆文件

    [root@HK9527 Desktop]# 执行的命令
    [当前登录用户名称@主机名称 当前所在路径]#

    #:用户身份为超级管理员

    $:用户身份为普通用户

    八、用户与组管理

    组和用户的关系

    1、用户必须有一个基本组,如果该组中有基本成员,该组不允许被删除

    2、一个用户可以有多个附加组,如果附加组没有基本成员,该组可以被删除

    3、建立一个用户时,如果没有指定组,则会建立一个与用户名同名的组

    useradd
    -u      #指定 uid号
    -g      #指定 基本组
    -G      #指定 附加组
    -s      #指定用户登录的命令解释器
        -s /sbin/nologin  #不允许登录
        -s /bin/bash   #允许登录
    -M      #无家目录
    useradd -d /tmp/hpome test   #给新创建的用户test指定家目录
    usermod(用户修改命令,选项同上)
    
    userdel -r   #删除用户的家目录
    userdel      #删除用户,但不删除家目录
    
    passwd  用户名  #给用户名设定密码
        -S               #查看用户密码状态
        -l                #锁定用户
        -u               #解锁用户密码
        -d               #删除用户密码
    
    chage -M 90 用户名   #修改用户密码的最长有效期

    查询用户信息指令

    id 用户名  #例如:id root

    切换用户指令

    su - 用户名   #例如:su - root

    从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。

    当需要返回到原来用户时,使用exit/logout指令

    查看当前用户/登录用户

    <<root@HK9527 ~>># who am i
    #root
    <<root@HK9527 ~>># su - zrh
    [zrh@HK9527 ~]$ who am i
    #root
    [zrh@HK9527 ~]$ whoami
    #zrh
    [zrh@HK9527 ~]$ exit
    #登出
    <<root@HK9527 ~>># whoami
    #root

    who am i 为查询第一次登录到Linux服务器的用户名

    whoami 为查询当前用户名

    组命令

    groupadd 组名  #创建组
    groupadd -g  1005  组名   #指定gid号创建组
    groupmod(组修改命令,选项同上)
    groupdel      #删除组
    groupmod -n old new    #修改组名字
    groups [username]   #查看用户所在组

    案例演示

    #创建一个组指定gid为1200名称为mojiao的组,新建用户zwj并将其放入到mojiao组里
    groupadd -g 1200 mojiao
    useradd -g mojiao zwj
    
    #修改zwj的组为test组
    usermod -g test zwj

    /etc/passwd 保存了系统中所有用户的信息

    uid用户的身份标识0为超级管理员、500-60000普通用户、1-499 程序用户(不能登录系统)

    vim /etc/passwd
    root:x:0:0:root:/root:/bin/bash

    字段1:用户名

    字段2:密码占位符

    字段3:uid号

    字段4:用户的基本组id号

    字段5:用户信息记录位置(废弃)

    字段6:用户的家目录

    字段7:用户登录系统后用什么命令解释器

    /etc/shadow 记录系统中用户的密码信息

    root : $6$Ex0t5kJ3IesoOavmq9ANH.rsg5OAsox32NpN.WaV0GeKXNSkbP/QN3z1 : : 0 : 99999 : 7 : : : 

    字段1:用户名

    字段2:通过sha-512以及salt值加密后的密文

    字段3:距离1970年1月1日密码最近一次的修改时间

    字段4:密码的最短有效期

    字段5:密码的最长有效期(一般建议90天)

    字段6:密码过期前7天警告

    字段7:密码的不活跃期

    字段8:密码距离1970年1月1日的失效时间

    /etclgroup文件组(group)的配置文件,记录Linux包含的组的信息

    mojiao:x:1200:

    字段1:组名

    字段2:口令

    字段3:组标识号

    字段4:组内用户列表

    九、运行级别

    运行级别说明:

    0 :关机

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

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

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

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

    5:图形界面

    6:系统重启

    常用运行级别是3和5,也可以指定默认运行级别

    命令: init [0123456]

    通过init 来切换不同的运行级别

    init 0   #关机
    init 6   #重启

    指定默认运行级别

    在centos7以前,在 /etc/inittab文件中进行修改

    在centos7以后进行了如下简化:

    multi-user.target = init 3

    graphical.target = init 5

    systemctl get-default   #查看默认运行级别
    systemctl set-default graphical.target   #设置默认运行级别

    十、找回root密码

    ①启动系统,进入开机界面,在界面中按“e”进入编辑界面

    ②使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh

    ③输入完成后,直接按快捷键:ctrl+x 进入单用户模式

    ④在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键

    ⑤在新的一行输入:passwd, 完成后按键盘的回车键,输入密码,然后再次确认密码

    ⑥在新的一行输入:touch /.autorelabel(注意:touch与 /后面有一个空格),完成后按键盘的回车键

    ⑦在新的一行输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键

    init=/bin/sh
    mount -o remount,rw /
    passwd
    touch /.autorelabel
    exec /sbin/init

    十一、常用指令

    Linux命令是区分大小写的

    -bash: abcd: command not found    #命令敲错了或者命令未安装

    命令的参数如果是单词一般加“-”,如果是字母或者缩写一般加“--”

    pwd   #显示当前工作目录的绝对路径
    ls [选项] [目录或是文件]
    常用选项
    -a:显示当前目录所有的文件和目录,包括隐藏的
    -l:以列表的方式显示信息
    -h:以人类可以看懂的方式显示文件大小
    -R:递归显示目录中子目录的内容
    du -sh 目录  #查看目录的大小
    cd [参数]    #功能描述:切换到指定目录
    cd       #回到自己的家目录
    cd ..    #回到当前目录的上一级目录
    mkdir    #指令用于创建目录
    基本语法: mkdir [选项] 要创建的目录
    常用选项
    -p:创建多级目录应用实例
    案例1:创建一个目录 /home/dog
    #mkdir /home/dog
    案例2:创建多级目录/home/animal/tiger
    #mkdir -p /home/animal/tiger
    案例3:一次性创建多个子目录
    #mkdir -p case/{a,b,c}/init
    这种写法case文件夹下有a、b、c三个文件夹,这三个文件夹里都有init这个子文件夹
    rmdir [选项] #删除空目录
    rmdir删除的是空目录,如果目录下有内容时无法删除的
    touch    #创建空文件
    基本语法:touch 文件名称
    cp    #拷贝文件到指定目录
    基本语法
    cp [选项] 
    常用选项
    -r :递归复制整个文件夹>应用实例
    案例1:将/home/hello.txt拷贝到/home/bbb目录下
    #cp hello.txt /home/bbb
    案例2:递归复制整个文件夹,比如将/home/bbb 整个目录,拷贝到/opt
    #cp -r /home/bbb /opt
    案例3:强制覆盖不提示的方法
    #cp -r /home/bbb /opt
    rm    #移除文件或目录
    rm [选项] 删除的文件或目录
    常用选项
    -r:递归删除整个文件夹
    -f:强制删除不提示
    应用实例
    案例1:将/home/hello.txt删除
    #rm /home/hello.txt
    案例2:递归删除整个文件夹/home/bbb
    #rm -rf /home/bbb
    mv    #移动文件与目录或重命名
    基本语法
    mv oldNameFile newNameFile       #功能描述:重命名
    mv /temp/movefile /targetFolder   #功能描述:移动文件
    应用实例
    案例1:将/home/cat.txt文件重新命名为pig.txt案例
    #mv /home/cat.txt /home/pig.txt
    2:将/home/pig.txt文件移动到/root目录下
    #mv /home/pig.txt /root/
    案例3:移动整个目录,比如将/opt/bbb移动到/home下
    #mv /opt/bbb /home/
    cat    #查看文件内容
    cat [选项] 要查看的文件
    常用选项
    -n :显示行号
    应用实例
    案例1:/etc/profile文件内容,并显示行号
    #cat -n /etc/profile
    cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令"| more"
    #cat -n/etc/profile | more
    more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键(交互的指令),详见操作说明
    基本语法:more 要查看的文件
    操作功能说明
    空格键:向下翻一页
    Enter:向下翻一行
    q:代表立刻离开more,不再显示该文件内容
    ctrl+F:向下滚动一屏
    ctrl+B:返回上一屏
    =:输出当前行的行号
    :f 输出文件名和当前行的行号
    less 指令用来分屏查看文件内容,它的功能与more 指令类似,但是比 more指令更加强大,支持各种显示终端。
    less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
    基本语法:less 要查看的文件
    操作功能说明
    空格键:向下翻动一页
    [pagedown]:向下翻动一页
    [pageup]:向上翻动一页
    /字符串:向下搜寻"字符串"的功能(n:向下查找;N:向上查找)
    q:离开less程序
    echo 输出内容到控制台
    基本语法
    echo [选项] [输出内容]
    应用实例
    案例:使用echo 指令输出环境变量,比如输出$PATH $HOSTNAME,
    #echo $HOSTNAME
    head    #用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
    基本语法
    head 文件   #功能描述:查看文件头10行内容
    head -5 文件    #功能描述:查看文件头5行内容,5可以是任意行数
    应用案例:查看/etc/profile的前面5行代码
    #head -5 /etc/profile
    tail    #用于输出文件中尾部的内容,默认情况下tail 指令显示文件的前10行内容
    基本语法
    1) tail 文件    #功能描述:查看文件尾10行内容
    2) tail -5 文件    #功能描述:查看文件尾5行内容,5可以是任意行数
    3) tail -f 文件    #功能描述:实时追踪该文档的所有更新
    应用实例
    案例1:查看/etc/profile 最后5行的代码
    #tail -5 /etc/profile
    案例2:实时监控 mydate.txt,看看到文件有变化时,是否看到实时的追加hello,world
    #tail -f /home/mydate.txt
    >输出重定向   >>追加
    基本语法
    1) ls -l > 文件    #功能描述:列表的内容写入文件中(覆盖写)
    2) ls -al >>文件   #功能描述:列表的内容追加到文件末尾
    3) cat 文件1 > 文件2    #功能描述:将文件1的内容覆盖到文件2
    4) echo "内容" >> 文件    #追加
    应用实例
    案例1:将/home目录下的文件列表写入到/home/info.txt中,覆盖写入
    #ls -l /home > /home/info.txt[如果info.txt没有,则会创建]
    案例⒉:将当前日历信息追加到/home/mycal文件中
    #cal >> /home/mycal
    history     #查看已经执行过历史命令,也可以执行历史指令
    基本语法
    history    #功能描述:查看已经执行过历史命令
    应用实例
    案例1:显示所有的历史命令
    #history
    案例2:显示最近使用过的10个指令
    #history 10
    案例3:执行历史编号为5的指令
    #!5
    find    #指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
    基本语法:
    find [搜索范围] [选项]
    选项说明
    -name:按照指定的文件名查找文件
    -user:查找属于指定用户名所有文件
    -size:按照指定文件大小查找文件
    -atime:在过去n天内被读取过的文件
    -ctime:在过去n天内被修改过的文件
    -cmin:在过去n分钟内修改过的文件 应用实例 案例1:根据名称查找
    /home目录下的hello.txt 文件 #find /home -name hello.txt 案例2:查找/opt目录下,用户名称为nobody 的文件 #find /opt -user nobody 案例3:查找整个linux系统下大于200M的文件(+n大于、-n小于、n等于,单位有k,M,G) #find / -size +200M
    案例4:查找整个linux系统下在过去10天内被读取过的文件
    #find / -atime -10
    exec参数说明
    -exec参数后面跟的是command命令,他的终止是以;为结束标志的,考虑到各个系统中;的不同含义,所以前面加反斜杠
    {}代表前面find查找出来的结果  
    案例5:查找当前目录下名字包含tar.gz且10天前修改过的文件,并将其删除
    #find . -name "*tar.gz" -ctime +10 -exec rm -rf {} ;
    #-ctime +10 表示10天之前(不含10天之前的当天)修改过的文件
    #-ctime -10 表示10天之内(含10天之前的当天)修改过的文件
    #-ctime 10 表示10天之前的当天之内修改过的文件
    locate    #可以快速定位文件路径
    locate指令利用事先建立的系统中所有文件名称及路径的 locate数据库实现快速定位给定的文件。
    Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
    基本语法:
    locate 搜索文件
    特别说明:由于locate 指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
    应用实例
    案例1:请使用locate指令快速定位hello.txt文件所在目录
    #updatedb
    #locate hello.txt
    which    #可以查看某个指令在哪个目录下
    比如ls指令在哪个目录
    #which Is
    grep指令和管道符号│
    grep过滤查找,管道符,"|",表示将前一个命令的处理结果输出传递给后面的命令处理。
    基本语法
    grep [选项] 查找内容 源文件
    选项说明
    -n:显示匹配行及行号
    -i:忽略字母大小写
    应用实例
    案例:请在hello.txt 文件中,查找"yes”所在行,并且显示行号
    #写法1: cat /home/hello.txt | grep "yes"
    #写法2: grep -n "yes" /home/hello.txt
    gzip、gunzip   #gzip 用于压缩文件,gunzip用于解压
    基本语法
    gzip 文件    #功能描述:压缩文件,只能将文件压缩为*.gz文件
    gunzip filename.gz    #功能描述:解压缩.gz结尾的文件
    应用实例
    案例1: gzip压缩,将/home下的hello.txt文件进行压缩
    #gzip /home/hello.txt
    案例2: gunzip压缩,将/home下的hello.txt.gz文件进行解压缩
    #gunzip /home/hello.txt.gz
    
    zip、unzip #zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用的 基本语法 zip [选项] XXX.zip 将要压缩的文件内容 #功能描述:压缩文件和目录的命令unzip [选项] XXX.zip #功能描述:解压缩文件 zip常用选项 -r:递归压缩,即压缩目录 unzip的常用选项 -d <目录>:指定解压后文件的存放目录 应用实例 案例1:将/home下的所有文件/文件夹进行压缩成myhome.zip zip -r myhome.zip /home #将home目录及其包含的文件和子文件夹都压缩 案例2:将myhome.zip解压到/opt/tmp目录下 mkdir /opt/tmp unzip -d /opt/tmp /home/myhome.zip
    bzip2 文件名称
    #压缩文件 bunzip2 压缩包 # 解压缩 -j = bzip2 tar -jcf /tmp/allfile.tar.bz2 /tmp/allfile tar -jxf /tmp/allfile.tar.bz2 -C /root
    tar
    #打包指令,最后打包后的文件是.tar.gz 的文件 基本语法 tar [选项] XXX.tar.gz 要打包的文件内容 #功能描述:打包目录,压缩后的文件格式.tar.gz 选项说明 -c:产生.tar打包文件 -C:指定解压路径 -v:显示详细信息 -f:指定压缩后的文件名 -z:打包同时压缩 -x:解包.tar文件 应用实例 案例1:压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成pc.tar.gz #tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 案例2:将/home的文件夹压缩成myhome.tar.gz #tar -zcvf myhome.tar.gz /home/ 案例3:将pc.tar.gz解压到当前目录 #tar -zxvf pc.tar.gz 案例4.将myhome.tar.gz解压到 /opt/tmp目录下 #①mkdir /opt/tmp #②tar -zxvf /home/myhome.tar.gz -C /opt/tmp
    date    #显示当前日期
    基本语法
    1) date    #功能描述:显示当前时间
    2) date +%Y    #功能描述:显示当前年份
    3) date +%m    #功能描述:显示当前月份
    4) date+%d      #功能描述:显示当前是哪一天
    5) date "+%Y-%m-%d %H:%M:%S"    #功能描述:显示年月日时分秒。这里加引号是因为有空格,如果是+%Y-%M-%D_%H:%M:%S就不需要加引号
    应用实例
    案例1:显示当前时间信息
    #date
    案例2:显示当前时间年月日
    #date "+%Y-%m-%d"
    案例3:显示当前时间年月日时分秒
    #date "+%Y-%m-%d %H:%M:%S"
    
    date -s 字符串时间    #设置日期时间
    案例1:设置系统当前时间,比如设置成2020-11-03 20:02:10
    #date -s "2020-11-03 20:02:10"
    自动同步时间
    yum install ntp -y
    ntpdate cn.ntp.org.cn
    
    本地搭建NTP服务
    service ntpd start  #开启本地NTP服务器
    ntpdate 192.168.188.100    #客户端同步本地NTP服务器时间
    cal    #查看日历指令
    基本语法
    cal [选项]    #功能描述:不加选项,显示本月日历
    应用实例
    案例1:显示当前日历
    #cal
    案例2:显示2020年日历
    #cal 2020
    cut     #用指定的规则来切分文本,cut的分隔符必须是单个字符
    cut -d":" -f1,2,3,4 /etc/passwd  #以:切分文件,并显示每行的前4列
    sort    #排序
    sort lucky    #对文本中的行进行排序
    sort -t' ' -k2 lucky       #对每一行的数据按照' '进行切分,按照第二列进行排序
    sort -t' ' -k2 -r lucky    #逆序
    sort -t' ' -k2 -n lucky    #按照数值大小进行排序,如果有字母,字母在前
    sort -t' ' -k2 -nr lucky #nr往往同时使用
    wc    #统计单词的数量
    <<root@HK9527 ~>># wc /etc/passwd
      44   90 2301 /etc/passwd
    #表示44行,90个单词(单词以空格划分),2301个字符
    -l:line
    -w:word(以空格来分割单词)
    -c:char
    stat    #用于显示 inode 内容
    stat /etc/passwd    #查看 /etc/passwd 文件的inode内容
    查看文件的状态
    Inode #当前文件在文件系统的唯一标识,类似于ID
    access #访问时间
    modify #修改文件内容时间
    change #修改文件元数据信息时间

    软链接是指向文件的,硬链接是为了保护文件的

    软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径,软连接和原始文件不是同一个文件
    基本语法
    ln -s [原文件或目录] [软链接名]    #功能描述:给原文件创建一个软链接
    应用实例
    案例1:在/home目录下创建一个软连接myroot,连接到/root目录
    #ln -s /root /home/myroot
    案例2:删除软连接myroot 
    rm -f /home/myroof
    细节说明:当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
    
    硬链接
    ln [原文件或目录] [硬链接名]
    硬链接和原始文件使用文件系统中的同一个文件 如果你害怕一个文件被别人误删,你可以使用硬链接保护这个文件 软硬链接在链接文件的时候,推荐使用文件的绝对路径,否则有可能会出现问题

    linux与linux之间互传文件
    scp 源数据地址(source) 目标数据地址(target)
    scp apache-tomcat-7.0.61.tar.gz root@192.168.31.44:/opt    #传文件
    scp root@192.168.31.44:/opt/apache-tomcat-7.0.61.tar.gz ./  #拿文件
    scp -r apache-tomcat-7.0.61 root@192.168.31.44:/opt   #传文件夹
    uniq -c case.txt   #在行首显示出现的次数(统计次数),在统计之前需要sort一下

    我们可以发现“I”在上图中出现了两次,且数字都为1,这显然不对,所以在统计次数的时候,需要先sort一下再统计,这样才不会出错。

    awk -F " " '{print $5}'    #表示用awk进行分割,分割依据为空格,然后输出分割后的第5行
    awk -F '[ ,]+' '{print $5}'    #表示用awk进行分割,先用空格分隔,再用“,”分隔,打印第五行
    print $0表示全部打印

    十二、调整文件及目录权限

    权限:文件或目录属于谁,属于哪个组,不同的用户能对该文件进行何种操作。

    文件与目录查看权限

    文件:ls -lah

    目录:ls -ld

    字段1:表示文件的类型 d 目录 、- 文件、 l 符号链接、 c 字符型设备比如鼠标键盘、 b block块设备比如硬盘

    字段2:文件所属者的权限

    如果一个用户对该目录只有x权限,那么此用户是可以进入这个目录,但不能查看目录的内容。

    如果该用户对目录下的某个文件具有rw权限,那么即使看不了该目录下的文件,此用户还是可以修改具有rw权限的文件。

    字段3:文件所属组的权限

    文件所属组内成员对该文件具有的权限

    字段4:其他用户的权限(既不是文件的所属者,也不在文件的所属组中)

    字段4后面的数字如果是文件的话就表示硬连接数,如果是目录的话就表示子目录数

    修改文件权限属性

    chmod 对象 运算符号 权限 文件或者目录
    对象:
    u(user所属者)
    g(goup所属组) 
    o(other其他) 
    a(all所有)
    运算符号:
    + 赋权
    - 撤权
    = 指定权限
    例如:
    chmod a=--- 目录
    chmod g+r 目录
    chmod o=rx 目录

    改变文件的所属者/所属组

    chown 用户 文件
    chgrp 组 文件

    八进制赋权法

    r=4、w=2、x=1

    rwxr-xr-x   =   755

    rw-r--r--   =   644

    chmod 644 test.txt

    三种特殊权限

    1、t 粘滞位

    只对目录有效,在目录中建立的文件只有文件的所属者可以删除。

    #方法1
    chmod 777 /tmp/test
    chmod o+t /tmp/test
    #方法2
    chmod 1777 /tmp/test

    2、sgid

    只对目录有效,在目录中建立的文件或者目录的所属组会继承父目录的所属组

    #方法1
    chmod 777 /tmp/test
    chmod g+s /tmp/test
    #方法2
    chmod 2777 /tmp/test

    3、suid

    只对可执行文件有效,当一个可执行文件具有suid权限,无论谁运行该文件,谁就具有该文件所属者的权限

    which vim    #查找vim路径
    chmod u+s /usr/bin/vim      #方法1
    chmod 4755 /usr/bin/vim     #方法2
    chmod u-s /usr/bin/vim      #取消suid方法
    实验:赋权后可以利用普通用户打开shadow文件,删掉其他用户的密码
    find /usr/bin -perm 4755    #针对权限进行查询/usr/bin目录中所有具有suid权限的命令

    不可变属性

    将passwd和shadow文件设置为不可变属性,那么就无法创建新用户,因为往文件里添加不了内容

    chattr +i /etc/passwd /etc/shadow  #添加不可变属性
    lsattr /etc/passwd /etc/shadow     #查看文件属性
    chattr -i /etc/passwd /etc/shadow  #去除不可变属性

    umask

    目录的最高权限0777(前面的0表示三种特殊权限,默认都为0)

    文件的最高权限666(并不是每个文件都具备执行属性,所以默认不给X属性,所以为666)

    普通用户的umask默认为0002、root用户umask默认为0022

    普通用户创建目录/文件的默认权限为:777-002=775/666-002=664

    root用户创建目录/文件的默认权限为:777-022=755/666-022=644

    所以要根据公司需要去修改相应的umask值

    vim /etc/profile
    vim /etc/bashrc

    修改用户密码最长有效期(进入文件后第25行)

    vim /etc/login.defs

    十三、定时任务调度

    1、crontab进行定时任务的设置

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

    任务调度分类:

    系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等

    个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。

    基本语法
    crontab [选项]
    常用选项
    -e:编辑crontab定时任务
    -l:查询crontab任务
    -r:删除当前用户所有的crontab任务
    service crond restart    #重启任务调度

    crontab -e之后输入

    */1 * * * * ls -l /etc/ > /tmp/case.txt

    参数细节说明

    #5个占位符的说明项目
    第一个*:一小时当中的第几分钟,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分钟就执行一遍命令

    时间执行案例

    #应用实例
    案例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中
    */1 * * * * date >> /tmp/mydate
    案例2:每隔1分钟,将当前日期和日历都追加到/home/mycal 文件中
    步骤:
    ①vim /home/my.sh 写入内容
    date >> home/mycal
    cal >> /home/mycal
    ②给my.sh增加执行权限
    chmod u+x /home/my.sh
    ③crontab -e增加 */1 * * * * /home/my.sh
    案例3:每天凌晨2:00将mysql数据库testdb ,备份到文件中。
    提示:指令为mysqldump -u root -p密码 数据库>home/db.bak
    步骤①crontab -e
    步骤② 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak

    2、at定时任务

    ①at命令是一次性定时计划任务,at 的守护进程atd会以后台模式检查作业队列来运行

    ②默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

    ③at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了

    ④在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看

    ps -ef l grep atd    #可以检测atd是否在运行
    #at命令格式
    at [选项] [时间]
    输出两次Ctrl+D结束at命令的输入

    at指定时间的方法

    (1)接受在当天的hh:mm(小时:分钟)式的时间指定。

    假如该时间已过去,那么就放在第二天执行。例如:04:00

    (2)使用midnight((深夜),noon (中午),teatime〈饮茶时间,一般是下午4点)等比较模糊的词语来指定时间

    (3)采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm

    (4)指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 03//01/2021

    (5)使用相对计时法,指定格式为: now + count time-units,now就是当前时间,time-units 是时间单位,这里能够是minutes(分钟) 、hous(小时)、days (天)、weeks (星期)

    count是时间的数量,几天,几小时。例如: now + 5 minutes

    (6)直接使用 today(今天)、tomorrow(明天〉来指定完成命令的时间

    atq    #查看系统中没有执行的工作任务
    atrm 编号    #删除已经设置的定时任务 
    #案例1:2天后的下午5点执行bin/ls /home
    <<root@HK9527 ~>># at 5pm + 2 days
    at> /bin/ls /home<EOT>
    job 3 at Mon Oct 25 17:00:00 2021
    #案例2:明天17点钟,输出时间到/root/date.txtg内
    <<root@HK9527 ~>># at 17:00 tomorrow 
    at> date > /root/date.txt<EOT>
    job 4 at Sun Oct 24 17:00:00 2021
    #案例3:2分钟后,输出时间到/root/date2.txt内
    <<root@HK9527 ~>># at now + 2 minutes
    at> date > /root/date2.txt<EOT>
    job 5 at Sat Oct 23 22:34:00 2021
    #案例4:2分钟后,执行/root/my.sh脚本
    <<root@HK9527 ~>># at now + 2 minutes
    at> /root/my.sh<EOT>
    job 5 at Sat Oct 23 22:34:00 2021
    前提是用户对my.sh具有执行权限

    十四、磁盘分区与挂载

    1、概念详解

    对Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。

    Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得。

    硬盘说明

    1) Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI 硬盘

    2)对于IDE硬盘,驱动器标识符为“hdx~",其中nd"表明分区所在设备的类型,这里是指IDE硬盘了。

    "x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。

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

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

    lsblk        #查看所有设备挂载情况
    lsblk -f     #查看所有设备挂载情况详细信息

    2、挂载案例

    增加一块磁盘的步骤

    ①虚拟机添加硬盘

    虚拟机设置---添加---磁盘

    ②分区

    fdisk /dev/sdb  #分区命令
    开始对/sdb 分区
    m:显示命令列表
    p:显示磁盘分区同 fdisk- l
    n:新增分区
    d:删除分区
    w:写入并退出
    #说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区,输入分区号(只是一个分区号,不是分区的数量,如果想要创建两个分区,那就输入两次n)
    #然后两次回车默认剩余全部空间,最后输入w写入分区并退出,若不保存退出输入q

    ③格式化

    mkfs -t ext4 /dev/sdb1    #格式化磁盘,其中ext4是分区类型

    ④挂载

    #挂载:将一个分区与一个目录联系起来,
    mount 设备名称 挂载目录
    例如: mount /dev/sdb1/ newdisk
    #取消挂载
    umount 设备名称或者挂载目录
    例如: umount /dev/sdb1 或者 umount /newdisk
    注意:用命令行挂载,重启后会失效

    ⑤设置可以自动挂载

    vim /etc/fstab    #永久挂载:通过修改/etc/fstab实现挂载
    添加完成后执行mount-a即刻生效,重启后挂载点不消失

    注意:目录与磁盘挂载之后,往目录里写的东西是写到了磁盘里,重启之后挂在消失,之前的目录里是没有东西的,东西都在磁盘里。

    3、磁盘情况查询

    df -h    #查询系统整体磁盘使用情况

    目录磁盘情况查询

    du -h    #查询指定目录的磁盘占用情况,默认为当前目录
    -s:指定目录占用大小汇总
    -h:带计量单位
    -a:含文件
    --max-depth=1:子目录深度
    -c:列出明细的同时,增加汇总值
    应用实例
    查询/opt目录的磁盘占用情况,深度为1
    #du -hac --max-depth=1 /opt

    磁盘统计指令

    #统计 /opt 文件夹下文件的个数
    ls -l /opt | grep "^-" | wc -l
    #统计 /opt 文件夹下目录的个数
    ls -l /opt | grep "^d" | wc -l
    #统计 /opt 文件夹下文件的个数,包括子文件夹里的
    ls -lR /opt | grep "^-" | wc -l
    #统计 /opt 文件夹下目录的个数,包括子文件夹里的
    ls -lR /opt | grep "^d" | wc -l
    #以树状显示目录结构 tree目录,注意:如果没有tree ,则使用yum install tree安装
    tree /home

    十五、网络配置

    1、NAT网络配置

     查看网络ip和网关

    编辑---虚拟网络编辑器---更改设置,即可查看

     配置网络信息

    vim /etclsysconfig/network-scripts/ifcfg-ens33
    ifcfg-ens33文件说明
    DEVICE=eth0         #接口名(设备,网卡)
    HWADDR=00:0C:2X:6X:OX:XX    #MAC地址
    TYPE=Ethernet       #网络类型(通常是Ethemet)
    UUID=926a57ba-92c6-423 1-bacb-f27e5e6a9f44#随机id
    ONBOOT-yes          #系统启动的时候网络接口是否有效((yes/no)
    BOOTPROTO=static    #IP的配置方法none、static、bootp、dhcp(引导时不使用协议、静态分配IP、BOOTP协议、DHCP协议)
    IPADDR=192.168.80.128     #IP地址
    NETMASK=255.255.255.0     #子网掩码
    GATEWAY=192.168.80.2      #网关
    DNS1=114.114.114.114      #DNS解析地址

    配置完成之后重启network服务

    service network restart

    2、设置主机名和hosts映射

    设置主机名

    为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名

    hostname            #查看主机名
    vim /etc/hostname   #指定主机名

    修改后,重启生效

    设置hosts映射

    设置hosts映射可以通过主机名找到(比如 ping)某个linux系统

    #windows
    在C:WindowsSystem32driversetchosts文件指定即可
    案例: 192.168.200.130 HK9527
    #linux
    在 /etc/hosts 文件指定
    案例:vim /etc/hosts
    添加 192.168.8.100 Thinkpad

    3、主机名解析过程分析

    Hosts是什么

    一个文本文件,用来记录IP和Hostname(主机名)的映射关系

    DNS,就是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库

    应用实例:用户在浏览器输入了www.baidu.com

    ①浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用这个IP完成解析;如果没有,就检查DNS解析缓存,如果有直接返回IP完成解析

    这两个缓存,可以理解为本地解析器缓存

    ②一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录)

    如在 cmd窗口中输入
    ipconfig /displaydns     #DNS域名解析缓存
    ipconfig /flushdns       #手动清理dns缓存

    ③如果本地解析器缓存没有找到对应映射,就回去检查系统中 hosts 文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回

    ④如果/本地DNS解析缓存和 hosts文件中均没有找到对应的IP,则到域名服务DNS进行解析

    十六、修改命令行终端样式

    修改linux终端命令行样式,可以通过定义PS1环境变量实现

    PS1是Linux终端用户的一个环境变量,用来定义命令行提示符的参数。

    ①在终端输入命令

    [root@CentOS-7 ~]# echo $PS1
    可以得到PS1当前值:  [u@h W]$

    PS1的常用参数以及含义

    d :代表日期,格式为weekday month date,例如:"Mon Aug 1"

    H :完整的主机名称

    h :仅取主机名中的第一个名字

    :显示时间为24小时格式,如:HH:MM:SS

    T :显示时间为12小时格式

    A :显示时间为24小时格式:HH:MM

    u :当前用户的账号名称

    v :BASH的版本信息

    w :完整的工作目录名称

    W :利用basename取得工作目录名称,只显示最后一个目录名

    # :下达的第几个命令

    $ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $

    所以linux默认的命令行提示信息的格式PS1=    '[u@h W]$ '    的意思就是:[当前用户的账号名称@主机名的第一个名字 工作目录的最后一层目录名]#

    ②颜色设置参数

    在PS1中设置字符颜色的格式为:[e[F;Bm]........[e[0m],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47,[e[0m]作为颜色设定的结束。

    颜色对照表:

    F  B

    30 40 黑色

    31 41 红色

    32 42 绿色

    33 43 黄色

    34 44 蓝色

    35 45 紫红色

    36 46 青蓝色

    37 47 白色

    只需将对应数字套入设置格式中即可

    比如要设置命令行的格式为绿字黑底([e[32;40m]),显示当前用户的账号名称(u)、主机的第一个名字(h)、当前工作目录最后一个名称(W),可以直接在命令行键入如下命令:

    ③修改.bashrc文件,永久保存命令行样式

    上面的设置的作用域只有当前终端的登陆有效,关闭终端或退出登录即刻失效

    要想永久性的保存设置,需要修改.bashrc配置文件

    cd
    vi .bashrc
        加入这一行:PS1='[e[36;40m]<<u@h W>>[e[0m]$ '
        保存退出
    source .bashrc  #重新加载bash配置文件

    十七、进程管理

    1、基本介绍

    在linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)

    每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。

    后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

    一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

    2、ps -aux

    显示系统执行的进程

    ps      #用来查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何参数
    ps-a    #显示当前终端的所有进程信息
    ps-u    #以用户的格式显示进程信息
    ps-x    #显示后台进程运行的参数

    USER:用户名称

    PID:进程号

    %CPU:进程占用CPU的百分比

    %MEM:进程占用物理内存的百分比

    VSZ:进程占用的虚拟内存大小(单位:KB)

    RSS:进程占用的物理内存大小(单位:KB)

    TTY:终端名称,缩写

    STAT:进程状态,其中S=睡眠,s=表示该进程是会话的先导进程,N=表示进程拥有比普通优先级更低的优先级,R=正在运行,D=短期等待,Z=僵死进程,T=被跟踪或者被停止等

    STARTED:进程的启动时间

    TIME:CPU时间,即进程使用CPU的总时间

    COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

    3、ps -ef

    ps -ef    #以全格式显示当前所有的进程
    -e显示所有进程
    -f全格式
    案例:查看sshd 的父进程信息
    ps -ef | grep sshd

    UID:用户ID

    PID:进程ID

    PPID:父进程ID

    C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

    STIME:进程启动的时间

    TTY:完整的终端名称

    TME:CPU时间

    CMD:启动进程所用的命令和参数

    Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps -aux。两者没太大差别,是两种风格而已
    System V风格和BSD 风格,ps -aux最初用到System V风格,而ps -ef被用在BSD风格中,两者输出略有不同
    现在的大部分Linux系统都是可以同时使用这两种方式的

    4、终止进程kill、killall

    若是某个进程执行一半需要停止时,或是己消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。

    kill [选项] 进程号    #功能描述:通过进程号杀死/终止进程
    killall 进程名称      #功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
    常用选项
    -9:表示强迫进程立即停止
    案例1:踢掉某个非法登录用户
    ps -ef | grep sshd      #查看非法登录用户进程ID
    kill 11196              #kill进程号
    案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务
    ps -ef | grep sshd      #查看非法登录用户进程ID
    kill sshd对应的进程号
    systemctl start sshd.service    #重启sshd服务
    案例3:终止多个gedit
    killall gedit
    案例4:强制杀掉一个终端
    ps -ef | grep bash       #查看终端对应的进程ID
    kill -9 bash对应的进程号

    5、查看进程树pstree

    基本语法
    pstree [选项]    #可以更加直观的来看进程信息
    常用选项
    -p:显示进程的PID
    -u:显示进程的所属用户
    应用实例
    案例1:请以树状的形式显示进程的pid
    pstreep -p
    案例2:请以树状的形式进程的用户
    pstree -u

    十八、服务管理

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

    1、service管理指令

    service 服务名 [start | stop | restart | reload | status]
    #在CentOS7.0后很多服务不再使用service ,而是 systemctl
    service指令管理的服务在 /etc/init.d 查看

    案例:使用service指令,查看,关闭,启动network
    service network status
    service network stop
    service network start

    查看全部服务名

    setup
    系统服务

    上图中带 * 的为开机会自启动的,选中服务后点击空格可以变换状态,Tab键可以推出此界面

    /etc/init.d看到service 指令管理的服务
    ls -l /etc/init.d

    2、chkconfig指令

    通过chkconfig命令可以给某个服务在各个运行级别设置自启动/关闭

    chkconfig指令管理的服务在/etc/init.d查看

    注意: Centos7.0后,很多服务使用systemctl管理

    chkconfig的基本语法
    chkconfig --list [| grep xxx]     #查看服务
    chkconfig 服务名 --list            #查看此服务的开关状态
    chkconfig--level 5 服务名 on/off   #为此服务在运行级别上设置开关
    案例演示
    对network 服务﹐进行各种操作,把network在3运行级别关闭自启动
    chkconfig --level 3 network off
    chkconfig --level 3 network on
    使用细节
    chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效

    3、systemcrl管理指令

    基本语法
    systemctl [start | stop | restart | status] 服务名
    
    systemctl指令管理的服务在 /usr/liblsystemd/system 查看
    #ls -l /usr/lib/systemd/system

    systemctl设置服务的自启动状态

    systemctl list-unit-files [ l grep 服务名]    #查看服务开机启动状态, grep可以进行过滤
    systemctl enable 服务名        #设置服务开机启动
    systemctl disable 服务名       #关闭服务开机启动
    systemctl is-enabled 服务名    #查询某个服务是否是自启动的
    #应用案例
    查看当前防火墙的状况,关闭防火墙和重启防火墙
    systemctl status firewalld
    systemctl stop firewalld
    systemctl start firewalld

    如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable | disable ] 服务名

    打开或者关闭指定端口

    在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯

    这时,需要打开指定的端口,比如80、22、8080等,需要用到firewall指令

    打开端口:firewall-cmd --permanent --add-port=端口号/协议
    关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
    重新载入,才能生效:firewall-cmd --reload
    查询端口是否开放:firewall-cmd --query-port一端口/协议
    应用案例:
    1)启用防火墙,测试111端口是否能telnet
    #不行
    2)开放111端口
    #firewall-cmd --permanent --add-port=111/tcp
    #firewall-cmd --reload     #需要重新载入才能生效
    3)再次关闭111端口
    firewall-cmd --permanent --remove-port=111/tcp
    firewall-cmd --reload      #需要重新载入才能生效

    4、动态监控进程

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

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

    #基本语法
    top [选项]
    #常用选项
    -d:秒数,指定top命令每隔几秒更新,默认是3秒
    -i:使top不显示任何闲置或者僵死进程
    -p:通过指定监控进程ID来仅仅监控某个进程的状态。
    #交互操作
    P:以CPU使用率排序,默认就是此项
    M:以内存的使用率排序
    N:以PID排序
    q:退出top
    #P、M、N都是大写,q是小写

    top - 09:42:47        #系统时间
    up 9 min              #运行时间
    2 users               #当前登录用户
    
    load average: 0.00,0.01,0.02   
    #负载均衡,后面的三个数分别是1分钟、5分钟、15分钟的负载情况,load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。
    #如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
    
    Tasks: 173 total         #总进程:173 total
    1 running                #正在运行的进程数
    172 sleeping             #休眠的进程数
    0 stopped                #停止的进程数
    0 zombie                 #僵尸进程数
    Cpu(s):                  #Cpu状态信息
    0.0 us                   #user space用户空间占用CPU的百分比
    0.0 sy                   #sysctl内核空间占用CPU的百分比
    0.0 ni                   #改变过优先级的进程占用CPU的百分比
    100.0 id                 #idolt空闲CPU百分比
    0.0 wa                   #wait等待占用CPU的百分比
    0.0 hi                   #Hardware IRQ硬中断占用CPU的百分比
    0.0 si                   #Software Interrupts软中断占用CPU的百分比
    0.0 st                   #虚拟机被hypervisor偷去的CPU时间
    
    KiB Mem : 4026376 total,3241300 free,353592 used,431484 buff/cache     #内存状态
    KiB Swap:2097148 total,2097148 free,0 used. 3391548 avail Mem    #swap交换分区信息
    used:使用中的内存总量,指的是现在系统内核控制的内存数
    free:空闲的内存总量,是内核还未纳入其管控范围的数量。
    这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器"危矣"。
    Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。
    第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。
    
    纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存
    内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
    对于内存监控,在top里我们要时刻监控第五行swap交换分区的used
    如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。 PID:进程ID,进程的唯一标识符 USER:进程所有者的实际用户名 PR:进程的调度优先级,这个字段的一些值是
    'rt',这意味这这些进程运行在实时态 NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR:SHR是进程使用的共享内存,共享内存大小,单位kb S:这个是进程的状态。它有以下不同的值: D - 不可中断的睡眠态。 R – 运行态 S – 睡眠态 T – 被跟踪或已停止 Z – 僵尸态 %CPU:自从上一次更新时到现在任务所使用的CPU时间百分比 %MEM:进程使用的可用物理内存百分比 TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒 COMMAND:运行进程所使用的命令,进程名称(命令名/命令行) #案例1:监视特定用户,比如我们监控tom用户 top:输入此命令,按回车键,查看执行的进程 u:然后输入"u"回车,再输入用户名,即可 #案例2:终止指定的进程,比如我们要结束tom登录 top:输入此命令,按回车键,查看执行的进程 k:然后输入"k"回车,再输入要结束的进程ID号 #案例3:指定系统状态更新的时间(每隔10秒自动更新),默认是3秒 top -d 10

    5、netstat查看网络情况

    可以看到哪些服务是处于监听状态,也可以看到有哪些连接到本机,要是发现有不知名的端口在监听,那就要小心木马等病毒危害

    基本语法
    netstat [选项] 选项说明
    -an:按一定顺序排列输出
    -p:显示哪个进程在调用
    应用案例
    请查看服务名为 sshd的服务的信息
    netstat -anp | grep sshd

     

    十九、rpm与yum软件安装

    1、rpm包相关

    rpm包在光盘文件中的package目录中

    rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件

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

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

    rpm-qa l grep xx    #查询已安装的rpm列表
    举例:看看当前系统,是否安装了firefox
    #rpm -qa | grep firefox

    rpm包名: firefox-60.2.2-1.el7.centos.x86_64

    名称:firefox

    版本号:60.2.2-1

    适用操作系统: el7.centos.x86_64表示centos7.x的64位系统

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

    rpm -qa    #查询所安装的所有rpm软件包
    rpm -qa | more
    rpm -qa | grep xxx
    
    rpm -q 软件包名    #查询软件包是否安装
    rpm -q firefox
    
    rpm-qi 软件包名    #查询软件包信息
    rpm -qi firefox
    
    rpm-ql 软件包名     #查询软件包中的文件
    rpm -ql firefox
    
    rpm -qf 文件全路径名查询文件所属的软件包
    rpm -qf /etc/passwd    #查看passwd这个文件是那个程序所属
    rpm -qf /etc/firefox     
    
    rpm -qpi tree-1.5.3-3.el6.x86_64.rpm     #确认该软件的作用
    rpm -qpl tree-1.5.3-3.el6.x86_64.rpm     ##确认该软件安装路径
    
    #卸载rpm包
    基本语法
    rpm -e RPM包的名称
    应用案例:删除firefox软件包
    rpm -e firefox
    细节讨论
    如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。
    如:$ ypm -e foo
    removing these packages would break dependencies:foo is needed by bar-1.0-1
    如果我们就是要删除foo这个rpm包,可以增加参数--nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行.

    安装rpm包

    安装rpm包
    基本语法
    rpm -ivh RPM包全路径名称
    参数说明
    i=install安装
    v=verbose提示
    h=hash进度条
    应用实例
    卸载和安装firefox浏览器
    #rpm -e firefox
    #rpm -ivh firefox

    2、yum源安装

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

    yum的基本指令
    yum list | grep xx    #查询yum服务器的软件列表是否有需要安装的软件
    安装指定的yum包
    yum install xxx       #下载安装
    yum应用实例:请使用yum的方式来安装firefox
    rpm -e firefox
    yum list | grep firefox
    yum install firefox

     更换yum源

    ①yum install wget -y    #首先安装wget
    
    ②mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup    #将系统原始配置文件失效
    
    ③wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo   
    #使用Wget获取centos6的阿里yum源配置文件 ③wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    #使用Wget获centos7的阿里yum源配置文件 ④yum clean all #清空以前yum源的缓存 ⑤yum makecache #获取阿里云的缓存

    二十、atime、mtime、ctime

    Linux里面一切皆文件,那我们可以知道文件状态的三个时间它们分别是 -atime、-ctime、-mtime

    关于时间的信息有三个:

    最近访问时间 access time (-atime)

    最近更改时间 modify time (-mtime)

    最近状态改动时间 change time(-ctime)

    当然我们也看到了创建时间那一项为空白,也就是说Linux系统下是无法查看文件的创建时间的

    atime  : 它代表着最近一次访问文件的时间,显示一个文件的内容或者运行一个shell脚本会更新文件的atime。可用ls -lu命令查看

    mtime : 它代表着最近一次文件内容被修改的时间。可用ls -l 命令查看

    ctime  : 它代表着最近一次文件状态改变的时间 ,是status change time,是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。可用ls -lc 命令查看

    我们既然可以查看当前的atime、mtime、ctime,那肯定也可以查看几天前或者几天之内被改过或者访问过的文件,Linux为我们提供了一个简便的查询方式,那就是 +n 和 -n

    下面以 -mtime 举例说明:

    -mtime n : n为数字,意思为在n天之前的“一天之内”被更改过内容的文件
    -mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名
    -mtime -n : 列出在n天之内(含n天本身)被更改过内容的文件名
    找 “5天之内被更改过的档案名” 就是   find / -mtime -5
    找 “5天前的那一天被更改过的档案名” 就是   find / -mtime 5
    找 “5天之前被更改过的档案名” 就是   find / -mtime +5

    下面用图来说明一下:

    右边为当前时,+5 代表大于等于 6 天前的档案名, -5 代表小于等于 5 天内的档案名,5 则是代表 5-6 那一天的档案名。

  • 相关阅读:
    python设计模式之命令模式
    [Shell] 生成日期列表
    [Python] Python 获取文件路径
    [Search] 倒排索引与bool检索
    [NLP] Reformer: The Efficient Transformer
    [Alg] 随机抽样完备算法-蓄水池算法 Reservoir Sampling
    [Chaos] 混沌数学学习资料
    [Alg] 文本匹配-多模匹配-WM算法
    [Alg]文本匹配-单模匹配-Sunday算法
    [Alg] 文本匹配-多模匹配-AC自动机
  • 原文地址:https://www.cnblogs.com/zrh918/p/15361802.html
Copyright © 2011-2022 走看看