Linux-Ch09 项目构建、日志和计划任务

软件项目的构建

主流自动化构建工具:

  • Ant

    一个将软件编译、测试、部署等步骤联系起来加以自动化的工具,大多用于Java环境中的软件开发,由Apache软件基金会提供。

    以build.xml为默认的配置文件,配置文件中包括一个project节点,每个project里有一个或多个target(目标)

  • Maven

    • 基于项目对象模型的项目管理机制(POM)

    • 通过简单的描述信息(pom.xml)来管理项目的构建和模块间的依赖

    • 核心功能是通过配置合理的解决项目内部模块间和外部插件的依赖关系

      Maven仓库:

      • 本地仓库(私服)、中央仓库、远程仓库
      • 官方将大部分的开源项目相关的依赖包存在中央仓库中

      pom.xml:

      • 每个maven项目都有唯一的pom.xml,每个pom.xml都有一个唯一的表示自身的坐标
      • 坐标由三个部分组成:groupId、artifactId、version
      • 描述项目的依赖:依赖通过dependencies子节点声明,每个依赖也由项目坐标三要素组成

    • 不使用SpringBoot内嵌的tomcat,项目构建成war包:

      1
      2
      3
      4
      5
      6
      7
      # 设置打包方式为war包
      <packaging>war</packaging>

      # 2.将spring-boot-starter-web的scope设置为provided
      <scope>provided</scope>

      # 3.SpringBootApplication类继承 SpringBootServletInitializer
  • Gradle

    • 项目自动化构建工具,不再使用xml形式构建脚本
    • 主要用于Java和Android
    • 构建项目的两个基本概念:项目(project)、任务(task),每个构建至少包含一个项目,项目包含一个或多个任务

Linux日志系统

常用的日志文件:

  • /var/log/cron:记录计划任务crontab的相关信息
  • /var/log/messages:记录系统发送错误或异常等信息
  • /var/log/httpd/*:记录web服务器相关信息

日志相关的服务和程序:

  • rsylogd(rsylog.service):完成系统与网络等常用日志功能
  • logrotate:完成日志文件轮替功能
  • systemd-journald.service:CentOS新增的统一日志处理服务

日志文件内容的一般格式:

  • 事件发送的日期和时间
  • 事件相关的主机名
  • 事件相关的进程或函数
  • 事件详细内容或数据

日志配置文件:规定哪些服务的什么等级详细要被记录在哪个文件

  • 保存在 /etc/日志服务.conf 文件中

    1
    2
    3
    4
    5
    服务名称 [.=!] 日志等级 记录在哪个文件(完整路径+文件名)

    # 例子:
    mail.info /var/log/mailLog_info
    # mail服务产生大于info等级的信息记录在 mailLog_info中
    等级 名称 说明
    1 info 基本信息
    2 notice 除了info外,必须停止使用者或系统的信息
    3 warning 警告信息
    4 error 错误信息
    5 crit 比error严重,可能导致系统服务终止或模块崩溃
    6 alert 比crit严重,该服务或某模块已经停止工作
    7 emerg/panic 系统已经处于崩溃状态
    操作符 含义
    . 大于等于后面等级
    .= 只需要指定的等级
    .! 除指定等级外的其他等级
    1
    2
    3
    #使用示例
    news.*;cron.* /var/log/cronnews
    news.=warn;cron.=warn /var/log/cronnews.warn

web服务器日志:

  • 一般可以分为访问日志和错误日志

Linux计划任务

计划任务也被称为例行性工作,由系统在某一时间或周期性自动执行的程序或应用

常用场景:日志轮替、日志分析、重建文件索引、删除临时文件、web分析等

  1. 例行性任务(cron):通过crontab命令和设置/etc/crontab文件来实现,依赖于crond服务。

    **设置用户计划任务:**crontab命令,结合/var/spool/cron和/etc/cron.allow

    **设置系统计划任务:**编辑/etc/crontab配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # crontab命令
    crontab [-elr] [-u 用户名]
    # 进入vi编辑器模式,同样Ctrl+D退出 -u用于root管理员给其他用户编辑计划任务

    # 选项:
    # -e:进入编辑模式,设置任务时该选项不能省略
    # -l:查看已经设置好的任务
    # -r:删除计划任务
    # -u:root管理员给其他用户设置计划任务

    crontab命令时间表示法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 周(0-7)

    # 特殊字符
    * 取任意值
    , 分隔时段,例子: 0 3,6,9 * * * :每天的3,6,9点
    - 一段时间内 20 8-12 * * * :8:00-12:00之间的每小时20分
    /n n为数字,表示每个多久 */n * * * * :每隔5分钟

    # 示例: 发送新年邮件
    0 0 1 1 * mail starlightglimmer < /home/newyear.txt
  2. 单次计划任务(at):通过at命令实现,单词计划任务依赖于atd服务

    确保atd服务可用

    • at任务运行原理:

      每个at人物在/var/spool/at 目录内会对应一个文件,保存at任务需要执行的脚本和对应时间,atd进程通过读取该文件完成at任务

      为了控制at任务的权限,在/etc 目录下保存两个文件:白名单用户文件/etc/at.allow和黑名单用户文件**/etc/at.deny**,白名单优先级高于黑名单,如果两个文件都不存在,只有root用户有权限设置at任务。

    • at任务管理:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      at [-mldv] TIME
      at -c 作业编号
      #两种用法:
      # 1.设置at任务,执行后进入at命令行,Ctrl+D退出
      # 2.查看已有at任务的内容(at -c,atq,at -l)

      # 选项:
      # -m:工作完成后以email通知用户
      # -l:相当于atq命令,列出所有at任务
      # -d:相当于atrm命令,可用取消一个at任务
      # -v:用更详细的时间参数列出at任务的时间
      # -c:查看指定编号的at任务的内容

      # 参数:
      # TIME:如 HH:MM、HH:MM YYYY-MM-DD等