用户登录日志
last
记录所有登录成功的记录 /var/log/wtmp
lastb /var/log/btmp
lastb -i
# lastb -i -a | grep ssh | awk '{print $NF}
lastlog
/var/log/lastlog
记录每个帐号最后一次登录成功的信息。一般查看帐号的最后登录时间,还有哪些帐号原本不应该被登录的,却登录过。
===================================================================
开机--bois自检--int 19---加载mbr中的bootloader---grub读取配置文件,根据设定引导对应的系统---加载相应的内核,初始化内存盘---启动第一进程/sbin/init---读取配置文件/etc/inittab---获得了启动级别的设定---指定/etc/rc.d/rc.sysinit对系统进行初始化----根据级别启动相应的服务---执行rc.local--->产生6个tty,如果是图形界面还会启动图形服务---->调用login,接受登录。
服务管理:
级别对应的服务启动脚本所在目录:
/etc/rc.d/rcX.d <---X 代表级别
目录里的所有文件都是字符链接(软链接),所有链接文件一般都是指向/etc/rc.d/init.d/目录下的文件
哪些服务需要开机启动?
K##???? ,K -- KILL 该服务开机不启动
S##???? ,S ---- Start 该服务开机会启动
## 代表一个数字。决定服务启动优先顺序。
思考:如何手工的把某个服务设定会开机不自动启动?
管理开机启动服务的命令:
ntsysv [ --level 2345 ]
ntsysv --level 3
# export LANG=en_US.utf-8
# chkconfig --list
# chkconfig --level 5 autofs off
# chkconfig autofs on
为了让服务脚本支持chkconfig指令的处理
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
一个服务启动脚本的一般应该包含以下代码
# chkconfig: 345 28 72 《--默认在345级别启动,启动的顺序是28(S28),关闭的顺序72(K72)
# description: Automounts filesystems on demand <--该服务描述
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
自己编写一个服务启动脚本(模拟服务启动)
shell> vim /etc/rc.d/init.d/myapp
#!/bin/bash
# chkconfig: 35 18 88 <---只有添加了该关键字才支持chkconfig管理
# description: This is just for testing.
echo "Myapp .........................[ OK ] "
# chmod 755 /etc/rc.d/init.d/myapp
# chkconfig --list | grep myapp 《--还是看不到该名字的服务
# chkconfig --add myapp 《---把该服务添加到管理列表中,原理:在各个级别的目录里建立软链接
# chkconfig --list | grep myapp
myapp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
马上更改服务的状态
service
# service nfs status
# service nfs { start | stop | restart}
等价
# /etc/rc.d/init.d/nfs start
注意与chkconfig的区别
===================================
打包压缩命令
tar
打包
# tar cvf /tmp/test/etc.tar /etc
-j, --bzip2
# tar cjvf /tmp/test/etc.tar.bz2 /etc
-z, --gzip
-r 追加文件到已经存在的tar文件里,如果tar文件不存在,就新件
-P 不去掉绝对路径
找到/etc/目录下所有.conf结尾的文件并且打包到/tmp/test/etc.tar
# find /etc -name "*.conf" -exec tar rvf /tmp/test/etc.tar {} \;
解包
# tar xvf etc.tar <---万能解包
# tar xPvf etc.tar <---以绝对路径的形式解包
gzip 《--只能对当个文件进行压缩
# gzip etc.tar 《--压缩后源文件就没有,新增加一个etc.tar.gz
# gzip -9 etc.tar <---最大的压缩比率
解压
# gunzip etc.tar.gz
bzip2
# bzip2 etc.tar
# bunzip2 etc.tar.bz2
zip
# zip etc.tar.zip etc.tar
# find /etc | zip etc.zip -@
解压
# unzip etc.tar.zip -d /tmp
-d 指定解压目录
=================================
Inode
ext2/3/4文件系统,每一个文件都会对应inode编号
分区1/16的区域用于保存文件inode编号。
字符链接(软链接)
特点:
1、它是一个独立文件,具有自己独立一个inode编号。与它所指向那个文件是两个不同的文件。
2、它可以跨文件系统(跨分区)创建。
3、可以对目录创建软连接
4、软链接的文件尺寸是它所指向的那个文件的路径的字符长度,它会占用磁盘空间。
5、一般访问软件链接(cat ,echo等对文件内容进行的操作),都是操作所指向的文件。
通过名字得到软链接的inode编号--> 在inode table里找到对应的inode条目--->得到软链接的指针-->软链接的内容(它所指向的文件的路径)--->找到那个文件的inode编号--->在inode table里找到对应的inode条目--->得到文件的指针-->获得文件的数据
应用场合:
/www ---> sda2 100G
/www/upload <---用于保存上传的文件。
/www/upload/new --软链接-> /dev/sda3 200G
磁盘空间满的故障
当一个磁盘的inode区域空间满了,但数据区域还有剩余,也会报磁盘空间满了的提示。原因:没有多余inode区域空间保存新件文件对用的inode条目。
解决:
1、至少删掉一个不重要的文件,然后创建一个软连接指向另外一个文件系统
2、或者回收没用文件的inode编号(删除这些文件)
# dumpe2fs -h /dev/sda1 | grep -i inode
语法:
# ln -s /etc/fstab /tmp/test/lnfstab
8170334 -rw-r--r-- 1 root root 594 05-22 09:49 /etc/fstab
6632481 lrwxrwxrwx 1 root root 10 05-28 14:06 /tmp/test/lnfstab -> /etc/fstab
硬链接
特点:
1、不是独立文件,它与“源”文件具有相同的inode编号,公用同一条inode节点条目,所有文件的属性都是一样,仅仅是文件名字不一样而已
2、不会占用文件系统数据区域的空间
3、起到文件访问冗余的作用。冗余 <> 备份。防止误删除。
4、不能跨分区创建。
5、不能对目录创建硬链接。
# ln rhel-server-5.4-i386-dvd.iso hl2.iso
===================================
磁盘配额
限制某个用户或者某个用户组能够使用某个分区的所有空间。
一般用于文件共享服务,例如: nfs,ftp,邮件服务。
只能针对分区设定磁盘配额。
原理:
对文件进行归类统计,计算出属于某个用户ID或者某个组id的文件的所有容量,然后参考配额设定进行限制。
1、新建一个分区(可以在现有的分区的基础上作)
# fdisk /dev/sda
# partprobe
# mkfs.ext3 /dev/sda9
使用支持磁盘配额功能的参数进行挂载
# mount -o usrquota,grpquota /dev/sda9 /mnt
验证挂载结果
# mount
....
/dev/sda9 on /mnt type ext3 (rw,usrquota,grpquota)
fstab:
/dev/sda9 /mnt ext3 defaults,usrquota,grpquota 0 0
如果对现有分区作磁盘配额:
mount -o remount,usrquota,grpquota /dev/sda8
2、生成磁盘配额的配置文件
# quotacheck -cavug
-c , create创建配置文件
-a , all 扫描所有支持磁盘配额功能分区
-v , 显示命令执行过程
-u , user 生成用户配额的配置文件
-g , group....
命令运行完毕会在该分区的根目录生成usrquota,grpquota
3、针对具体的用户设定配额
# edquota -u tom
Disk quotas for user tom (uid 519):
Filesystem blocks soft hard inodes soft hard
/dev/sda9 0 20000 22000 0 5 5
注意:
1 block 约等于 1KB
4、启用磁盘配额
# quotaon /dev/sda9
生成一个19M的文件
[tom@dev mnt]$ dd if=/dev/zero of=/mnt/tom2 bs=1M count=19
5、查询配额使用情况
# repquota -a
*** Report for user quotas on device /dev/sda9
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 35760 0 0 4 0 0
tom -- 19484 20000 22000 2 5 5
[tom@dev mnt]$ dd if=/dev/zero of=/mnt/tom3 bs=1M count=2
sda9: warning, user block quota exceeded.
2+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 0.00357197 seconds, 587 MB/s
[tom@dev mnt]$ dd if=/dev/zero of=/mnt/tom4 bs=1M count=10
sda9: write failed, user block limit reached.
dd: 写入 “/mnt/tom4”: 超出磁盘限额
1+0 records in
0+0 records out
471040 bytes (471 kB) copied, 0.00150636 seconds, 313 MB/s
如何实现针对用户组配额
# edquota -g admin
该限定只能针对gid=admin的用户生效
jack gid=admin Gid=admin,jack,upl ###
bean gid=admin Gid=admin,bean ###
mary gid=mary Gid=admin,mary ## 不会生效
如何实现针对目录进行磁盘配额
/dev/sda2 / 该分区没有作任何磁盘配额限制
现在需要在/test目录作配额,限制该目录最多只能保存2G的文件。
方法:
1、建立一个2G的镜像文件
# dd if=/dev/zero of=/test.img bs=1M count=2048
2、针对该块设备进行格式化,挂载
# mkfs.ext3 /test.img
# mount -o loop,rw /test.img /test
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/test.img 2.0G 68M 1.9G 4% /test
或者
1、建立一个2G的镜像文件
# dd if=/dev/zero of=/test.img bs=1M count=2048
2、把该镜像文件模拟成块设备
# losetup /dev/loop0 /test.img <--把test.img与loop0绑定了,以后操作loop0,就相当于操作test.img,而loop0被系统认为是块设备文件
3、针对该块设备进行格式化,挂载
# mkfs.ext3 /dev/loop0
# mount /dev/loop0 /test
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/loop0 2.0G 68M 1.9G 4% /test
练习:
用组组admin
要求把tom,mary,bean加到该组
然后要求对该组的成员进行磁盘配额限制,该组最多使用某个分区的100M空间。
为了防止tom使用过多的空间,限制tom最多使用30M。
阅读(709) | 评论(0) | 转发(0) |