RHEL7计划任务和日志管理

2023-11-10

本节所讲内容:

at 定制单次执行的计划任务

cron定制周期性计划任务

配置脚本实现周期性任务

配置公司内网服务器每天自动开关机

Linux系统日志记录规律

自定义日志记录方式

配置远程收集日志服务器

 

计划任务:

at # 只能执行一次

语法:

at 时间

服务:atd 必须开启

 

[root@xuegod60 ~]# systemctl status atd

● atd.service - Job spooling tools

  Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)

  Active: active (running) since Mon 2016-02-29 20:27:56 CST; 8min ago

 

启动atd服务

[root@xuegod60 ~]# systemctl restart atd              #启动atd服务

[root@xuegod60 ~]# systemctl enable atd              #设置atd服务开机自动启动

 

[root@xuegod60 ~]# date

Mon Feb 29 20:38:34 CST 2016

[root@xuegod60 ~]# at 20:40

at> echo `date` > /root/date.txt                                   #输入要执行的命令

at> <EOT>                                                               #按ctrl+D结束

job 1 at Mon Feb 29 20:40:00 2016

 

也可以这样写:

[root@xuegod60 ~]# at 20:00 2016-10-1

[root@xuegod60 ~]# at now +10min

 

[root@xuegod60 ~]# at -l

2 Sat Oct 1 20:00:00 2016 a root

3 Mon Feb 29 20:52:00 2016 a root

 

创建成功的at计划任务会在这个目录下成生一个可执行的脚本文件:

[root@xuegod60 ~]# ll /var/spool/at/*

-rwx------ 1 root root 2627 Feb 29 20:41 /var/spool/at/a00002017731b0

-rwx------ 1 root root 2628 Feb 29 20:42 /var/spool/at/a0000301727884

 

at任务删除:

atrm + 计划任务的编号

[root@xuegod60 ~]# atrm 3

 

周期性计划任务:

配置文件:

[root@xuegod60 ~]# vim /etc/crontab

*        *         *         *         *

分       时       日       月       星

[root@xuegod60 ~]# systemctl status crond

● crond.service - Command Scheduler

  Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset:enabled)

  Active: active (running) since Mon 2016-02-29 20:27:56 CST; 25minago

 

[root@xuegod60 ~]# systemctl restart crond              

[root@xuegod60 ~]# systemctl enable crond

 

解:对于系统级别的计划任务,需要执行的命令和脚本都放在这里:

[root@xuegod60 ~]# ll /etc/cron.

cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly/

 

针对用户级别的计划任务:

对于root用户:

命令:

#crontab –e 创建一个计划任务

#crontab –l 显示

#crontab –r 删除计划任务

 

#crontab –e #写法

分 时 日 月 星 谁做后面的事情 命令

每个取值范围:

分:0-59

小时:0-23

日:1-31

月:1-12

周:0-7 0 7 都是周日

[root@xuegod60 ~]# crontab -e

0 21 * * * echo `date` > /root/rm.txt

 

查看计划任务

[root@xuegod60 ~]# crontab -l

0 21 * * * echo `date` > /root/rm.txt

 

:特殊写法

#每月9,18,22号这几天的凌晨1点1分,执行一个备份脚本

1        1        9,18,22       *        * /root/backup.sh

#每月9-22号这几天的凌晨1点1分,执行一个备份脚本

1        1        9-22        *        */root/backup.sh

#每5分钟,执行一次

*/5 * * * * /root/backup.sh

 

使用root身份,给其它普通用户指定crontab:

语法:crontab -u USERNAME -e/-l/-r

[root@xuegod60 ~]# crontab -u rm -e

1 2 * * 5 poweroff

[root@xuegod60 ~]# crontab -u rm -l

1 2 * * 5 poweroff

[root@xuegod60 ~]# crontab -r

 

anacron

cron用控制循环执行例行性工作。如果我要设定机器每早8点进行备份用服务。除非我机器保证在8点这个时间点不会关机,如果关机了,cron中的脚本,在下次开机将不会被执行。

anacron并没有取代cron的意思,anacron用于,机器重启后,会侦测停机期间,有没有cron没有执行的计划任务,如果有,会立即,执行一下没有执行的任务。

 

实战,定时开机

BIOS

进入bios,一般是在开机后出现主板画面是按Delete这个键,部分品牌机可能按F2,F1

1、我的电脑看到上方这个图案按Delete,就可以进入bios设置界面了。然后通过键盘上的箭头选择Power Management Setup,就进入电源管理设置了。

 

通过回车进入这个设置后,选择Wake Up Event Setup,回车选择Press Enter

最后,在这个界面内继续找到Resume By RTC Alarm,回车选择一下。

继续回车选择,将Disabied 更改为Enabled,然后继续回车确定。然后再继续设置时间点和日期。

然后选择日期,并且选择你需要电脑每天需要在几点开机,当然,要保证你的主板时间是准确的。

 

 

日志管理

/var/log

常用的系统日志如下:

核心启动日志:/var/log/dmesg
系统报错
或重启服务等日志:/var/log/messages
邮件系统日志:/var/log/maillog

cron(定制任务日志)日志:/var/log/cron #计划日志执行成功与否,在这个文件中看

var/log/secure #验证系统用户登录

 

文件 /var/log/wtmp 记录所有的登入和登出

[root@xuegod60 log]# > /var/log/wtmp

[root@xuegod60 log]# last

 

wtmp begins Mon Feb 29 21:38:36 2016

 

文件 /var/log/lastlog 记录每個用戶最的登入信息。

[root@xuegod60 ~]# lastlog

Username Port From Latest

root pts/0 192.168.1.100 Mon Feb 29 20:29:57 +0800 2016

 

文件 /var/log/btmp 记录错误的登入尝试

测试

[root@xuegod61 ~]# ssh root@192.168.1.60

故意输错密码

[root@xuegod60 ~]# lastb

root ssh:notty 192.168.1.61 Mon Feb 29 21:43 - 21:43 (00:00)

 

[root@xuegod60 ~]# ll -h /var/log/btmp

-rw-------. 1 root utmp 768 Feb 29 21:43 /var/log/btmp

#如果btmp文件特别大,说明有人在暴力破解你的服务器

 

日志的记录方式:先分类,然后每个类中分级别

 

主要7种日志分类(FACILITY):

authpriv        安全认证相关

cron at和cron定时相关

daemon 后台进程相关

kern 内核产生

lpr 打印系统产生

mail 邮件系统相关

syslog 日志服务本身

news 新闻系统 (和BBS差不多,新闻组)

uucp uucp系统产生 。Unix-to-Unix Copy(UNIX至UNIX的拷贝),Unix系统的一项功能,允许计算机之间以存储-转发方式交换e-mail和消息。在Internet兴起之前是Unix系统之间连网的主要方式

local0到local7 #共8个类型,系统保留的:8个系统日志类型,给其它程序使用。或用户自定义用

 

8个日志级别:以下排列,由轻到重

 

级别(PRIOROTY):

debug 排错信息。开发人

info 正常信息

notice 稍微要注意的

warn 警告

err(error) 错误

crit(critical) 关键的错误

alert 警报警惕

emerg(emergency) 紧急,突发事件

 

日志服务:

1).rhel5:

服务名称:syslog

配置文件:

#vim /etc/syslog.conf

 

2) .RHEL6/7:rsyslog

配置文件:

#vim /etc/rsyslog.conf

 

进入配置文件显示内容如下:

1. kern.* 内核类型的所级别日志

2 *.info;mail.none;news.none;authpriv.none;cron.none:由于 mail, news, authpriv, cron 等类别产生的讯息较多,因此在 /var/log/messages 里面不记录这些项目。除此其他讯息都写入 /var/log/messages 中。所以messages 文件很重要

3. authpriv.* 认证方面的讯息均写入 /var/log/secure 档案;

4. mail.*:邮件方面的讯息则均写入 /var/log/maillog 档案;

5. cron.*:例行性工作排程均写入 /var/log/cron 档案;

6. local7.*:将本机开机时应该显示到屏幕的讯息写入到 /var/log/boot.log 档案中;

 

/etc/rsyslog.conf 中日志输入规则:

 

例:

. :代表『比后面还要高的等级都被记录下来』的意思,

例如: mail.info 代表只要是 mail 类型的信息,而且该信息等级高于 info (包括 info 本身)时,就会被记录下来的意思。

.= :代表所需要的等级就是后面接的等级而已, 其他的都不要!

.! :代表不等于, 亦即是除了该等级外的其他等级都记录。

 

举例:

cron.none 对于cron类型日志不记录任何信息

cron.=err 对于cron类型日志只记录err级别的信息

cron.err 对于cron类型日志记录大于err级别的信息

cron.!err 对于cron类型日志不记录err级别的信息,其他级别都记录。

 

扩展

wall命令介绍:

  wall -- send a message to everybody’s terminal.

[root@xuegod60 ~]# wall Today is nice day

 

Broadcast message from root@xuegod60.cn (pts/0) (Mon Feb 29 22:01:30 2016):

 

Today is nice day

 

[root@xuegod60 ~]# vim /etc/rsyslog.conf

mail.* -/var/log/maillog

在上面的第四行关于 mail 的记录中,在记录的档案 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?

由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中 (buffer) 等到数据量够大了才一次性的将所有数据都填入磁盘内这样将有利于减少对磁盘读写的次数减少IO读写开销。另外,由于讯息是暂存在内存内,因此若不正常关机导致登录信息未写入到文档中,可能会造成部分数据的遗失。

 

自定义sshd服务的日志

[root@xuegod60 ~]# vim /etc/rsyslog.conf

local0.* /var/log/sshd.log

[root@xuegod60 ~]# systemctl restart rsyslog

 

定义sshd远程服务日志的类别

[root@xuegod60 ~]# vim /etc/ssh/sshd_config

#SyslogFacility AUTHPRIV

SyslogFacility local0

[root@xuegod60 ~]# systemctl restart sshd

[root@xuegod60 ~]# ls /var/log/sshd.log

/var/log/sshd.log

 

[root@xuegod60 ~]# cat !$

cat /var/log/sshd.log

Feb 29 22:11:19 xuegod60 sshd[41268]: Received signal 15; terminating.

Feb 29 22:11:19 xuegod60 sshd[41525]: Server listening on 0.0.0.0 port 22.

Feb 29 22:11:19 xuegod60 sshd[41525]: Server listening on :: port 22.

日志查看方式

时间                            主机              进程ID              描述信息

如何防止日志被黑客删除呢?

[root@xuegod60 ~]# chattr +a /var/log/sshd.log

[root@xuegod60 ~]# lsattr /var/log/sshd.log

-----a---------- /var/log/sshd.log

加入了这个属性后,你的 /var/log/messages 登录档从此就仅能被增加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数后,才能被删除移!

 

日志回滚:

[root@xuegod60 ~]# vim /etc/logrotate.conf

weekly <==预设每个礼拜对日志档进行一次 rotate 的工作

 rotate 4 <==保留几个日志文档呢?预设是保留四个!

 create <== 回滚日志后,创建一个新的空文件来存储新的数据。

 

/var/log/wtmp {

  monthly

  create 0664 root utmp

  minsize 1M

  rotate 1

}

 

说明:

/var/log/wtmp { <==仅针对 /var/log/wtmp 所设定的参数

 monthly <==每个月一次,取代每周!

minsize 1M <==档案容量一定要超过 1M 后才进行 rotate (略过时间参数)

create 0664 root utmp <==设定新建文件的权限 、所有者、用户组

rotate 1 <==仅保留一个,亦即仅有 wtmp.1 保留而已。 }

 

配置远程日志服务器,实现日志集中管理:

1. 配置SERVER端(接收端): xuegod60服务端。 xuegod61做客户端

 

服务端配置

[root@xuegod60 ~]# vim /etc/rsyslog.conf

改:

#$ModLoad imtcp

#$InputTCPServerRun 514

$ModLoad imtcp

$InputTCPServerRun 514

重启服务

[root@xuegod60 ~]# systemctl restart rsyslog

查看服务监听状态

[root@xuegod60 ~]# netstat -anput | grep 514

tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 42163/rsyslogd

tcp 0 64 192.168.1.60:22 192.168.1.100:51497 ESTABLISHED 2212/sshd:root@pts

tcp6 0 0 :::514 :::* LISTEN 42163/rsyslogd

 

2、配置CLIENT端(客户端

[root@xuegod61 ~]# vim /etc/rsyslog.conf

*.* @@192.168.1.60:514

[root@xuegod61 ~]# systemctl restart rsyslog

 

验证

服务端关闭防火墙

[root@xuegod60 ~]# systemctl stop firewalld

在服务端查看

[root@xuegod60 ~]# tail -f /var/log/messages

客户端

[root@xuegod61 ~]# systemctl restart NetworkManager

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RHEL7计划任务和日志管理 的相关文章

  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • 如何在 Linux 中使用 C 语言使用共享内存

    我的一个项目有点问题 我一直在试图找到一个有据可查的使用共享内存的例子fork 但没有成功 基本上情况是 当用户启动程序时 我需要在共享内存中存储两个值 当前路径这是一个char and a 文件名这也是char 根据命令参数 启动一个新进
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的

随机推荐

  • python tcp连接状态判断_Socket套接字连接状态判断,接收数据笔记

    最近工作中涉汲到一些Socket 方面应用 如断线重连 连接状态判断等 今天做了一些总结 1 判断Socket 连接状态 通过 Poll 与 Connected 结合使用 重点关注 SelectRead 模式 方法名 Socket Poll
  • 刷脸支付市场谁才会是最后的大赢家

    2019年 刷脸支付设备的更新非常频繁 支付宝跟微信都推出了自己更新的刷脸设备 这是中国银联也开始战略规划准备迈进人脸识别这个移动支付市场 那么最后谁才会是最后的大赢家呢 每个行业 似乎都有相生相克的行业对手 他们之间的每一次交手 都能成为
  • 睿智的目标检测56——Pytorch搭建YoloV5目标检测平台

    睿智的目标检测56 Pytorch搭建YoloV5目标检测平台 学习前言 源码下载 YoloV5改进的部分 不完全 YoloV5实现思路 一 整体结构解析 二 网络结构解析 1 主干网络Backbone介绍 2 构建FPN特征金字塔进行加强
  • AD629测量负载电流的电路原理详解——精妙绝伦的电路设计

    AD629是ADI公司的一款精密差动放大器 可以承受最大270V的共模电压 使用AD629测量负载电流可以实现在有效抑制共模电压的同时放大差模电压以测量负载电流 如果要测量一个很小的差模信号 很多工程师的第一反应肯定是想到使用仪表放大器 然
  • stat 命令 – 显示文件的状态信息

    stat 命令的功能是用于显示文件的状态信息 Linux 系统中每个文件都有三个 历史时间 最后访问时间 ATIME 最后修改时间 MTIME 最后更改时间 CTIME 用户可以使用 stat 命令查看到它们 进而判别有没有其他人修改过文件
  • unity AR开发中遇到的一些错误总结

    1 Vuforia initialization failed 错误提示如下 Vuforia initialization failed UnityEngine Debug LogError Object Vuforia VuforiaAb
  • JDBC 注册数据库驱动语句

    先附上Microsoft SQL Server JDBC Driver 官方下载地址 https www microsoft com zh cn download driver aspx 初学JDBC 由于数据库软件的不同 我不能按着书上的
  • docker安装及修改默认镜像下载路径和配置加速器

    官方安装 Install Docker Engine on Ubuntu Docker Documentation 镜像存储迁移 Ubuntu20 04修改docker镜像存储位置并进行数据迁移 EastWood001 博客园 cnblog
  • C++运算符的重载

    前言 运算符重载是编译器提供给用户自定义的一种更方便的工作方式 定义 其实就是重新定义一些运算符的意思的 比如是让加法可以在类之间进行 当然我们要使用到关键字operator 话不多说 直接上代码 class Stu public frie
  • 华为HCIA-Datacom学习笔记——OSI数据链路层

    系列文章目录 第一章 网络的定义和网络的历史 第二章 数据交换传输形式 第三章 OSI物理层 第四章 OSI数据链路层 文章目录 系列文章目录 第一章 网络的定义和网络的历史 第二章 数据交换传输形式 第三章 OSI物理层 第四章 OSI数
  • Idea常用插件

    Jrebel 热部署插件 修改代码编译就生效 节省大量重启服务时间 热部署支持修改方法代码 方法定义 类定义 接口定义 包括swagger文档 修改资源文件 修改mapper xml 需配合JRebel MybatisPlus插件一起使用
  • QT中设置字体和更改字体颜色

    QT中设置字体和更改字体颜色 对一个文本框lineEdit设置字体 首先我建了一个按钮setFontButton用来设置 并定义了它的相应函数setFont 将setFontButton添加到布局中 并通过connect 设置与setFon
  • golang多版本管理工具g使用(windows)

    1 下载地址 https github com voidint g releases 2 设置环境变量 G MIRROR 值为 https golang google cn dl 由于国内无法自由访问Golang官网 导致查询及下载go版本
  • 关于vs引用nuget包出错的解决办法(自己摸索)

    关于vs引用nuget包出错的解决办法 问题来源 解决办法 问题来源 vs2015在引用不同的版本的nuget安装包时会出现如下提示 An error occurred while retrieving package metadata f
  • C++编译时多态和运行时多态

    编译时多态 运行时多态 两种多态的优缺点 多态就是指一个基类指针根据所指对象的不同而有不同的功能和行为 编译时多态 编译时多态 又叫静态多态 早绑定 编译时多态基于template 模板 的具现化与函数的重载解析 这种多态在编译期进行 因此
  • UE4 C++ 的SpawnActor

    UE4 C 的SpawnActor Fill out your copyright notice in the Description page of Project Settings pragma once include CoreMin
  • Python新手入门——Jupyter notebook 学习使用

    目录 1 环境配置 2 启动 3 主页面 2 1 修改默认目录 4 基本功能 5 进阶功能 5 其余资源网站 1 环境配置 进入Anaconda Prompt 进行环境配置 conda install n pytorch ipykernel
  • 数据压缩(13):AR模型

    一 AR模型 自回归模型 二 AR模型参数的估计 1 AR 模型参数和自相关函数的关系 2 Y W 方程的解法 L D 算法 3 AR 模型参数估计的各种算法的比较和阶数的选择 三 举例及MATLAB实现 例1 题a 利用 MATLAB实现
  • Java的类名与文件名必须一致

    1 Java保存的文件名必须与类名一致 2 如果文件中只有一个类 文件名必须与类名一致 3 一个Java文件中只能有一个public类 4 如果文件中不止一个类 文件名必须与public类名一致 5 如果文件中不止一个类 而且没有publi
  • RHEL7计划任务和日志管理

    本节所讲内容 at 定制单次执行的计划任务 cron定制周期性计划任务 配置脚本实现周期性任务 配置公司内网服务器每天自动开关机 Linux系统日志记录规律 自定义日志记录方式 配置远程收集日志服务器 计划任务 at 只能执行一次 语法 a