Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46127
  • 博文数量: 18
  • 博客积分: 474
  • 博客等级: 下士
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-20 10:08
文章分类

全部博文(18)

文章存档

2011年(18)

分类: LINUX

2011-06-20 15:32:39

用户登录日志
    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。

阅读(700) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~