首页 > 代码库 > linux服务之日志

linux服务之日志

[root@test1 ~]# rpm -qa|grep log
sysklogd-1.4.1-46.el5
logwatch-7.3-9.el5_6
logrotate-3.7.4-12
rsyslog-3.22.1-7.el5

[root@test1 ~]# rpm  -qa|grep init
initscripts-8.45.42-1.el5.centos

[root@test1 ~]# rpm -qa|grep psacct
psacct-6.3.2-44.el5

/var/run/utmp 当前的,/var/log/wtmp 历史的,/var/log/btmp 失败的

[root@cache ~]# last
root     pts/0        36.44.101.18     Sat Jul 19 19:19   still logged in
root     pts/0        36.44.101.18     Sat Jul 19 18:59 - 19:18  (00:19)
root     pts/0        172.16.1.18      Fri Jul 18 22:18 - 01:47  (03:28)
wtmp begins Mon Jul 14 19:02:38 2014
[root@cache ~]# last -f /var/log/btmp  查看失败纪录的
root     ssh:notty    36.44.101.18     Sat Jul 19 19:18   still logged in
root     ssh:notty    36.44.101.18     Sat Jul 19 19:18 - 19:18  (00:00)
btmp begins Sat Jul 19 19:18:54 2014

wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。
last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户
lastlog命令查看各个用户最后一次登录时间
users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话
w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息
who命令查询utmp文件并报告当前登录的每个用户
ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时)

ac -d按天计算登录的时间,ac -p按用户计算登录时间,ac -d lzb查找此用户每天的登录时间
 
包含下列结构的一个二进制记录写入这两个文件中:
  struct utmp {
  char ut_line[8]; /* tty line: "ttyh0", "ttyd0", "ttyp0", ... */
  char ut_name[8]; /* login name */
  long ut_time; /* seconds since Epoch */
  };
登录时,login程序填写这样一个结构,然后将其写入到utmp文件中,同时也将其添写到wtmp文件中。
注销时,init进程将utmp文件中相应的记录擦除(每个字节都填以0 ),并将一个新记录添写到wtmp文件中。读wtmp文件中的该注销记录,其ut_name字段清除为0。在系统再启动时,以及更改系统时间和日期的前后,都在wtmp文件中添写特殊的记录项。who( 1 )程序读utmp文件,并以可读格式打印其内容。后来的UNIX版本提供last( 1 )命令,它读wtmp文件并打印所选择的记录。wtmp文件,它跟踪各个登录和注销事件。
wted
wtmp/utmp日志编辑程序。你可以使用这个工具编辑所有wtmp或者utmp类型的文件。
z2
utmp/wtmp/lastlog日志清理工具。可以删除utmp/wtmp/lastlog日志文件中有关某个用户名的所有条目。不过,如果用于Linux系统需要手工修改其源代码,设置日志文件的位置。

连接时间日志
进程统计日志
错误日志

[root@cache ~]# rpm -qa|grep psacct
psacct-6.3.2-63.el6_3.3.x86_64
[root@cache ~]# service psacct stop
Shutting down process accounting:                          [  OK  ]
[root@test1 account]# service psacct start    服务启动
Starting process accounting:                               [  OK  ]
[root@test1 account]# /etc/init.d/psacct start  脚本启动
Starting process accounting:                               [  OK  ]

[root@test1 ~]# lastcomm pts/0          通过终端名
[root@test1 ~]# lastcomm ls               通过命令名
[root@test1 ~]# lastcomm oracle         通过用户名查询
[root@cache ~]# lastcomm
crond             SF    root     __         0.03 secs Sat Jul 19 20:01
run-parts               root     __         0.03 secs Sat Jul 19 20:01
S 命令由超级用户执行
F 命令由fork产生,但没有exec
D 命令终止并创建一个core文件
X 命令被sigterm信号终止
[root@cache ~]# sa
      90   32918.77re       0.02cp    15590k
       2     103.78re       0.00cp    17840k   sshd
       2       0.00re       0.00cp    40344k   rpm
      15   32719.14re       0.00cp    15922k   ***other*
       4       0.00re       0.00cp    27552k   ps
       3      95.59re       0.00cp    14420k   sftp-server
       3       0.00re       0.00cp    27104k   psacct
       6       0.00re       0.00cp     4355k   unix_chkpwd
       4       0.00re       0.00cp    29324k   ls
       7       0.00re       0.00cp    13053k   bash*

0.36re "实际时间" 单位为分钟。
0.12cp 系统和用户时间总数(CPU时间, 单位为分钟)。
31156K 核心使用所占的平均CPU时间, 一个单元的大小为1KB。
up2date 命令名。
显示每一个用户:
[root@test1 ~]# sa -u
root       0.00 cpu      917k mem accton
root       0.00 cpu    15806k mem touch
root       0.00 cpu    16060k mem psacct
oracle     0.07 cpu    35696k mem oracle
oracle     0.00 cpu   327296k mem oracle           *
[root@test1 ~]# sa -a
     245     107.25re       0.12cp    74539k
      44      57.27re       0.05cp    35697k   oracle
       4       0.04re       0.04cp    28412k   rpmq
       1       0.12re       0.03cp    78080k   yum-updatesd-he
       2      24.14re       0.00cp    16330k   sshd
       2      23.90re       0.00cp    16576k   bash
[root@test1 ~]# sa -b
     249     110.34re       0.12cp    74947k
       4       0.04re       0.04cp    28412k   rpmq
      13       1.24re       0.03cp    14194k   ***other
      46      60.35re       0.06cp    35697k   oracle
       2      24.14re       0.00cp    16330k   sshd
       2      23.90re       0.00cp    16576k   bash
       2       0.00re       0.00cp    16464k   ps

[root@test1 ~]# sa -m
                                      252     111.34re       0.13cp    75499k
root                                  156      49.77re       0.07cp    12392k
oracle                                 94      61.36re       0.06cp   181496k
sshd                                    2       0.22re       0.00cp    16000k
你可以通过查看re, k, cp/cpu(见上面输出解释)时间来找出可疑的活动, 或某个用户/命令占用了所有的CPU时间。如果CPU/Memeory使用数(命令)在不断增加, 可以说明命令存在问题。