通过案例来总结技术点。
1、如果过滤出已知当前目录下lw中的所欲一级目录(提示:不包含lw目录下面的子目录及隐藏目录,即只能是一级目录)?
解答:
分析过程:完成此题,首先要想如何区分目录和文件。
1、根据颜色区分文件
2、ls -l结果中以d开头的是目录
3、通过给目录加标识,然后通过过滤标识,过滤出目录
4、通过find直接查找指定类型的文件
命令 ls -lF|grep /$ #F参数:给目录结尾加上'/',方便区分
ls -ld
ls -l | grep ^d
find . -type d -maxdepth 1 ! -name "\.*"
tree -Ld 1 #L显示深度,d表示显示目录
ls -l|awk "/^d/"
ls -l|sed -n "/^d/p"
2、一个目录中有很多文件(ls 查看时好多屏),想最快速度查看到最近更新的文件,如何看?
解答: ls -lrt /etc #这个命令执行后最新的文件会在最下面
-r:--reverse,当排序时,翻转排序
-t:--time,按照修改时间排序
-l:--list,使用一个长的列表格式
**让过滤的内容显示颜色**
grep www --color=auto test.txt
3、在配置Apache时执行了./configure --prefix=/application/apache2.2.17来编译Apache。在make install完成后,希望用户的访问路径更简单,需要给/application/apache2.2.17目录做一个软链接/application/apache,使得内部开发或管理人员通过/application/apache就可以访问到apache的安装目录/application/apache2.2.17下的内容,请你给出实现的命令。
解答:ln -s /application/apache2.2.17 /application/apache
4、已知Apache服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志,请问如何解决?
解答:
创建测试数据脚本:
for n in `seq 6`
do
date -s "12/2$n/17"
touch access_www_`(date +%F)`.log
done
date -s "12/26/17"
方法一:安装cronolog日志轮询软件,并在apache中配置如下形式按周轮询访问日志。
CustomLog "cronolog /app/logs/access_www_%w.log" combined
方法二:使用find的方式删除
(1)和xargs搭配用法
find /app/logs/ -type f -mtime +7 | xargs rm -f
(2)和exec搭配用法
find /app/logs/ -type f -mtime +7 -exec rm -f {} \;
5、调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做?
解答:tail -f /var/log/message
6、打印配置文件nginx.conf内容的行号及内容,该如何做?
解答:nginx和apache是不同的网页服务软件,是同类。
(1) nl nginx.conf
(2) cat -n nginx.conf
(3) less -N nginx.conf
(4) vi文件,然后执行:set nu
(5) grep -n . nginx.conf
7、装完系统后,希望让网络文件共享服务NFS,仅在3级别上开机自启动,该如何做?
解答:
方法一:全部关掉然后开启需要的级别的服务
chkconfig nfs off
chkconfig --list nfs
chkconfig --level 3 nfs on
8、/etc目录为linux系统的默认配置文件及服务启动命令的目录
a.请用tar打包/etc整个目录(打包及压缩)
b.请用tar打包/etc整个目录(打包及压缩,但排除/etc/services文件)
c.请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)
解答:
a. tar zcvf etc.tar.gz /etc
b.
(1) tar zcvf etc.tar.gz --exclude=/etc/services /etc
(2) tar zcvfX etc.tar.gz /etc/services /etc
c. tar zxvf etc.tar.gz -C /tmp/
**生产场景案例**
如何把一个外层目录下所有包含mybaby的目录(可能目录的子目录的子目录还有mybaby目录)都打包出来。
要求:解压打包后的目录结构不能改变
解答:tar -czvf mybaby.tar.gz `find . -type d -name mybaby`
9、执行echo "hello,everyone,yeah,hi,man,mapper,good" > test.txt后,打印出"yeah mapper"。
解答:
(1) awk '{print $3" "$6}' test.txt
(2) cut -d "" -f3,6 test.txt
(3) cut -c 16-19,28-33 test.txt
10、如何查看/etc/services文件有多少行?
解答:
(1) wc -l 直接查看文件行数
(2) cat -n /etc/services | tail -1
(3) awk '{print NR}' /etc/services
(4) sed -n "$=" /etc/services | tail -1
(5) grep -n $ /etc/services | tail -1
[命令总结]
tar 打包命令
-z:--gzip,--ungzip.调用gzip来压缩归档文件,与-x联用时调用ungzip完成解压缩。
-c:--create.建立新的归档文件。
-v:--verbose.处理过程中输出相关信息。
-f:--file.对普通文件操作。
-x:--extract.从归档文件中解出文件。
-j:--bzip2.用GNU的bzip2压缩文件或解压。
-C:--directory DIR.指定目录进行操作,如解压到指定目录。
--exclude PATTERN:排除不需要处理的文件或目录。
-X,--exclude-from FILE:指定文件列表的形式排除不需要处理的文件或目录。
cut 切分命令
-d:指定分隔符
-f:数字选列
-c:按字符切割
tr 替换命令
命令示例:tr "," "" #将逗号替换为空