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这个sessionscreen -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使用