首页 > 代码库 > 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使用数(命令)在不断增加, 可以说明命令存在问题。