Linux-centos7自我学习

文章目录

          • 功能组合键
          • linux命令
            • 命令执行的判断依据
            • 管道命令|(pipe)
            • 选取命令:cut、grep
            • 排序命令:sort、wc、uniq
            • 双向重定向:tee
            • dpkg的用法
            • 字符转换命令: tr、col、join、paste、expand
            • 划分命令:split
            • 参数代换:xargs
            • 关于减号 - 的用途
            • 帮助命令
            • job control的管理
            • 脱机管理问题
            • 进程的优先级(Priority)与CPU调度
            • 查看系统资源信息
          • 用户管理
          • 用户组管理
          • 权限管理
          • 文件目录类
          • 时间日期类
          • 搜索查找类
          • 压缩和解压类
            • zip/unzip
            • tar指令
          • Linux文件目录
          • 定时任务调度
            • at
            • crontab
            • anacron
          • 磁盘分区、挂载
          • 网络配置
          • 进程管理
            • ps(Process Status):用来查看目前系统中,有哪些进程正在执行,以及它们执行的情况
            • ps -l:仅查看自己的bash相关进程
            • ps aux:查看系统所有进程
            • 僵尸(zombie [ˈzɑːmbi] )进程
            • top:动态查看进程的变化
            • pstree:查看进程树
            • 服务(service)管理
            • 监控网络状态
          • RPM 与 YUM
            • yum常用命令
            • 配置国内yum源
          • APT软件管理
            • apt-get 更新源
          • 远程登录Ubuntu
          • 日志管理
            • 系统常用的日志
            • 日志管理服务 rsyslogd
          • 内核升级
          • vi/vim
            • 一般命令模式
            • 编辑模式
            • 命令行模式
            • vim多文件编辑
            • 多窗口功能

功能组合键

辅助我们进行命令的编写与程序的中断。

  • Tab按键

    具有命令补全与文件补齐的功能。重点是可以避免我们打错命令或文件名。

    Tab接在一串命令的第一个字段后面,则为命令补全;

    Tab接在一串命令的第二个字段后面,则为文件补齐。

  • Ctrl -c 按键

    中断目前程序的按键

  • Ctrl -d 按键

    代表:键盘输入结束(End Of File, EOF 或 End Of Input)的意思;

    也可以用来去掉exit的输入。例如你想直接离开命令行模式,可以直接按下ctrl + d 就能够直接离开(相当于输入exit)

linux命令
command   [-options]   parameter1   parameter2   ...
   命令		选项		参数(1)	参数(2)
   
命令之后的选项除了前面带减号[ - ]之外,某些特殊情况下,选项或参数前面也会带正号 [ + ]的情况。
  • 一行命令中第一个输入的部分绝对是命令(command)或可执行文件(例如shell脚本);
  • command为命令的名称;
  • 中括号[]并不存在于实际的命令中,表示是可选的,而加入选型设置时,通常选项前会带 - 号,例如 -h;有时候会使用选项的完整全名,则选项前带有 – 符号,例如 --help;
  • parameter1 parameter2 为依附在选项后面的参数,或是command的参数;
  • 命令、选项、参数等这几个东西中间以空格来区分,不论空几格shell都视为一格,所以空格是很重要的特殊字符;
  • 按下回车键后,该命令就立即执行,回车键代表着一行命令的开始启动。
  • 命令太长的时候,可以使用反斜杠(\)来转义回车键,使命令连续到下一行,注意,反斜杠后就立即接着特殊字符才能转义。
  • 在linux系统中,英文大小写字母是不一样的;
命令执行的判断依据
  • cmd; cmd(不考虑命令相关性的连续命令执行)
  • cmd1 &&(and) cmd2
    1. 若cmd1执行完毕且正确执行,则开始执行cmd2;
    2. 若cmd1执行完毕且为错误,则cmd2不执行;
  • cmd1 ||(or) cmd2
    1. 若cmd1执行完毕且正确执行,则cmd2不执行;
    2. 若cmd1执行完毕且为错误,则开始执行cmd2;
管道命令|(pipe)
  • 管道命令仅会处理标准输出,对于标准错误会予以忽略;
  • 管道命令必须要能够接受来自前一个命令的数据成为标准输入继续处理才行;
选取命令:cut、grep

将一段数据经过分析后,取出我们所想要的,或是经由分析关键词,取得我们所想要的那一行。

  • cut

    将一段信息的某一段给它切出来,处理的信息是以行为单位;

    cut主要的用途在于将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。

    将PATH变量取出,然后找出第五个路径:echo $PATH | cut -d ‘:’ -f 5

    将export输出的信息,取得第12字符以后的所有字符:export | cut -c 12-

  • grep

    grep是分析一行信息,若当中有我们所需要的信息,就将该行拿出来;

排序命令:sort、wc、uniq
  • sort

    可以根据不同的数据形式来排序;

    /etc/passwd 内容是以:来分隔的,以第三栏来排序:cat /etc/passwd | sort -t ‘:’ -k 3

  • wc

    可以计算输出信息的整体数据;

    查询目前账号文件中有多少个账号:cat /etc/passwd | wc -l

  • uniq

    这个命令用来将重复的行删除掉只显示一个;

双向重定向:tee

tee会同时将数据流分送到文件与屏幕,而输出到屏幕的,其实是stdout;

ls -l /home | tee ~/homefile | more

dpkg的用法

dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。

1)安装软件

命令行:dpkg -i <.deb file name>

示例:dpkg -i avg71flm_r28-1_i386.deb

2)安装一个目录下面所有的软件包

命令行:dpkg -R

示例:dpkg -R /usr/local/src

3)释放软件包,但是不进行配置

命令行:dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录

示例:dpkg –unpack avg71flm_r28-1_i386.deb

4)重新配置和释放软件包

命令行:dpkg –configure package_file

如果和-a一起使用,将配置所有没有配置的软件包

示例:dpkg –configure avg71flm_r28-1_i386.deb

5)删除软件包(保留其配置信息)

命令行:dpkg -r

示例:dpkg -r avg71flm

6)替代软件包的信息

命令行:dpkg –update-avail

7)合并软件包信息

dpkg –merge-avail

8)从软件包里面读取软件的信息

命令行:dpkg -A package_file

9)删除一个包(包括配置信息)

命令行:dpkg -P

10)丢失所有的Uninstall的软件包信息

命令行:dpkg –forget-old-unavail

11)删除软件包的Avaliable信息

命令行:dpkg –clear-avail

12)查找只有部分安装的软件包信息

命令行:dpkg -C

13)比较同一个包的不同版本之间的差别

命令行:dpkg –compare-versions ver1 op ver2

14)显示帮助信息

命令行:dpkg –help

15)显示dpkg的Licence

命令行:dpkg –licence (or) dpkg –license

16)显示dpkg的版本号

命令行:dpkg –version

17)建立一个deb文件

命令行:dpkg -b direc×y [filename]

18)显示一个Deb文件的目录

命令行:dpkg -c filename

19)显示一个Deb的说明

命令行:dpkg -I filename [control-file]

20)搜索Deb包

命令行:dpkg -l package-name-pattern

示例:dpkg -I vim

21)显示所有已经安装的Deb包,同时显示版本号以及简短说明

命令行:dpkg -l

22)报告指定包的状态信息

命令行:dpkg -s package-name

示例:dpkg -s ssh

23)显示一个包安装到系统里面的文件目录信息

命令行:dpkg -L package-Name

示例:dpkg -L apache2

24)搜索指定包里面的文件(模糊查询)

命令行:dpkg -S filename-search-pattern

25)显示包的具体信息

命令行:dpkg -p package-name

示例:dpkg -p cacti

字符转换命令: tr、col、join、paste、expand
  • tr

    tr可以用来删除一段信息当中的文字,或是进行文字信息的替换;

    将last输出的信息中,所有的小写变成大写字符:last | tr ‘[a-z]’ ‘[A-Z]’

  • col

    将tab键转换成对等的空格键:col -x

  • join

    处理两个文件之间的数据(两个文件中,有相同数据的那一行,才将它加在一起)

  • paste

    直接将两行贴在一起,且中间以tab键隔开;

  • expand

    将tab案件转成空格键;

划分命令:split

将一个大文件,依据文件大小或行数来划分,可以将大文件划分成为小文件;

参数代换:xargs

要使用xargs的原因是,很多命令其实并不支持管道命令,因此可以通过xargs来提供该命令使用标准输入;

关于减号 - 的用途

在管道命令当中,常常会使用到前一个命令的stdout作为这次的stdin,某些命令需要用到文件名来进行处理时,该stdin与stdout可以利用减号“-”来替代

帮助命令
  • –help:几乎Linux上面的命令,在开发的时候,开发者就将可以使用的命令语法与参数写入命令操作过程中。只要使用–help就能够将命令的用法作一个大致的理解。
  • man
  • ctrl + alt +F1-F6: 命令行模式登陆tty1-tty6终端
  • 正常关机的命令:
    • 将数据同步写入硬盘中的命令:sync
    • 常用的关机命令:shutdown
    • 重新启动,关机:reboot, halt, poweroff
job control的管理
  • 直接将命令丢到后台中【执行】的 &

  • 将【目前】的任务丢到后台中【暂停】:[ctrl]-z

  • 查看目前的后台任务状态:jobs

    jobs [-lrs]
    选项与参数:
    -l :除了列出job number与命令串之外,同时列出PID的号码;
    -r :仅列出正在后台run的任务;
    -s :仅列出正在后台当中暂停(stop)的任务
    
  • 将后台任务拿到前台处理:fg(foreground)

    fg %jobnumber
    fg: 默认取出那个+的任务
    
  • 让任务在后台下的状态变成运行中:bg

    bg %jobnumber
    
  • 管理后台当中的任务:kill

    kill -signal %jobnumber
    signal :代表给予后面接的那个任务什么样的指示
    	-l(L的小写):重新读取一次参数的配置文件(类似reload);
    	-2:代表由键盘输入ctrl-c同样的操作;
    	-9:立刻强制删除一个任务;
    	-15:以正常的进程方式终止一项任务,与-9是不一样的
    
脱机管理问题

nohup:可以在退机或注销系统后,该能够让任务继续执行

nohup [命令或参数] :在终端前台中任务

nohup [命令或参数] &:在终端后台中任务

进程的优先级(Priority)与CPU调度

Linux给予进程一个所谓的【优先级(priority, PRI)】,这个PRI值越低代表越优先的意思。不过这个PRI值是由内核动态调整的,用户无法直接调整PRI值。如果要调整进程的优先级,就要通过nice(NI)值。

  • nice值可调整的范围-20 ~ 19;
  • root可随意调整自己或他人进程的nice值,且范围为-20 ~ 19;
  • 一般用户仅可调整自己进程的nice值,且范围仅为0-19(避免一般用户抢占系统资源);
  • 一般用户仅可将nice值越调越高
  • 如何调整该进程的nice值?

    • 一开始执行进程就立即给予一个特定的nice值:用nice命令;

      nice [-n 数字] command
      -n:后面接一个数值,数值的范围-20 - 19;
      
    • 调整某个已经存在的PID的nice值:用renice命令;

      renice [number] PID
      
查看系统资源信息
  • free:查看内存使用情况

    # 显示目前系统的内存容量
    free -m
    
  • uname:查看系统与内核相关信息

  • uptime:查看系统启动时间与任务负载

  • netstat:追踪网络或socket文件

  • dmesg:分析内核产生的信息

  • vmstat:检测系统资源变化

用户管理
  • 添加用户

    useradd 用户名 (当创建用户成功后,会自动的创建和用户同名的家目录)
    useradd -d 指定目录 用户名 (给新创建的用户指定家目录,d:directory)
    useradd -g 用户组 用户名 (增加用户时直接加上组,g:group)
    
  • 修改密码

    passwd 用户名
    
  • 删除用户

    userdel 用户名 (但保留其用户的家目录)
    userdel -r 用户名 (删除用户以及用户的主目录)
    
  • 查询用户信息指令

    id 用户名
    
  • 切换用户

    su - 用户名
    switch user
    
  • 退出当前用户

    exit/logout
    
  • 查看当前用户

    whoami/ who am i
    
用户组管理
  • 新增组

    groupadd 组名
    
  • 删除组

    groupdel 组名
    
  • 修改用户的组

    usermod -g 用户组 用户名
    usermod -d 目录名 用户名 (改变该用户登录的初始目录)
    
  • 用户和组相关文件

    • /etc/passwd 文件

      用户(user)的配置文件,记录用户的各种信息
      每行的含义: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
                     1  :  2 :      3   :    4   :      5   :   6  :     7
      
    • /etc/shadow 文件

      口令的配置文件
      每行的含义(9列):登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
      
    • /etc/group 文件

      组(group)的配置文件,记录Linux包含的组的信息
      每行的含义:组名:口令:组标识号:组内用户列表
      
权限管理
  • 查看文件的所有者:ls -al / ll

    ls -l --time=ctime/atime: 读取状态时间和读取时间;ls默认显示出来的是该文件的mtime.

    • 修改时间(modification time, mtime)

      当该文件的内容数据变更时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性或权限。

    • 状态时间(status time, ctime)

      当该文件的状态改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间

    • 读取时间(access time, atime)

      当该文件的内容被读取时,就会更新这个读取时间,举例来说,我们使用cat去读取时,就会更新该文件的atime

  • chmod:修改文件或者目录的权限

    • 第一种方式:+、-、=变更权限(+是增加相应的权限,-是删除对应的权限)

      u:所有者 g:所有者 o:其他人 a:所有人(u、g、o的总和)

      1. chmod u=rwx,g=rx,o=x 文件/目录名
      2. chmod o+w 文件/目录名
      3. chmod a-x 文件/目录名
    • 第二种方式:通过数字变更权限

      r=4 w=2 x=1 rwx=4+2+1=7

      chmod u=rwx,g=rx,o=x 文件/目录名

      相当于:chmod 751 文件/目录名

  • chown:修改文件所有者

    改变所有者:chown newowner 文件/目录名
    改变所有者和所在组:chown newowner:newgroup 文件/目录名
    -R:如果是目录,则使其下所有子文件或目录递归生效
    
  • chgrp:修改文件/目录所在组

    chgrp newgroup 文件/目录名
    
文件目录类
  • pwd(print working directory):显示当前工作目录的绝对路径

  • ls(list):显示当前目录下的文件内容

    • -a:显示当前目录所有的文件和目录,包括隐藏的
    • -l:以列表的方式显示信息
  • tree:以树状显示目录结构

  • cd(change directory):切换目录

  • mkdir(make directory):创建文件夹

    • -p:创建多级目录
  • rmdir(remove directory):删除空文件夹

    • rmdir -rf 要删除的目录(删除非空目录,-r:递归删除整个文件夹)
  • touch:创建空文件

  • cp(copy):拷贝文件到指定目录

    cp [选项] source dest
    -r :递归复制整个文件夹
    强制覆盖不提示的方法:\cp
    \cp -r /home/bbb /opt
    
  • rm(remove):移除文件或目录

    • -r:递归删除整个文件夹
    • -f:强制删除不提示
  • mv(move):移动文件与目录或重命名

  • cat:查看文件内容

    • -n:显示行号
  • more:基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

操作 功能说明
space 向下翻一页
Enter 向下翻一行
q 立刻离开more
page up 向上滚动一屏
page down 向下滚动一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
  • less:用来分屏查看文件内容
操作 功能说明
space 向下翻动一页
Enter 向下翻动一行
[page up] 向上翻动一页
[page down] 向下翻动一页
Home 回到行首
End 回到行尾
/子串 向下搜寻[字幕]的功能;n:向下查找;N:向上查找;
?子串 向上搜寻[字幕]的功能;n:向上查找;N:向下查找;
q 离开less;
  • echo:输出内容到控制台

    echo $PATH(输出环境变量)
    
  • head:显示文件的开头部分内容,默认情况下head指令显示文件的钱10行内容

    • -n:显示行数
  • tail:输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容

    • tail 文件 :查看文件尾10行内容
    • tail -n 5:查看文件尾5行内容
    • tail -f 文件:实时追踪该文档的所有更新
  • 重定向:>指令和>>指令

    Shell会自动为我们打开和关闭0、1、2这三个文件描述符,我们不需要显式地打开或关闭它们。标准输入是命令的输入,默认指向键盘;标准输出是命令的输出,默认指向屏幕;标准错误是命令错误信息的输出,默认指向屏幕。

    如果没有显式地进行重定向,命令通过文件描述符0从屏幕读取输入,通过文件描述符1和2将输出和错误信息输出到屏幕。但如果我们想从其他文件(再次强调,I/O设备在Unix/Linux中也是文件)读取输入或产生输出,就需要对0、1、2使用重定向了。

    其语法如下:
    command < filename                         把标准输入重定向到filename文件中
    command 0< filename                       把标准输入重定向到filename文件中
    
    command > filename                         把标准输出重定向到filename文件中(覆盖)
    command 1> fielname                       把标准输出重定向到filename文件中(覆盖)
    
    command >> filename                       把标准输出重定向到filename文件中(追加)
    command 1>> filename                     把标准输出重定向到filename文件中(追加)
    
    command 2> filename                       把标准错误重定向到filename文件中(覆盖)
    command 2>> filename                     把标准输出重定向到filename文件中(追加)
    
    command > filename 2>&1               把标准输出和标准错误一起重定向到filename文件中(覆盖)
    command >> filename 2>&1             把标准输出和标准错误一起重定向到filename文件中(追加)
    
    command < filename >filename2        把标准输入重定向到filename文件中,把标准输出重定向到filename2文件中
    command 0< filename 1> filename2   把标准输入重定向到filename文件中,把标准输出重定向到filename2文件中
    
    重定向的使用有如下规律:
    1)标准输入0、输出1、错误2需要分别重定向,一个重定向只能改变它们中的一个。
    2)标准输入0和标准输出1可以省略。(当其出现重定向符号左侧时)
    3)文件描述符在重定向符号左侧时直接写即可,在右侧时前面加&。
    4)文件描述符与重定向符号之间不能有空格!
    
    >输出重定向和>>追加
    1  :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
    2  :表示stderr标准错误
    &  :表示等同于的意思,2>&1,表示2的输出重定向等同于1
    
    1 > /dev/null 2>&1 语句含义:
    1 > /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
    2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
    
  • ln:软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

    ln -s [源文件或目录] [软链接名]
    给原文件创建一个软链接
    案例:在/home目录下创建一个软连接myroot,连接到/root目录
    ln -s /root /home/myroot
    
  • history:查看已经执行过的历史命令

    history n
    
时间日期类
  • date:显示当前日期

    • date -s 字符串时间
    设置系统当前时间:
    date -s "2022-08-18 11:30:00"
    
  • cal(calendar ) + 年份:查看日历

  • bc:计算器

搜索查找类
  • find:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

    find [搜索范围] [选项]
    案例:按文件名,根据名称查找/home目录下的hello.txt文件
    find /home -name hello.txt
    
    :选项 :功能
    -name<查询方式> 按照指定的文件名查找模式查找文件
    -user<用户名> 查找属于指定用户名所有文件
    -size<文件大小> 按照指定的文件大小查找文件
  • locate:可以快速完成定位文件路径。

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

    locate指令无需遍历整个文件系统,查询速度较快。

    由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

  • which:查看某个指令在哪个目录下

  • whereis: 只找系统中某些特定目录下面的文件而已

  • grep指令和管道符号|

    grep:过滤查找

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

  • df(disk free): 列出文件系统的整体磁盘使用量;

  • du(disk usage): 查看文件系统的磁盘使用量(常用在查看目录所占磁盘空间);

  • lsblk(list block device): 列出系统上的所有磁盘列表;

压缩和解压类
zip/unzip
  • zip [选项] xxx.zip 要压缩的文件或文件夹
    • -r:递归压缩
  • unzip [选项] xxx.zip
    • -d<目录>:指定解压后文件的存放目录
tar指令
tar [选项] xxx.tar.gz 打包的内容

案例:
压缩多个文件,将/home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz
tar -zcvf pa.tar.gz /home/pig.txt /home/cat.txt

将pc.tar.gz 解压到当前目录
tar -zxvf pc.tar.gz
:选项 :功能
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解压.tar文件
Linux文件目录
  1. /bin

    系统有很多存放执行文件的目录;

  2. /boot

    主要放置启动会使用到的文件,包括Linux内核文件以及启动选项与启动所需配置文件等。

  3. /dev(device)

    在Linux系统上,任何设备与接口设备都是以文件的形式存在于这个目录中。只要通过读写这个目录下面的某个文件,就等于读写某个设备。

  4. /etc

    系统主要的配置文件几乎都放置在这个目录内。

  5. /lib

    系统的函数库

  6. /media

    放置可删除的设备,包括软盘、光盘、DVD等设备都暂时挂载于此。

  7. /mnt(mount 攀登)

    挂载某些额外的设备

  8. /opt

    给第三方辅助软件放置的目录。

  9. /run

    放置系统启动后所产生的各项信息

  10. /sbin

    放置启动过程所需要的,里面包括启动、修复、还原系统所需要的命令。

  11. /srv

    srv可以视为service的缩写,是一些网络服务启动之后,这些服务所需要使用的数据目录。

  12. /tmp

    这是让一般用户或是正在执行的程序暂时放置文件的地方。

  13. /usr

    UNIX Software Resource的缩写,UNIX操作系统软件资源所放置的目录

    • /usr/bin/

      所有一般用户能够使用的命令都放在这里。使用链接文件的方式将/bin链接至此,即/usr/bin与/bin一模一样。

    • /usr/lib/

      与/lib功能相同,所以/lib就是链接到此目录中的。

    • /usr/local/

      系统管理员在本机安装自己下载的软件。

    • /usr/sbin/

      /sbin链接到此目录中

    • /usr/share/

      主要放置只读的数据文件,当然也包括共享文件。

    • /usr/games/

      与游戏比较相关的数据放置处

    • /usr/include/

      c/c++等程序语言的头文件(head)与包含文件(include)放置处,当我们以Tarball(*.tar.gz)方式安装某些程序时,会使用到里面的许多文件。

    • /usr/libexec

      放置某些不被一般用户常用的执行文件或脚本等。

    • /usr/lib/

      /lib链接到此目录

    • /usr/src/

      一般源代码建议放置到这里,src有source的意思。至于内核源代码则建议放置到/usr/src/Linux/目录下

  14. /var(variable)

    主要放置变动性的数据,包括缓存(cache)、日志文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file、run file),例如MySQL数据库的文件等。

    • /var/cache/

      应用程序本身运行过程中会产生的一些缓存。

    • /var/lib/

      程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。

    • /var/lock/

      某些设备或是文件资源一次只能被一个应用程序所使用,如果同时又两个程序使用该设备时,就可能产生一些错误的状况,因此就得要该设备上锁,以确保该设备只会给单一软件使用。

    • /var/log/

      这是日志文件放置的目录。

    • /var/mail/

      放置个人电子邮箱的目录

    • /var/run/

      某些程序或是服务启动后,会将他们的PID放置在这个目录下。

    • /var/spool

      这个目录通常放置一些队列数据,所谓的队列就是排队等待其他程序使用的数据,这些数据被使用后通常都会被删除。

  15. /home

    系统默认的洪湖家目录

  16. /root

    系统管理员的家目录

  17. /lost+found

    这个目录是使用标准的ext2, ext3, ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下。

  18. /proc

    这个目录本身是一个虚拟文件系统,它放置的数据都是在内存当中,例如系统内核、进程信息、外接设备的状态及网络转台等。本身不占据任何硬盘空间。

  19. /sys

    也是一个虚拟的文件系统,主要也是记录内核与系统硬件信息相关的内容。不占据硬盘空间。

定时任务调度
at

at是个可以处理仅执行一次就结束的命令,要执行at,必须有atd这个服务。

使用at这个命令来产生所要运行的任务,并将这个任务一文本文件的方式写入/var/spool/at/目录中,该任务便能等待atd这个服务的使用与执行了。

  • 重新启动atd服务:systemctl restart atd

  • 让atd服务开机就自动启动:systemctl enable atd

  • 查看atd目前的状态:systemctl status atd

  • 为了安全,可以利用/etc/at.allow与/etc/at.deny这两个文件来实现对at的使用限制,at的工作情况如下:

    1. 先找寻/etc/at.allow这个文件,写在这个文件中的用户才能使用at,没有在这个文件中的用户则不能使用at(即使没有卸载at.deny)中;
    2. 如果/etc/at.allow不存在,就查找/etc/at.deny这个文件,写在这个at.deny中的用户则不能使用at,而没有在这个at.allow文件中的用户,就可以使用at;
    3. 如果两个文件都不存在,那么只有root可以使用at这个命令。
  • 实际运行单一计划任务

    at [-mldv] TIME

    再过五分钟:at now + 5 minutes

  • 脱机继续执行的任务:

    由于at计划任务的使用,系统会将该项at任务独立出你的bash环境,直接交给系统的atd程序来接管。因此,当你执行了at的任务之后就可以立刻脱机了,剩下的工作就完全交给Linux管理。

  • at常用命令:

    • atq:查询目前主机上面有多少的at计划任务
    • atrm 3: 将第三个任务删除
crontab

crontab这个命令所设置的任务将会循环地一直执行下去,可循环的时间为分钟、小时、每周、每月或每年等。

循环执行的计划任务是由cron(crond)这个系统服务来空值的;

crontab是Linux提供用户空值计划任务的命令;

crontab的执行可以通过:命令,或者编辑/etc/crontab;

让crontab可以生效的服务是crond。

  • 为了避免安全性问题,可以限制使用crontab的账号:

    • /etc/cron.allow

      将可以使用crontab的账号写入其中,不在这个文件内的用户则不可使用crontab

    • /etc/cron.deny

      将不可以使用crontab的账号写入其中,未记录到这个文件当中的用户,就可以使用crontab

  • crontab的语法

    crontab [-u username] [-l | -e | -r]

    -u : 只有root才能执行这个任务,亦即帮其他使用者建立/删除crontab计划任务;

    -e : 编辑crontab的任务内容;

    -l : 查看crontab的任务内容;

    -r : 删除所有的crontab的任务内容,若仅要删除一项,请用-e去编辑。

    重新启动crond服务:systemctl restart crond

    # 用charles的身份在每天的12:00发信给自己
     0  12 *  *  * mail -s "at 12:00" charles < /home/charles/.bashrc
    #分 时 日 月 周 |<=====================命令串====================>|
    
代表的意义 分钟 小时 日期 月份 命令
数字范围 0-59 0-23 1-31 1-12 0-7 需要执行的命令
特殊字符 代表意义
* 代表任何时刻都接受的意思
, 代表分隔时段的意思
- 代表一段时间范围内
/n 那个n代表数字,亦即是【每隔n单位间隔】的意思
  • 系统的配置文件:/etc/crontab 、/etc/cron.d/*

    1. 可以编辑/etc/crontab这个文件来执行【系统的例行性任务】;设置分为七栏,【分、时、日、月、周、执行者、命令】为其设置根据;
    2. crontab -e这个crontab其实是/usr/bin/crontab这个执行文件;分为六栏,【分、时、日、月、周、命令】为其设置根据;
    3. cron这个服务的最低检测限制是分钟,所以cron会每分钟去读取一次/etc/crontab与/var/spool/cron
  • crond服务读取配置文件的位置

    跟系统的运行有关系的两个配置文件是/etc/crontab文件以及/etc/cron.d/*目录内的文件;

    跟用户自己的任务有关系的配置文件,就是放在/var/spool/cron里面的文件;

    • /etc/crontab(是大家都能够读取的权限)
    • /etc/cron.d/*
    • /var/spool/cron/*
  • crontab的基本应用

    • 个人话的操作使用【crontab -e】
    • 系统维护管理使用【vim /etc/crontab】
    • 自己开发软件使用【vim /etc/cron.d/newfile】:如果你是想要自己开发软件,当然最好就是使用全新的配置文件,并且放置于/etc/cron.d/目录内即可。
    • 固定每小时、每日、每周执行的特别任务:如果与系统运维有关,还是建议放置到/etc/crontab中集中管理较好。
anacron

anacron是一个程序并非一个服务,配置文件放置在/etc/cron.hourly

anacron存在的目的是,用于处理非24小时运行的Linux系统所执行的crontab,以及因为某些原因导致的超过时间而没有被执行的任务。

其实anacron也是每小时被crond执行一次,然后anacron再去检测相关的计划任务有没有被执行,如果有超过期限的任务,就执行该任务,执行完毕或无须执行任何任务时,anacron就停止。

由于anacron默认会以一天、七天、一个月为期去检测系统未执行的crontab任务,因此对于某些特殊的使用环境非常有帮助。

anacron是怎么知道我们的系统啥时候关机的呢?这就要使用anacron读取的时间记录文件(timestamps)了。anacron会去分析现在的时间与时间记录文件所记载的上次执行anacron的时间,两者比较后发现有差异,那就是在某些时刻没有执行crontab,此时anacron就会开始执行未执行的crontab任务了。

  • anacron [-sfn] [-sfn] [job] …

  • anacron的配置文件/etc/anacrontab

  • 执行日志文件的轮询(logrotate)

    logrotate的任务:将日志文件数据移动,让旧的数据与新的数据分别存放,让系统更有效地记录登陆信息,提高文件的读写性能。

  • 日志文件分析logwatch的任务

    如果系统发生了软件问题、硬件错误、信息安全问题等,绝大部分的错误信息都会被记录到日志文件中。

    logwatch程序会主动分析登陆信息。

  • 建立locate的数据库

    文件名数据库放置在/var/lib/mlocate中;

    系统会主动地执行updatedb来更新数据库;

  • manpage查询数据库的建立

    要使用manpage数据库,就要执行mandb才能建立好;

  • RPM软件日志文件的建立

    RPM数据库,将文件名作排序的记录

  • 删除缓存

    系统通过计划任务执行名为tmpwatch的命令来删除缓存;

  • 与网络服务有关的分析操作

    如果你安装了类似网站服务器的软件,那么你的Linux系统通常就会主动地分析该软件的日志文件。

磁盘分区、挂载
  • lsblk(list block device) 或者 lsblk -f:查看所有设备挂载情况
  • df(disk free): 列出文件系统的整体磁盘使用量
    • -s 指定目录占用大小汇总
    • -h 带计量单位
    • -a 含文件
    • –max-depth=1 子目录深度
    • -c 列出明细的同时,增加汇总值
  • du(disk usage): 查看文件系统的磁盘使用量(常用在查看目录所占磁盘空间)
网络配置
  • ifconfig:查看网络配置

  • ping:测试主机之间网络连通性

  • lsof(list open files)是一个列出当前系统打开文件的工具

    • lsof -i:8000(查看服务器 8000 端口的占用情况)
      1. COMMAND:进程的名称;
      2. PID:进程标识符;
      3. USER:进程所有者;
      4. FD:文件描述符,应用程序通过文件描述符识别该文件;
      5. DEVICE:指定磁盘的名称;
      6. SIZE:文件的大小;
      7. NODE:索引节点(文件在磁盘上的标识)
      8. NAME:打开文件的确切名称
    • lsof abc.txt:显示开启文件abc.txt的进程
    • lsof -c abc:显示abc进程现在打开的文件
    • lsof -c -p 1234:列出进程号为1234的进程所打开的文件
    • lsof -g gid:显示归属gid的进程情况
    • lsof +d /usr/local/:显示目录下被进程开启的文件
    • lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
    • lsof -d 4:显示使用fd为4的进程
    • lsof -i -U:显示所有打开的端口和UNIX domain文件
  • 网络环境配置

    • 第一种方法(自动获取)

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

    • 第二种方法(指定ip)

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

      编辑:vi /etc/sysconfig/network-scripts/ifcig-ens33

  • 设置主机名

    • hostname:查看主机名
    • 修改文件在/etc/hostname
    • 修改后,重启生效
  • 设置hosts映射

    hosts是什么?用来记录IP和Hostname(主机名)的映射关系

    编辑:/etc/hosts

  • DNS

    Domain Name System的缩写,域名系统

    是互联网上作为域名和IP地址相互映射的一个分布式数据库

进程管理
ps(Process Status):用来查看目前系统中,有哪些进程正在执行,以及它们执行的情况
ps -l:只能看自己bash的进程;
ps aux:查看系统所有的进程;
ps -lA:也是能够查看所有系统的进程;
ps axjf:连同部分进程树状态
选项与参数:
	-A:所有的进程均显示出来,与-e具有相同的效果;
	-a:不显示与终端有关的所有进程;
	-u:有效使用者(effective user)相关的进程;
	x:通常与a这个参数一起是个,可列出较完整信息
输出格式规划:
	l:较长、较详细的将该PID的信息列出;
	j:任务的格式(jobs format);
	-f:做一个更为完整的输出
ps -l:仅查看自己的bash相关进程
  • F:代表这个进程标识(process flags),说明这个进程的权限,常见号码有:
    • 若为4,表示此进程的权限为root;
    • 若为1,表示此子进程仅执行复制(fork),而没有实际执行(exec)
  • S:代表这个进程的状态(STAT),主要的状态有:
    • R(Running):该进程正在运行中;
    • S(Sleep):该进程目前正在睡眠状态(idle),但可以被唤醒(signal);
    • D:不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况(ex>打印);
    • T:停止状态(stop),可能是在任务空值(后台暂停)或跟踪(traced)状态;
    • Z(Zombie):僵尸状态,进程已经终止但无法被删除至内存外
  • UID/PID/PPID:代表【此进程被该UID所拥有/进程的PID号码/此进程的父进程PID号码】
  • C:代表CPU使用率,单位为百分比
  • PRI/NI:Priority[praɪˈɔːrəti]/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被CPU执行。
  • ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel function,指出该进程在内存的哪个部分,如果是个running的进程,一般就会显示[ - ];SZ代表此进程用掉多少内存;WCHAN表示目前进程是否运行,同样的,若为-表示正在运行中。
  • TTY:登陆者的终端位置,若为远程登录则使用动态终端接口名称(pts/n);
  • TIME:使用的CPU时间,注意,是此进程实际话费CPU运行的时间,而不是系统时间;
  • CMD:就是command的缩写,表示造成此进程的触发进程的命令是什么。
ps aux:查看系统所有进程
  • USER:该进程属于所属用户账号;
  • PID:该进程的进程ID;
  • %CPU:该进程使用掉的CPU资源百分比;
  • %MEM:该进程所占用的物理内存百分比;
  • VSZ:该进程使用掉的虚拟内存量(KB);
  • RSS:该进程占用的固定的内存量(KB);
  • TTY:该进程是在哪个终端上面运行,若与终端无关则显示?另外,tty1-tty6是本机上面的登录进程,若为pts/0等,则表示是由网络连接进入主机的进程;
  • STAT:该进程目前的状态,装填显示与ps -l的S的标识相同(R/S/T/Z);
  • START:该进程被触发启动的时间;
  • TIME:该进程实际使用CPU运行的时间;
  • COMMAND:该进程的实际命令是什么
僵尸(zombie [ˈzɑːmbi] )进程

造成僵尸进程的原因在于该进程应该已经执行完毕,或是应该要终止了,但是该进程的父进程却无法完整地将该进程结束掉,而造成该进程一直存在内存当中;如果你发现在某个进程的CMD后面接上了时,就代表该进程是僵尸进程。

  • 如果发现系统中有很多僵尸进程时,记得要找出该进程的父进程,然后好好做个追踪,好好进行主机的环境优化,看看有什么地方需要改善,不要只是直接将它kill掉;
  • 通常僵尸进程都已经无法管理,而直接交给systemd这个进程来负责,偏偏systemd是系统第一个执行的进程,它是所有进程的父进程。如果产生僵尸进程,而系统过一阵子还没有用过内核非经常性的特殊处理来将该进程删除时,那只好通过reboot的方式来将该进程kill掉。
top:动态查看进程的变化

相比于ps是选取一个时间点的进程状态,top则可以持续监测进程运行的状态。

top [-d数字] | top [-bnp]
选项与参数:
-d:后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒;
-b:以批量的方式执行top,还有更多的参数可以使用,通常会搭配数据流重定向来将批量的结果输出为文件;
-n:与-b搭配,意义是,需要执行几次top的输出结果;
-p:指定某些个PID来执行查看监测;
在top执行过程当中可以使用的按键命令:
	?:显示在top当中可以输入的按键命令;
	p:以CPU的使用排序显示;
	M:以Memory的使用排序显示;
	N:以PID来排序;
	T:由该进程使用的cpu时间累积(TIME+)排序;
	k:给予某个PID一个信号(signal);
	r:给予某个PID重新制定一个nice值;
	q:退出top的按键
	
top上面的界面为整个系统的资源使用状态:
第一行(top...):这一行显示的信息分别为:
	1.目前的时间;
	2.开机到目前为止所经过的时间;
	3.已经登录系统的用户人数;
	4.系统在1、5、15分钟的平均任务负载
第二行(Tasks...):显示的是目前进程的总量与个别进程在什么状态(running,sleeping/stopped,zombie)
第三行(%CPU...):显示的是CPU的整体负载,每个项目可使用?(问好)查看。
第四行与第五行:表示目前的物理内存与虚拟内存(Mem/Swap)的使用情况。
第六行:这个是在top进程当中输入命令时,显示状态的地方。

top下半部分的画面,则是每个进程使用的资源情况:
	1.PID:每个进程的ID;
	2.USER:该进程所属的用户;
	3.PR:Priority的间歇,与Priority有关,也是越小则越早被执行;
	4.NI:Nice的简写,与Priority有关,也是越小则越早被执行;
	5.%CPU:CPU的使用效率;
	6.%MEM:内存的使用效率;
	7.TIME+:CPU使用时间的累加
top默认使用CPU使用率(%CPU)作为排序的依据。如果想要使用内存使用率排序,则可以按下【M】,若要恢复则按下【P】即可。
pstree:查看进程树
pstree [-A|U] [-up]
选项与参数:
-A:各进程树之间的连接以ASCII字符来连接;
-U:各进程树之间的链接以Unicode的字符来连接,在某些终端界面下可能会有错误。
-P:并同时列出每个进程的PID;
-u:并同时列出每个进程的所属账号名称
所有的进程都是依附在systemd这个进程下面的。这个进程的PID是一号,因为它是由Linux内核所主动调用的第一个进程,所以PID就是一号了。

终止进程kill和killall

  • 进程是如何互相管理的?是通过给予该进程一个信号(signal)去告知该进程你想要让它做什么。kill -l

    代号 名称 内容
    1 SIGHUP 启动被终止的进程,可让该PID重新读取自己的配置文件,类似重新启动。
    2 SIGINT 相当于用键盘输入ctrl+c来终端一个进程的运行
    9 SIGKILL 代表强制终端一个进程的执行,如果该进程执行到一半,那么尚未完成的部分可能会有【半成品】产生,类似vim会有.filename.swp保留下来
    15 SIGTERM 以正常的方式结束进程来终止该进程。
    19 SIGSTOP 相当于用键盘输入ctrl+z来暂停一个进程的运行。
  • kill -signal PID

    kill可以帮我们将这个信号传送给某个任务(%number)或是某个PID(直接输入数字)

  • 执行任务管理的操作中,其实每个任务都是目前bash的子进程,即彼此之间是有相关性的,我们无法用任务管理的方式有tty1的环境去管理tty2的bash。

  • 可以出现提示字符让你操作的环境称为前台,至于其他任务就可以放入后台去暂停或运行;

  • 放入后台的任务想要运行时,它必须不能够与用户进行交互,而且放入后台的任务不可以使用ctrl+c来终止;

服务(service)管理

服务(service)本质就是进程,但是是运行在后台,通常都会监听某个端口,等待其他程序的请求,又称为守护进程。

  • systemctl/service 服务名 [start|stop|restart|status]

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

  • 服务的运行级别(runlevel):7种(主要3和5)

  • 开机的流程说明

    开机 -> BIOS -> /boot -> systemd进程1 -> 运行级别 -> 运行级对应的服务
    
  • chkconfig:给服务的各个运行级别设置自启动/关闭

    • chkconfig指令管理的服务在/etc/init.d查看
    • chkconfig的基本语法
      1. 查看服务 chkconfig --list [| grep xxx]
      2. chkconfig 服务名 --list
      3. chkconfig --level 5 服务名 on/off
  • systemctl 管理指令

    systemctl [start | stop | restart | status] 服务名

    systemctl 指令管理的服务在 /usr/lib/systemd/system 查看

  • systemctl设置服务的自启动状态

    1. systemctl list-unit-files [| grep 服务名] (查看服务开机启动状态,grep可以进行过滤)
    2. systemctl enable 服务名 (设置服务开机启动)
    3. systemctl disable 服务名 (关闭服务开机启动)
    4. systemctl is-enabled 服务名 (查询某个服务是否是自启动的)
  • firewall 指令

    1. 打开端口:firewall-cmd --permanent --add-port=端口号/协议
    2. 关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
    3. 重新载入才能生效:firewall-cmd --reload
    4. 查询端口号是否开放:firewall-cmd --query-port=端口/协议
监控网络状态

netstat [选项]

-an:按一定顺序排列输出

-p:显示哪个进程在调用

案例:请查看服务名为sshd的服务的信息

netstat -anp | grep sshd

  • netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况

    netstat -tunlp | grep 端口号
    
    • -t (tcp) 仅显示tcp相关选项
    • -u (udp)仅显示udp相关选项
    • -n 拒绝显示别名,能显示数字的全部转化为数字
    • -l 仅列出在Listen(监听)的服务状态
    • -p 显示建立相关链接的程序名
  • netstat -ntlp //查看当前所有tcp端口

    netstat -ntulp | grep 80 //查看所有80端口使用情况
    
RPM 与 YUM

rpm用于互联网下载包的打包及安装工具;

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

  • rpm -qa | grep xxx:查询已安装的rpm列表
    • rpm -qa:查询所安装的所有rpm软件包
    • rpm -q 软件包名:查询软件包是否安装
    • rpm -qi 软件包名:查询软件包中的文件
    • rpm -qf 文件全路径名:查询文件所属的软件包
  • rpm -e RPM包的名称:卸载rpm包(erase:擦除)
    • rpm -e --nodeps rpm包的名称:可以强制卸载
  • rpm -ivh RPM包全路径名称:安装rpm包
    • i=install 安装
    • v=verbose 提示
    • h=hash 进度条
  • yum list | grep xxx:查询yum服务器是否有需要安装的软件
  • yum install xxx:安装指定的yum包
yum常用命令
  1. 列出所有可更新的软件清单命令:yum check-update

  2. 更新所有软件命令:yum update

  3. 仅安装指定的软件命令:yum install

  4. 仅更新指定的软件命令:yum update

  5. 列出所有可安裝的软件清单命令:yum list

  6. 删除软件包命令:yum remove

  7. 查找软件包命令:yum search

  8. 清除缓存命令:
    yum clean packages: 清除缓存目录下的软件包
    yum clean headers: 清除缓存目录下的 headers
    yum clean oldheaders: 清除缓存目录下旧的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers

配置国内yum源
  • 首先备份/etc/yum.repos.d/CentOS-Base.repo
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    
  • 下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
    http://mirrors.163.com/.help/CentOS7-Base-163.repo
    mv CentOS6-Base-163.repo CentOS-Base.repo
    
  • 运行以下命令生成缓存
    yum clean all
    yum makecache
    
APT软件管理

apt 是 Advanced Packaging Tool的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令进行软件包的安装、删除、清理等。

  • sudo apt-get update:更新源
  • sudo apt-get install package:安装包
  • sudo apt-get remove package:删除包
  • sudo apt-cache search package:搜索软件包
  • sudo apt-cache show package:获取包的相关信息,如说明、大小、版本等
  • sudo apt-get install package --reinstall:重新安装包
  • sudo apt-get -f install:修复安装
  • sudo apt-get remove package --purge:删除包,包括配置文件等
  • sudo apt-get build-dep package:安装相关的编译环境
  • sudo apt-get upgrade:升级系统
  • sudo apt-cache depends package:了解使用该报依赖哪些包
  • sudo apt-cache rdepends package:查看该报被哪些包依赖
  • sudo apt-get source package:下载该包的源代码
apt-get 更新源
  1. 备份

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
    
  2. 更新源

    sudo vim /etc/apt/sources.list
    
  3. 粘贴内容

  • 清华

    # deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
    
  • 阿里源

    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse 
    deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse 
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse 
    deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse 
    deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse 
    deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse 
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse 
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse 
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse 
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    
  1. 让更新源生效

    sudo apt-get update
    
  2. 单独一次使用

    sudo apt-get update  更新源
    sudo apt-get upgrade 更新已安装的包
    
远程登录Ubuntu

SSH(secure Shell):建立在应用层和传输层基础上的安全协议。

SSH服务需要安装相应的服务器和客户端

  • sudo apt install net-tools:查看Ubuntu是否安装SSHD服务

  • sudo apt-get install openssh-server:安装SSH服务器和客户端

  • service sshd restart:启动sshd服务,会监听端口22

  • 在windows使用XShell7和XFTP7登录Ubuntu

  • 从一台linux系统远程登录另一台linux系统

    ssh 用户名@IP
    例如:ssh [email protected]
    使用ssh访问出现错误时,可查看是否有文件 ~/.ssh/known_ssh,尝试删除该文件解决。
    
    登出:exit 或者 logout
    
日志管理
系统常用的日志
:日志文件 :说明
/var/log/boot.log 系统启动日志
/var/log/cron 记录与系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp 记录错误登录的日志。这个文件是二进制文件,不能直接使用vi查看,而要使用lastb命令查看
/var/log/lasllog 记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件,要使用lastlog命令查看
/var/log/maillog 记录邮件信息的日志
/var/log/message 记录系统重要信息的日志,这个日志文件中会记录linux系统的绝大多数信息。如果系统出现问题,首先要检查的应该就是这个日志文件
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。是二进制文件,要使用lastlog查看。
/var/log/ulmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。这个文件不能用vi查看,而要使用w/who/users等命令查看
日志管理服务 rsyslogd
  • 查询linux中的rsyslogd服务是否启动

    ps aux | grep "rsyslog" | grep -v "grep"
    
  • 查询rsyslogd服务的自启动状态

    systemctl list-unit-files | grep rsyslog
    
  • 配置文件:/etc/rsyslog.conf

  • 日志类型:

  • 日志级别:

  • 日志轮替

  • logrotate 配置文件

内核升级
  • uname -a:查看当前的内核版本
  • yum info kernel -q:检测内核版本,显示可以升级的内核
  • yum update kernel:升级内核
  • yum list kernel -q:查看已经安装的内核
vi/vim
一般命令模式

[[上下左右]按键移动光标、删除字符、删除整行、复制、粘贴等

  • 光标的移动
    1. 上下左右箭头移动(n+箭头:即向指定方向移动n步)
    2. 向上向下翻页(ctrl+f、ctrl+b、ctrl+d、ctrl+u)
    3. +/-:光标移动到非空格符
    4. [home]/[end]:移动到当行的最前/后的字符处
    5. ctrl+Home/End:光标移动到本文件的第一行(gg)/最后一行
    6. nG:移动到本文件的地n行
  • 查找与替换
    1. /word:向光标之下寻找一个名称为word的字符串;
    2. ?word:向光标之上寻找一个名称为word的字符串;
    3. n:重复前一个查找的操作;
    4. N:与n刚好相反;
    5. :n1,n2/word1/word2/g:在n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2;
    6. :1,$s/word1/word2/g:从第一行到最后一行寻找word1字符串,并将该字符串替换为word2;
    7. :1,$s/word1/word2/gc:从第一行到最后一行寻找word1字符串,并将该字符串替换为word2,且在替换前显示提示字符给用户确认是否需要替换;
  • 删除
    1. x与X:在一行中,x为向后删除一个字符;X为向前删除一个字符;
    2. nx/X:向后或向前删除n个字符;
    3. dd:删除(剪切)光标所在的那一整行;
    4. ndd:n为数字,删除(剪切)光标所在的向下n行;
    5. dnG:n为数字,删除(剪切)光标所在到第n行的所有数据;
    6. dG:删除(剪切)光标所在到最后一行的所有数据;
    7. d$:删除(剪切)光标所在处,到该行的最后一个字符;
    8. d0:删除(剪切)光标所在处,到该行的最前面一个字符;
  • 复制
    1. yy:复制光标所在的那一行;
    2. nyy:n为数字,复制光标所在的向下n行;
    3. ynG:n为数字,复制光标所在到第n行的所有数据;
    4. yG:复制光标所在到最后一行的所有数据;
    5. y$:复制光标所在处,到该行的最后一个字符;
    6. y0:复制光标所在处,到该行的最前面一个字符;
  • 其他常用操作
    1. 鼠标左键选取内容,右键粘贴至光标的后面(复制粘贴最快速的方式);
    2. p与P:p为将已复制的数据在光标下一行粘贴;P则为贴在光标上一行;
    3. J:将光标所在行与下一行的数据结合成同一行;
    4. u:撤销,即恢复前一个操作;
    5. .:小数点,重做上一个操作
编辑模式

i 进入编辑模式;

Esc 退出编辑模式或命令行模式

命令行模式

[: / ?] - 从一般模式进入命令行模式;

查找数据、读取、保存、批量替换字符、退出vi、显示行号等操作

  • :w :将编辑的数据写入硬盘文件中;
  • :w!:若文件属性为【只读】时,强制写入该文件;
  • :q :退出vi;
  • :q!:若曾修改过文件,又不想保存,使用!为强制退出不保存;
  • :wq:保存后退出,若为:wq!则为强制保存后退出;
  • ZZ:大写的z,若文件没有修改,则不保存退出;若文件已经被修改过,则保存后退出;
  • :w [filename]:将编辑的数据保存成另一个文件,类似另存为新文件;
  • :r [filename]:在编辑的数据中,读入另一个文件的数据,亦即将[filename]这个文件内容加到光标所在行后面;
  • :set nu:显示行号,设置之后,会在每一行的前缀显示该行的行号;
  • :set nonu:取消行号
vim多文件编辑
  • vim file1 file2:使用vim打开两个文件;
  • :n :编辑下一个文件;
  • :N :编辑上一个文件;
  • :files :列出目前这个vim开启的所有文件
多窗口功能
  • :sp :打开一个新窗口,如果有加filename,表示在新窗口创建一个新文件,否则表示两个窗口为同一个文件内容;
  • ctrl+w+↑/↓:先按下ctrl不放,在按下w后放开所有的按键,之后再按下↑/↓,则光标可向上或下窗口移动;
  • ctrl+w+q:先按下ctrl不放,在按下w后放开所有的按键,之后再按下q,即可退出光标所在的窗口

你可能感兴趣的:(Linux,linux,学习,服务器)