博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux系统日志及screen工具
阅读量:5103 次
发布时间:2019-06-13

本文共 6768 字,大约阅读时间需要 22 分钟。

Linux系统日志

  • /var/log/nessages/:系统总日志存放位置
[root@localhost .ssh]# ls /var/log/messagesmessages           messages-20170820  messages-20170828
  • /etc/logrotate.conf:日志切割配置文件

    compress 通过gzip压缩转储以后的日志

    nocompress 不压缩

    copytruncate 用于还在打开中的日志文件,把当前日志备份并截断

    nocopytruncate 备份日志文件但是不截断

    create mode owner group 转储文件,使用指定的文件模式创建新的日志文件

    nocreate 不建立新的日志文件

    delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩

    nodelaycompress 覆盖

    delaycompress 选项,转储同时压缩。

    errors address 专储时的错误信息发送到指定的Email 地址

    ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。

    notifempty 如果是空文件的话,不转储

    mail address 把转储的日志文件发送到指定的E-mail 地址

    nomail 转储时不发送日志文件

    olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

    noolddir 转储后的日志文件和当前日志文件放在同一个目录下

    prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

    postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

    daily 指定转储周期为每天

    weekly 指定转储周期为每周

    monthly 指定转储周期为每月

    rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份

    tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~

    size size 当日志文件到达指定的大小时才转储,bytes(缺省)及KB(sizek)或MB(sizem)

  • dmesg命令

  • dmesg:列出系统硬件相关的信息(位于内存中)

  • dmesg -c:清空信息

  • /var/log/dmesg:记录系统启动的日志

  • last命令:查看正确的登陆,重启等信息(其调用的文件为/var/log/wtmp)

[root@localhost ~]# lastroot     pts/0        192.168.101.1    Tue Aug 29 21:27 - 21:27  (00:00)    root     pts/1        192.168.101.1    Tue Aug 29 21:13   still logged in   root     pts/0        192.168.101.1    Tue Aug 29 21:08 - 21:13  (00:04)    root     tty1                          Tue Aug 29 21:06   still logged in   reboot   system boot  3.10.0-514.el7.x Tue Aug 29 21:03 - 22:57  (01:53)    root     tty1                          Tue Aug 29 20:36 - 20:43  (00:07)    reboot   system boot  3.10.0-514.el7.x Tue Aug 29 20:35 - 22:57  (02:21)
  • lastb命令:查看登陆失败的信息,对应文件为/var/log/btmp

  • /var/log/secrue:系统安全日志


screen工具

screen一个虚拟终端,作用是防止一个任务意外中断.系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。

  • 安装:yum install -y screen

  • 语法:screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

参数说明:

-A  将所有的视窗都调整为目前终端机的大小。-d 
<作业名称>
 将指定的screen作业离线。-h
<行数>
 指定视窗的缓冲区行数。-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。-r
<作业名称>
 恢复离线的screen作业。-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。-s 指定建立新视窗时,所要执行的shell。-S
<作业名称>
 指定screen作业的名称。-v 显示版本信息。-x 恢复之前离线的screen作业。-ls或--list 显示目前所有的screen作业。-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业

screen常见用法:

  • screen:回车进入虚拟终端

  • ctrl+a,然后d,退出终端(仅仅是退出,而不是结束)

  • screen -ls:

[root@localhost ~]# screen[detached from 2899.pts-0.localhost][root@localhost ~]# screen -lsThere is a screen on:    2899.pts-0.localhost    (Detached)1 Socket in /var/run/screen/S-root.
  • screen -r yourname :回到yourname这个session

  • screen -d -r yourname : 结束当前session并回到yourname这个session

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始:

  • C-a ? -> 显示所有键绑定信息

  • C-a c -> 创建一个新的运行shell的窗口并切换到该窗口

  • C-a n -> Next,切换到下一个 window

  • C-a p -> Previous,切换到前一个 window

  • C-a 0..9 -> 切换到第 0..9 个 window

  • Ctrl+a [Space] -> 由视窗0循序切换到视窗9

  • C-a C-a -> 在两个最近使用的 window 间切换

  • C-a x -> 锁住当前的 window,需用用户密码解锁

  • C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。

  • C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。

  • C-a w -> 显示所有窗口列表

  • C-a t -> Time,显示当前时间,和系统的 load

  • C-a k -> kill window,强行关闭当前的 window

  • C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样

    C-b Backward,PageUp   C-f Forward,PageDown   H(大写) High,将光标移至左上角   L Low,将光标移至左下角   0 移到行首   $ 行末   w forward one word,以字为单位往前移   b backward one word,以字为单位往后移   Space 第一次按为标记区起点,第二次按为终点   Esc 结束 copy mode

C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上


扩展内容

Linux日志文件总管——logrotate

logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件

例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预

logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下

实例1

背景:有一个10MB的日志文件/var/log/log-file,怎样使用logrotate来管理该日志文件?

  • 创建一个日志文件,填入一个10MB的随机比特流数据
[root@zyxlinux01 log]# du log-file 0   log-file[root@zyxlinux01 log]# head -c 10M < /dev/urandom > log-file [root@zyxlinux01 log]# du -sh log-file 10M log-file
  • 日志文件已经准备好,将配置logrotate来轮循该日志文件。为该文件创建一个配置文件
/var/log/log-file {    monthly    rotate 5    compress    delaycompress    missingok    notifempty    create 644 root root    postrotate        /usr/bin/killall -HUP rsyslogd    endscript}
monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。notifempty: 如果日志文件为空,轮循不会进行。create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

上面的模板是通用的,而配置参数则根据需求进行调整,不是所有的参数都是必要的。

实例2

只轮循一个日志文件,日志文件大小可以增长到50MB

# vim /etc/logrotate.d/log-file/var/log/log-file {    size=50M    rotate 5    create 644 root root    postrotate        /usr/bin/killall -HUP rsyslogd    endscript}

实例3

让旧日志文件以创建日期命名,可以通过添加dateext常熟实现

# vim /etc/logrotate.d/log-file/var/log/log-file {    monthly    rotate 5    dateext    create 644 root root    postrotate        /usr/bin/killall -HUP rsyslogd    endscript}

这将让归档文件在它们的文件名中包含日期信息


Xargs

xargs 可以读入stdin的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令

例如:

find /sbin -perm +700 |ls -l       这个命令是错误的find /sbin -perm +700 |xargs ls -l   这样才是正确的

选项用法

  • -a:file 从文件中读入作为sdtin
[root@localhost ~]# cat test#!/bin/shecho "hello world/n"[root@localhost ~]# xargs -a test echo#!/bin/sh echo hello world/n[root@localhost ~]#
  • 当sdtin含有特殊字元时候,将其当成一般字符,如:“/”,空格等
[root@localhost ~]# echo "/" |xargs echo/
  • -e: flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止
[root@localhost ~]# cat txt /bin zhou yi xuan[root@localhost ~]# cat txt |xargs -E 'yi' echo/bin zhou
  • -p: 当每次执行一个argument的时候询问一次用户
[root@localhost ~]# cat txt |xargs -p echoecho /bin zhou yi xuan ?...y/bin zhou yi xuan
  • -n: num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
[root@localhost ~]# cat txt |xargs -n1 echo/binzhouyixuan[root@localhost ~]# cat txt |xargs -n2 echo/bin zhouyi xuan
  • -:t 表示先打印命令,然后再执行
[root@localhost ~]# cat txt |xargs -t -n2 echoecho /bin zhou /bin zhouecho yi xuan yi xuan
  • -i: 或者是-I,这得看Linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替

  • -r: no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了

[root@localhost ~]# echo "" |xargs -t mvmv mv: 缺少了文件操作数Try 'mv --help' for more information.[root@localhost ~]# echo "" |xargs -t -r mv
  • -s:num 命令行的最好字符数,指的是xargs后面那个命令的最大命令行字符数

  • -d: delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符

  • -x: exit的意思,主要是配合-s使用

    ***

转载于:https://www.cnblogs.com/zhouyixuan/p/7577470.html

你可能感兴趣的文章
正则表达式
查看>>
多线程的线程池
查看>>
sql注入------基于时间延迟benchmark函数注入脚本
查看>>
大数据应用期末总评
查看>>
Data Services Designer将数据从sql server抽取到hana
查看>>
OSG中的DataVariance
查看>>
2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 C Thinking Bear magic
查看>>
jquery中has方法
查看>>
[Leetcode] 70. Climbing Stairs Java
查看>>
03.大数据集群必备脚本大合集
查看>>
计算缓存文件大小、清除缓存的Cell
查看>>
LuoguP2764 最小路径覆盖问题(最大流)
查看>>
webstorm 快捷键
查看>>
BZOJ P1059 [ZJOI2007]矩阵游戏——solution
查看>>
面对对象三大特性之一继承性。
查看>>
自定义 Cordova插件(基础篇)
查看>>
ios十进制、十六进制字符串,byte,data等之间的转换
查看>>
android -- 蓝牙 bluetooth (五)接电话与听音乐
查看>>
Swift - 使用xib添加新界面
查看>>
设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)
查看>>