第一、其他命令的介绍
nice 、 renice
nice -# command (#代表一个数值,取值范围: -20 ~ 19 ,优先级越低,数值越高)
nice --19 gftp
renice # pid
sort 《---排序命令
sort s1.txt
sort -n s1 《--把数字当数值排序
[root@dns test]# sort -t: -k1,1 -k3,3n s1.txt <--- -t 指定分割域,-k指定排序的字段
baidu:4000:500:baidu
baidu:4000:3500:hello
dede:600:600:dede
google:5000:8000:google
sina:4500:4000:sina
sina:4500:4000:sina
up:4500:3000:up
wangyi:4000:5100:wangyi
uniq 《---去除连续的重复行
cut 《--字段截取
cut -d: -f1,3,4 s1.txt <---默认是空格作为分割符, -d指定分割符号, -f指定显示的字段
[root@dns test]# cat s3
10.1.2.3
192.168.20.1
10.1.2.3
[root@dns test]# sort s3 | uniq <--最简单的网络IP访问量的统计,把IP单独显示出来
10.1.2.3
192.168.20.1
wc 《--- 统计命令
[root@dns test]# cat s4
hello moto
welcome here
[root@dns test]# wc s4
2 4 24 s4 <---行数,字符串数,字符数(包括字母、数字、空格、还有换行符号)
[root@dns test]# sort s3 | uniq | wc -l <--最简单的网络IP访问量的统计
第二、系统的启动流程
1、启动流程
开机--》Bois实现硬件自检---int 19--->读取mbr里的bootloader(grub)---》 根据配置文件,找到要引导的系统的内核文件等并加载到内存里---》加载内核之前先加载initrd(随机内存盘,这是一个小型的文件系统,放在内存里面),作用:驱动硬件,能够让内核理解系统所在的那个设备--—》内核运行---》运行产生第一个进程init ---> init 读取/etc/inittab 根据配置文件,判断系统进去哪个运行级别----》init 运行 /etc/rc.d/rc.sysinit 进行系统的初始化--》根据运行级别进去不同的目录进行服务启动---》rc.local---》 根据不同的运行级别:
如果 2、3、5 :
/sbin/mingetty 产生6个文本终端,并且调用login程序验证用户登录
如果运行级别5:
xdm ---> login 来验证用户登录
2、服务管理
修改服务启动的方式:
1、ntsysv --level 35 <---推荐的方式
2、手工方式,进去运行级别对应的文件夹,把软连接的名字更改
S --》 开机自动运行
K --》 开机不启动
3、命令行方式
chkconfig --list
chkconfig --level 35 cpuspeed on
chkconfig --level 35 cpuspeed off
添加一个服务:
chkconfig --add apache
删除一个服务:
chkconfig --del apache
要成功添加一个服务,需要作的就是:
1、把服务的脚本放在/etc/rc.d/init.d
2、服务的启动脚本必须有这两行的注释内容
# chkconfig: - 85 15
第一个字段 -代表所有级别默认都不自动启动,如果是 35代表在运行级别3、5自动启用
第二个85 代表如果服务开机启动,那么启动的顺序就是85
第三个15 代表关机的时候,服务关闭的顺序
# description: My Apache 《--服务的描述,可以随便描述
3、给予脚本运行权限
chmod 755 /etc/rc.d/init.d/apache
否则:
# service apache start
apache: 未被识别的服务
第二、inode、软链接、硬链接
inode : 每当创建一个文件和目录的时候(除了硬链接之外),都会为这个文件创建一个inode编号,这些信息都存放inode table
软链接:
ln -s /etc/fstab /tmp/test/linktofstab
[root@dns test]# ls -li
总计 0
196610 lrwxrwxrwx 1 root root 10 10-26 13:52 linktofstab -> /etc/fstab
[root@dns test]# ls -li /etc/fstab
6293259 -rw-r--r-- 1 root root 838 09-10 10:46 /etc/fstab
你会发现两个文件的inode编号不一样,就代表这是两个单独的文件
特点:
1、它会创建一个新的inode编号,代表这是独立的文件
2、相当于windows的快捷方式,你访问的时候,多了一个中转的过程,最终访问的内容就是它所链接的目标文件;
3、它可以跨文件系统(跨分区)创建;
4、它可以对目录进行链接
硬链接:
特点:
1、它不会新建一个inode编号,不代表一个独立文件;
2、对所谓的“源文件”进行删除,并不影响硬链接文的访问;
为什么:
因为硬链接还保存这访问这个文件对应的数据块的指针
3、硬连接不减少磁盘数据块的容量
4、它是不能跨文件系统创建;
5、它相当于为文件创建了一个冗余
6、不能手工用命令对目录进行硬链接
第三、磁盘配额
1、用到web/ftp/mail等一切需要限制用户使用硬盘空间的地方
2、特点:只能对分区进行配置
步骤:
1、新建一个分区,或者用原来的分区也行,但需要重新修改挂载参数再重新挂载
新建分区,格式化成ext3
2、用支持磁盘配额的参数对分区进行挂载
mkdir /ftproot
3、如果想永久生效就必须更新fstab
/dev/sda11 /ftproot ext3 defaults,usrquota,grpquota 0 0
4、对启用了磁盘配额的分区生成配置文件
quotacheck -cavug
-c 忽略已经原有的配置文件并再次生成
-a 扫面所有使用挂载参数挂载的分区,并对他们生成配置文件
-u 生成针对用户的限制配置文件
-g 生成针对组的限制配置文件
-v 把生成的过程显示出来
5、针对你要对哪些用户进行限制的配置
edquota -u tom
Disk quotas for user tom (uid 512):
Filesystem blocks soft hard inodes soft hard
/dev/sda11 0 20000 22000 0 0 0
6、启用磁盘配置功能
quotaon /dev/sda11
7、查看配额使用情况:
shell> repquota -a
*** Report for user quotas on device /dev/sda11
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 17636 0 0 3 0 0
注意:你会发现没有tom的使用情况和限制信息
为了让tom能对这个目录进行写入内容,必须修改权限:
chmod 777 /ftproot
然后测试:
a、先创建20M的文件
dd if=/dev/zero of=/ftproot/tomfile1 bs=1M count=20
b、查看报告
c、再创建10M的文件,看看是否成功?
dd if=/dev/zero of=/ftproot/tomfile2 bs=1M count=10
^文件名不一样,要注意
留意一下报告
例子2:针对组进行磁盘限制
你要针对组的磁盘配置,就必须挂载的时候使用grpquota的参数
1、需要使用两个帐号,他们的初始组(gid)一定是要相同
groupadd lily
useradd -g lily user1
useradd -g lily user2
2、编辑组的配额
edquota -g lily
3、测试
......
结果:该组的每个用户使用的总容量不能超过组配额的容量,也就是说,我对组限制了20M的使用容量,该组下的所用用户(user1和user2)加起来不能超过20M,如果user1已经用了20M,那么user2就不能再使用了。怎么解决?
解决方法:把该组下面的各个用户再进行单独的用户磁盘配额限制:
edquota -u user1
edquota -u user2
注意:要实验成功,测试的用户必须gid相同,否则失效
其他命令:
更改默认宽限期
edquota -t
针对某个用户修改宽限期:
edquota -T -u tom
复制某个用户的限制设置,快速配置另外的一个用户
edquota -p tom -u upl
关闭某个分区的磁盘配置支持
quotaoff
第四、访问控制列表
acl <---- 更细的权限控制
setfacl
getfacl target
背景:
tom 用户属于 tom组 ---》 rw
upl 用户属于 tom组 ----> r-x
bean 用户属于 tom组 ----> rw
mary 用户不属于tom组,就是other ---》 r
[root@dns lily]# getfacl tomfile
# file: tomfile
# owner: tom
# group: tom
user::rw- <---拥有者访问文件的时候所具有的权限
user:upl:r-x <----针对upl访问时候的权限
group::rw- <--- bean属于 tom,所以bean用户访问这个文件的时候就具有 rw
mask::rwx
other::r--
setfacl -m user::rw,user:upl:rx,group::rwx,other::r
背景2:
tom 用户属于 tom组 ---》 rw
upl 用户属于 tom组 ----> r
bean 用户属于 tom组 ----> rw
mary 用户不属于tom组,就是other ---》r
# file: tomfile
# owner: tom
# group: tom
user::rw- <---拥有者访问文件的时候所具有的权限,直接看这里,这里写什么权限,拥有者就具有什么权限
user:upl:r-- <----针对upl访问时候的权限,与mask去交集,--> r
group::rw- <--- bean属于 tom,所以bean用户访问这个文件的时候就具有 rw
mask::rwx
other::r--
setfacl -m user::rw,user:upl:r,group::rw,other::r ./tomfile
背景3:
tom 用户属于 tom组 ---》rw
upl 用户属于 tom组 ----> r
bean 用户属于 tom组 ----> r
mary 用户不属于tom组,就是other ---》rw
# file: tomfile
# owner: tom
# group: tom
user::rw- <---拥有者访问文件的时候所具有的权限,直接看这里,这里写什么权限,拥有者就具有什么权限
user:upl:r-- <----针对upl访问时候的权限,与mask去交集,--> r
group::rw- <--- bean属于 tom,与mask取交集 r
mask::r-x
other::rw- <---也是直接判断,不考虑mask
setfacl -m user::rw,user:upl:r,group::rw,other::rw,mask::rx ./tomfile