本文章最初发布在 XJHui’s Blog,未经允许,任何人禁止转载!

注意:最新修改版本已发布在 这里,点击前往查看!

定时任务调度

crond任务调度

  1. 概述:

    • 定义:是指系统在某个特定的时间执行特定的命令或程序
    • 用处:
      • 系统工作:有些重要的工作必须周而复始的执行,如病毒查杀
      • 用户工作:个别用户需要执行某些程序,比如对mysql数据库备份
  2. 语法:

    1
    2
    3
    4
    crontab -e  # 编辑crond任务调度
    crontab -r # 终止任务调度
    crontab -l # 列出当前的任务调度
    service crond restart # 重启任务调度
  3. 案例:新建一条crond任务,每隔一分钟就将/etc/的文件列表覆盖写入/tmp/to.txt文件下

    1
    2
    crontab -e  # 设置个人任务调度
    */1 * * * * ls -l /etc/ >> /tmp/to.txt # 任务调度内容,*/1 * * * * 为cron时间表达式

    任务调度组成:

    运行结果:

    注意:简单命令可以直接在crontab中直接写入,复杂任务需要写脚本运行

  4. cron表达式:

    • 组成:_ _ _ _ _ (5个位置)

    • 每个位置的含义:

      • 分(0-59)
      • 时(0-23)
      • 日(1-31)
      • 月(1-12)
      • 周(0-7)0、7均表示周日
    • 特殊符号:

      • *:代表任何时间
      • ,:代表不连续时间
      • -:代表连续时间
      • */n:代表每隔多久执行一次
    • 案例:

cron应用实例

每隔一分钟将当前的日期信息,追加到/root/mydate文件中(脚本实现)

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

    1
    vim mytask.sh

    运行结果:

    注意:命令行输入shell脚本 路径/名称 即可直接运行

  2. 给shell文件一个可执行权限:

    1
    chmod 744 mytask1.sh

    运行结果:

  3. 在crontab中添加新行即表示添加定时任务:

  4. 运行结果:

磁盘分区和挂载

分区类型

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

windows分区

linux分区

  1. 原理介绍:

    • linux无论几个分区,分给哪一个目录使用,归根结底就只有一个根目录,linux每个分区都是整个文件系统的一部分
    • linux采用了一种 ”载入“ 的处理方法,它的文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来
  2. 原理示意图:

  3. 查看磁盘分区情况:

    1
    lsblk -f  # 查看磁盘分区情况

    运行结果:

  4. 磁盘详细信息:

    1
    lsblk  # 显示磁盘详细信息(包含大小)

    运行结果:

新增磁盘

  1. 需求:增加一块硬盘(sdb1,2G),并将其挂载到/home/newdisk

  2. 示意图:

  3. 如何增加一块硬盘:

    • 虚拟机添加硬盘

      使用 lsblk 命令查看磁盘分区情况,新添加的磁盘并未显示:

      重启后,重新执行该命令:

    • 分区

      sdb是一整块磁盘,要把它像sda一样分成sdb1…

      • 使用 fdisk /dev/sdb 命令将磁盘分区:

      • 输入m获取帮助:

      • 创建新分区:

      • 再次使用 lsblk -f 查看磁盘分区情况:

    • 格式化

      1
      mkfs -l ext4 /dev/sdb1

      运行结果:

      格式化后,使用命令 lsblk -f 可查看其uuid:

    • 挂载:

      1
      mount /dev/sdb1 /home/newdisk/

      运行结果:

    • 设置自动挂载:

      如果不设置自动挂载,系统重启后挂载会被取消

      1
      vim /etc/fstab

      添加一行内容:

磁盘情况查询

df

  1. 语法:

    1
    df -l  # 查看系统整体磁盘使用情况
  2. 案例:查看系统整体磁盘使用情况

    1
    df -lh  # 可选参数h,可将磁盘大小单位替换为K、G、T等

    运行结果:

du

  1. 语法:

    1
    du /目录  # 查看指定目录磁盘占用情况,默认为当前目录
  2. 可选参数:

    • h # 带计量单位
    • a # 含文件
    • s # 指定目录占用大小汇总
    • c # 列出明细的同时,增加【总用量】
    • –max-depth=1 # 子目录深度
  3. 案例:查看/opt目录的磁盘占用情况,深度为1

    1
    du -ach --max-depth=1 /opt

    运行结果:

    注意:增加depth深度不会影响总用量,但会增加文件搜索深度

wc

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

    1
    ls -l /home/ | grep "^-" | wc -l  # grep后跟的是正则表达式
  2. 统计/home文件夹下目录个数

    1
    ls -l /home/ | grep "^d" | wc -l
  3. 统计/home文件夹下文件个数,包含子文件夹中的文件

    1
    ls -lR /home/ | grep "^-" | wc -l
  4. 统计/home文件见下的目录个数,包含子文件夹中的目录

    1
    ls -lR /home/ | grep "^d" | wc -l
  5. 以树状显示/home目录结构

    1
    tree /home

    运行结果:

    注意:如果出现下图提示,使用 yum install tree 命令安装tree(输入两次y)后,重新执行即可

网络配置

NAT原理图

动态ip

自动获取,系统开机后不需要手动连接网络

  1. 进入系统-》首选项-》网络连接,编辑网络,勾选自动连接并应用:

  2. 重启系统,观察网络是否自动连接:

    1
    reboot

    运行结果:

    缺点:linux每次自动获取的ip可能不一样,因此该方法不适用于服务器(服务器ip是不变的)

静态ip

  1. 原理:通过修改配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0)来指定静态ip,并连接到因特网

  2. 案例:配置ip地址为静态ip

    • 确定要分配的ip地址段:

    • 修改配置文件:

      1
      vim /etc/sysconfig/network-scripts/ifcfg-eth0  # ip地址以192.168.72.130为例

      修改内容:

    • 重启服务/系统:

      1
      service network restart  # 重启网络服务或重启系统(reboot)

运行结果:

  • ifconfig 命令查看系统ip:

  • 测试是否能够连接外网:

进程管理

基本认识

  1. 在linux中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个进程id

  2. 每一个进程都会对应一个父进程,而这个父进程可以复制多个子进程

  3. 每个进程都能以两种方式存在(前台和后台):

    • 前台就是用户目前屏幕上可以进行操作的
    • 后台进程则是实际在操作的(屏幕上无法看到的进程,通常使用后台方式执行)
  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束

系统进程

  1. 语法:

    1
    2
    ps -aux[可选项,显示所有进程,用户格式显示,显示进程参数]  # 查看系统进程
    ps -ef # 显示指令的父进程
  2. 案例:

    • 查找系统全部进程

      1
      ps -aux | more  # 使用more指令分页,方便查看

      运行结果:

      注意:可以使用grep命令从所有命令中筛选出来某个进程(sshd为例)

    • 显示进程的父进程:

      1
      ps -ef | more  # 显示父进程

      运行结果:

进程树

  1. 语法:

    1
    pstree -p[可选,显示进程id]  # 树状显示所有进程
  2. 案例:树状形式显示所有进程及其id号

终止进程

  1. 语法:

    1
    2
    kill -9[可选项,强制停止] 进程号  # 停止进程,当要kill的进程是系统进程时如果不加-9该指令会被忽略
    killall 进程名称 # 批量终止进程,进程名称支持通配符
  2. 案例:

    • 踢掉非法登录的用户jerry:

      1
      2
      ps -aux | grep sshd  # 获取jerry远程连接(sshd)的进程号*
      kill -9 * # 使用kill命令,将该进程停止

      运行结果:

    • 终止所有远程连接:

      1
      killall sshd  # 停止所有sshd服务

      运行结果:

    • 终止终端进程:

      1
      2
      ps -aux | grep bash  # 查询终端(bash)的进程号*
      kill -9 * # 终端为系统进程,单独执行kill *无效果

      查询进程号:

      终止该进程:

服务管理

  1. 介绍:

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

  2. 语法:

    1
    service 服务名 [start|stop|restart|reload|status]  # 开启、停止、重启、重新加载(服务不会中断)、状态查询
  3. 案例:

    • 查看当前防火墙(iptables)的状态,关闭和启动防火墙

      1
      service iptables status  # 查询防火墙状态

      运行结果:

    • 关闭防火墙

      1
      service iptables stop  # 关闭、启动防火墙

      运行结果:

  4. 补充:

    • 查看某个端口状态:

      1
      telnet ip地址 端口号

      运行结果:

    • 查看所有服务名称:

      • setup:

      • /etc/init.d子目录:

        1
        2
        cd /etc/init.d  # 进入该目录
        ls -l # 查看子目录

        运行结果:

        注意:每个目录都代表一种服务

    • 管理每个系统(服务)运行级别下某个服务自启动:

      • 查看自启动状态:

        1
        chkconfig --list  # 查看每个运行级别下不同服务的自启动状态

        运行结果:

      • 案例:关闭sshd服务运行级别为5时的自启动

        1
        chkconfig --level 5 sshd off  # 控制自启动状态

        运行结果:

      • 注意:使用chkconfig命令修改自启动后需要重启系统才能生效

  5. 实例:

    • 案例1:请显示当前系统所有服务的各个运行级别的运行状态

      1
      chkconfig --list
    • 案例2:请查看sshd服务的运行状态

      1
      service ssdh status
    • 案例3:将sshd服务在运行级别5下设置为不自动启动

      1
      chkconfig --level 5 sshd off
    • 案例4:当运行级别为5时,关闭防火墙

      1
      chkconfig --level 5 iptables off
    • 案例5:在所有运行级别下,关闭防火墙

      1
      chkconfig iptables off  # 如果不指定运行级别,则代表全部运行级别
    • 案例6:在所有运行级别下,开启防火墙

      1
      chkconfig iptables on

动态监控进程

  1. 语法:

    1
    top  # 查看正在运行的进程,与ps的区别是可以动态显示系统进程(每3秒自动刷新一次)
  2. 案例:

    • 动态显示系统进程,每隔10秒刷新一次:

      1
      top -d 10

      运行结果:

    • 查询指定用户进程:

      1
      u  # top状态下按下u键并输入用户名,即可显示指定用户的进程
    • 杀死指定进程:

      1
      k  # top状态下按下k键并输入进程id,即可杀死该id对应的进程
    • 退出top指令:

      1
      q

监控网络状态

  1. 语法:

    1
    netstat -anp  # 查看系统网络情况
  2. 案例:监控sshd网络服务状态

    1
    netstat -anp | grep sshd

    运行结果:

rpm包管理

介绍

一种用于互联网下载包的打包及安装工具,生成具有.rpm拓展名的文件。rpm是Redhat Package Manager的缩写,类似windows的setup.exe。

查询指令

  1. 语法:

    1
    2
    3
    4
    rpm -qa  # 查询系统所安装的全部rpm包
    rpm -qi 软件名 # 查询安装包详细信息(版本、安装包)
    rpm -ql 软件名 # 查询软件安装路径
    rpm -qf 包名 # 查询所属软件包
  2. 案例:

    • 查询火狐(firefox)的rpm包信息

      1
      rpm -qa | grep firefox

      运行结果:

    • 查询/etc/passwd目录所属软件包:

      1
      rpm -qf /etc/passed

      运行结果:

卸载指令

  1. 语法:

    1
    rpm -e 软件名  # 卸载软件
  2. 案例:卸载火狐

    1
    rpm -e firefox

    运行结果:

    注意:在卸载时,可能提示 removing these packages would break dependencies:foo is needed by bar-1.0-1

    • 放弃删除
    • 强制删除:rpm -e –nodeps firefox(不推荐)

安装指令

  1. 语法:

    1
    rpm -ivh[install(安装),verbose(提示),hash(进度条)] 包名  # 安装软件包
  2. 案例:安装镜像文件中的firefox软件包

    • 挂载iso镜像:

      注意:挂载镜像后,就可以在系统中使用指令对镜像中内容进行操作

    • 将/media/CentOS_6.8_Final/Packages/firefox-45.0.1-1.el6.centos.x86_64.rpm文件复制到/opt目录下:

      1
      cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/

      注意:系统所需的rpm包都在/Packages下

    • 进入/opt目录,使用rpm命令安装该软件包:

      1
      rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm

      运行结果:

yum包管理

介绍

Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包(使用yum进行包管理需要联网)。

基本指令

  1. 查询yum服务器是否有需要安装的软件:

    1
    yum list | grep xx  # 筛选软件包
  2. 安装指定的软件包:

    1
    yum install xxx # 下载安装

案例

使用yum方式安装firefox

1
2
yum list | grep firefox  # 查询yum服务器上是否有该软件
yum install firefox # 安装firefox

运行结果:

后记

​ linux笔记差不多就这么多啦!

​ 其实后面还有shell编程,但没太多时间再学下去啦,有时间补上。

​ 后面会更新人工智能的笔记,一定要坚持下去呀!


不足之处,欢迎留言,会及时回复,及时更正!

创作不易,感谢支持!