L012-linux系统文件属性知识深入详解小结
最近的学习重点不在这上面,所以更新的比较慢,再加上母亲住院,感情问题,一系列吧,愿快点度过这黑色的4月份,希望我能在5月份阳光起来,加油!
回归正题
其实L012整节课的知识也并不多,回顾一些以往的知识,和继续讲解剩下的没有讲完ls命令显示的每个段落的含义。不过最最重要的,我认为是老师在最后给出的考试题,因为我看的是视频,没有讲义,我可以一点点给抄下来的题啊,不做明白了都对不起我这么费心o(^▽^)o。
开始:
经验积累:
企业面试题,企业生产案例
1.磁盘报错“No space left on device”。但是df -h 查看磁盘空间没满,请问为什么?
答:这种场景大多数都是磁盘的inode满了(可以用df -i查看indod),导致磁盘还有空间,但是出现错误。
解决办法大多是查找日志文件夹中无用的日志和很多系统或者循环产生的空日志文件,删除后会释放出很多inode,或者更换大硬盘。因为出现这种情况肯定也是服务器很老了。
2.文件删除生产场景案例解决实战:
linux提示磁盘空间满了,用df -h产看硬盘确实已经使用100%,然后删除日志文件后发现文件删除了,但是空间依然是满的,该如何解决?
首先把做题需要的没用过的命令写下来
du 查看目录大小(与df所区别,df查看磁盘使用情况) 通常接-sh参数 a:显示全部目录和其次目录下的每个档案所占的磁盘空间 s:只显示各档案大小的总合 b:大小用bytes来表示 x:跳过在不同文件系统上的目录不予统计 a:递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数 h : 人类方便查看的,其实就是把字节变成K的单位了 mkfs 磁盘格式化 参数 -t后面接格式如,ext3 ext4 lsof 查看进程文件占用情况
答:
先创建生产环境
[root@moban lkjiop]# yum install httpd -y //安装apache [root@moban lkjiop]# cd /etc/httpd/conf //进入apache文件夹 [root@moban conf]# grep log httpd.conf //在httpd.com配置文件中搜索log的关键字 [root@moban conf]# cp httpd.conf httpd.conf.ori //在更改配置文件之前先备份 [root@moban conf]# sed -i 's#CustomLog logs/access_log combined#CustomLg /app/log/access_log#gog /app/log/access_log combined#g' /etc/httpd/conf/httpd.conf //做替换,更换日志路径 [root@moban conf]# mkdir /app/log -p //创建日志的目录 [root@moban conf]# dd if=/dev/zero of=/dev/sdc bs=8k count=10 //创建10个每个为8k size 的名字为sdc的虚拟磁盘 [root@moban conf]# ls -l /dev/sdc //是否成功创建 [root@moban conf]# mkfs -t ext3 /dev/sdc //格式化sdc磁盘且格式为ext3 [root@moban conf]# mount -o loop /dev/sdc /app/log/ //将sdc挂载到/app/log上面 [root@moban conf]# df -h //查看是否挂在上 [root@moban conf]# /etc/init.d/httpd start //打开apache服务
打开浏览器,输入你的访问服务器ip,成功后刷新,直到把sdc空间刷满
ok,目前环境搭好
[root@moban conf]# cd /app/log/ //进入日志文件夹 [root@moban log]# rm -f access_log //删除日志文件以缓解空间 [root@moban log]# df -h //查看磁盘空间并没有被释放
这是因为有进程还在使用这个日志文件
[root@moban log]# lsof | grep del //查看系统进程正在占用的文件,用del来缩小范围(因为日志文件我们已经删除)
查询到确实是被httpd占用了
那么如何解决呢?
1.重启apache服务
[root@moban log]# /etc/init.d/httpd restart
2.清空文件,不删除
[root@moban log]# >access_log
3.linux下通过mkdir命令创建一个新目录/oldboy/ett,他的硬连接数是多少,为什么?
答:
两个硬链接数
①ett目录本身是一个硬链接
②ett目录下有一个隐藏目录“.”,也是一个硬链接
如果mkdir创建一个目录/oldboy/ett/lcr,那么/oldboy/ett下有几个硬链接?
答:
有三个硬链接
①ett本身为一个链接
②ett目录下有个隐藏目录“.”,也是一个硬链接
③lcr目录下有个隐藏目录“..”,是一个指向上级目录(也就是ett目录)的因链接
用户和属组
1.当你要切换用户的时候会输入切换到的用户名字,其实linux是不识别这个用户名的,他会把这个用户名的UID调配出来去操作。
如果想知道某个用户名的ID ,输入 id [用户名]
UID
0 超级用户 root
1-499 虚拟用户,虚拟用户为一个执行的应用程序需要一个用户的支持,比如装了httpd程序,那么自动产生一个apache用户,当apache启动时root跑apache主程序,子程序用apache用户启动,查看进程(ps -ef | grep apache)时可以看到
500-65535 普通用户
服务的运行时需要用户角色的,可以不用登陆,因此,工作中我们需要运行如mysql数据库,可以创建如下用户
[root@moban ~]# groupadd mysql -g 49 //指定组GID为49 [root@moban ~]# useradd mysql -u 49 -s /sbin/nologin -g mysql //创建一个名为mysql的用户UID为49,他的shell解释器为/sbin/nologin(空) 且归到组mysql组中 [root@moban log]# id mysql //查看mysql的信息以确认正确性 uid=49(mysql) gid=49(mysql) groups=49(mysql)
2.填加用户涉及到的文件 /etc/passwd /etc/shadow /etc/group /etc/gshadow
[root@moban log]# cat /etc/passwd //查看管理用户文件 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
输出的内容每行的字段都是由:来分隔,那么他们都是什么意思呢?
root :x :0 :0 :root :/root :/bin/bash
帐号名称 帐号密码 帐号UID 帐号组GID 用户说明 用户家目录 shell解释器
3.文件属性时间戳:
查看文件的属性,需要一个stat命令
stat [文件]
[root@moban log]# stat access_log //查看access_log的属性 File: `access_log' Size: 0 Blocks: 0 IO Block: 1024 regular empty file Device: 700h/1792d Inode: 13 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-04-25 14:16:41.000000000 +0800 //创建时间 Modify: 2016-04-25 14:16:41.000000000 +0800 //修改时间 Change: 2016-04-25 14:16:41.000000000 +0800 //改变时间
当使用ls命令 文件默认显示的时间是修改时间,如果想显示其他的时间请看下面:
ls -lt 显示修改时间 ls -lc 显示改变时间 ls -lu 显示创建时间
如果需要用不同时间的格式来显示,那么可以使用--time-style=参数 命令
如ls加--time-style= full-iso,long-iso,iso,locale =后面为不同的时间输出格式 long-iso 效果最好
例: [root@moban log]# ll --time-style=long-iso total 12 -rw-r--r-- 1 root root 0 2016-04-25 14:16 access_log
drwxr-xr-x. 2 root root 4096 Mar 23 13:22 yum.repos.d 权限后面的点是开启sexlinux创建会出现,如果在sexlinux关闭的情况下创建目录就不会显示这个“.”了,实际没有什么用处