Day 12 第二关练习题下部
2018-07-24 17:26
323 查看
Day 12 第二关练习题下部
[root@oldboyedu50-lnb ~]# tar zcf /backup/conf.tar.gz /etc/hosts /etc/fstab
tar: Removing leading `/' from member names
[root@oldboyedu50-lnb ~]# tar xf /backup/conf.tar.gz -C /opt/
[root@oldboyedu50-lnb ~]# ll /opt/etc/
total 8
-rw-r--r-- 1 root root 805 Jul 10 18:21 fstab
-rw-r--r-- 1 root root 177 Jul 19 18:05 hosts
[root@oldboyedu50-lnb /oldboy]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@oldboyedu50-lnb /oldboy]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1
stu01
stu02
stu03
[root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1 >nginx.conf
stu01 stu01 stu01 stu01 stu01 stu01 stu01 stu01
stu02 stu02 stu02 stu02 stu02 stu02 stu02 stu02
stu03 stu03 stu03 stu03 stu03 stu03 stu03 stu03
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
:set nu #显示行号
#nu === number
:set nonu #取消显示行号
[root@oldboyedu50-lnb ~]# awk '{print NR,$1}' /oldboy/nginx.conf
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
NR 行号
$1 第1列
$2 第2列
$0 一整行内容
例如:
显示/proc/mounts 文件的行号和第1列和第3列
awk '{print NR,$1,$3}' /proc/mounts
. 正则表达式 任意一个字符
-n 显示行号
mkdir -p /app/logs
cd /app/logs
for time in {01..20};do date -s "201805$time"; touch access_www_$(date +%F).log ;done
date -s "20180520 00:00:00" (循环)
date 显示时间 修改时间
-mtime modify time 修改时间
[root@oldboyedu50-lnb /app/logs]# find -mtime +7|xargs ls –l (+7=7天之前,-7=最近七天)
-rw-r--r-- 1 root root 0 May 1 00:00 ./access_www_2018-05-01.log
-rw-r--r-- 1 root root 0 May 2 00:00 ./access_www_2018-05-02.log
-rw-r--r-- 1 root root 0 May 3 00:00 ./access_www_2018-05-03.log
方法1
find /app/logs/ -type f -name "*.log" -mtime +7|xargs ls -l
方法2
ls -l $(find /app/logs/ -type f -name "*.log" -mtime +7)
ls -l `find /app/logs/ -type f -name "*.log" -mtime +7`
方法3
find /app/logs/ -type f -name "*.log" -mtime +7 -exec ls -l {} \;
1 单用户模式 2 多用户模式(无法使用NFS) 3 完全多用户模式/命令行模式/文本模式(工作默认环境) 4 待开发 5 x11 桌面模式 6 重启 (不能设置)
[root@oldboyedu50-lnb ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off
[oldboy@test ~]$ cat oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt |awk '{print $3,$6}'
oldboy 31333741
方法2 tr+awk
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt |awk '{print $3,$6}'
oldboy 31333741
tr sed命令阉割版
[root@oldboyedu50-lnb /oldboy]# echo 123123|tr "123" "abc"
abcabc
[root@oldboyedu50-lnb /oldboy]# echo 112233|tr "123" "abc"
aabbcc
[root@oldboyedu50-lnb /oldboy]# #tr 1对1的替换
方法3 tr+cut
[root@oldboyedu50-lnb /oldboy]# cut -d " " -f2,3,4 oldboy.txt
am oldboy,myqq is
[root@oldboyedu50-lnb /oldboy]# cut -d " " -f2-5 oldboy.txt
am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt |cut -d " " -f3,6
oldboy 31333741
cut
-d 指定分隔符(菜刀)
-f 某一列
[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# awk -F "," '{print $2}' oldboy.txt
myqq is 31333741
#-F 指定分隔符(菜刀)
#-F指定多个分隔符
[root@oldboyedu50-lnb /oldboy]# awk -F "[, ]" '{print $3,$6}' oldboy.txt
Oldboy 31333741
方法5 sed sed
[root@oldboyedu50-lnb /oldboy]# ca时t oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g' oldboy.txt
oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g' oldboy.txt |sed 's#,myqq is##g'
oldboy 31333741
2.awk
b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.
“引号里面输入什么就显示什么”
[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3"*_*"$NF}' oldboy.txt
oldboy*_*31333741
[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3":)"$NF}' oldboy.txt
oldboy:)31333741
[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3","$NF}' oldboy.txt
oldboy,31333741
USER:第1列内容 UID:第3列内容
[root@oldboyedu50-lnb /oldboy]# awk -F":" '{print "USER:"$1,"UID:"$3}' /etc/passwd
USER:root UID:0
USER:bin UID:1
USER:daemon UID:2
USER:adm UID:3
USER:lp UID:4
USER:sync UID:5
[root@oldboyedu50-lnb /oldboy]# awk -F":" '{print "USER:"$1,"UID:"$3}' /etc/passwd|column –t (排列整齐)
USER:root UID:0
USER:bin UID:1
USER:daemon UID:2
USER:adm UID:3
USER:lp UID:4
10774 58108 641020 /etc/services
[root@oldboyedu50-lnb /oldboy]# wc -l /etc/services
10774 /etc/services
|xargs 传递的是文件名
[root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc -l
195
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
| 扩展正则表达式 egrep == grep -E
例题一
1.1 把/etc/hosts /etc/fstab 文件打包压缩到/backup目录conf.tar.gz
1.2 解压到/opt目录下面
1.3 检查 /opt/etc/hosts /opt/etc/fstab
[root@oldboyedu50-lnb ~]# mkdir -p /backup[root@oldboyedu50-lnb ~]# tar zcf /backup/conf.tar.gz /etc/hosts /etc/fstab
tar: Removing leading `/' from member names
[root@oldboyedu50-lnb ~]# tar xf /backup/conf.tar.gz -C /opt/
[root@oldboyedu50-lnb ~]# ll /opt/etc/
total 8
-rw-r--r-- 1 root root 805 Jul 10 18:21 fstab
-rw-r--r-- 1 root root 177 Jul 19 18:05 hosts
例题二
2.1打印配置文件nginx.conf内容的行号及内容,该如何做?
[root@oldboyedu50-lnb /oldboy]# #{1..5} 生成序列[root@oldboyedu50-lnb /oldboy]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@oldboyedu50-lnb /oldboy]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1
stu01
stu02
stu03
[root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1 >nginx.conf
stu01 stu01 stu01 stu01 stu01 stu01 stu01 stu01
stu02 stu02 stu02 stu02 stu02 stu02 stu02 stu02
stu03 stu03 stu03 stu03 stu03 stu03 stu03 stu03
2.1.1方法1 cat
[root@oldboyedu50-lnb /oldboy]# cat -n nginx.conf1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
2.1.2方法2 vim
最后输入:set nu #显示行号
#nu === number
:set nonu #取消显示行号
2.1.3方法3 awk
显示某一列[root@oldboyedu50-lnb ~]# awk '{print NR,$1}' /oldboy/nginx.conf
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
NR 行号
$1 第1列
$2 第2列
$0 一整行内容
例如:
显示/proc/mounts 文件的行号和第1列和第3列
awk '{print NR,$1,$3}' /proc/mounts
2.1.4方法4 grep -n
grep -n "." nginx.conf. 正则表达式 任意一个字符
-n 显示行号
2.1.5方法5 nl number of lines
nl nginx.conf2.1.6方法6 sed
sed = nginx.conf =显示行号2.2小结:
2.2.1cat -n /vim (必会)
2.2.2 grep awk (必会)
2.2.3nl sed
例题三
3.1已知nginx服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志!请问如何解决? 请给出解决办法或配置或处理命令。
3.1.1删除7天之前的日志
准备环境mkdir -p /app/logs
cd /app/logs
for time in {01..20};do date -s "201805$time"; touch access_www_$(date +%F).log ;done
date -s "20180520 00:00:00" (循环)
date 显示时间 修改时间
-mtime modify time 修改时间
[root@oldboyedu50-lnb /app/logs]# find -mtime +7|xargs ls –l (+7=7天之前,-7=最近七天)
-rw-r--r-- 1 root root 0 May 1 00:00 ./access_www_2018-05-01.log
-rw-r--r-- 1 root root 0 May 2 00:00 ./access_www_2018-05-02.log
-rw-r--r-- 1 root root 0 May 3 00:00 ./access_www_2018-05-03.log
3.1.2找出/app/logs 下面以.log结尾的7天之前的文件 显示详细信息(ls -l) (3种方法)
find /app/logs/ -type f -name "*.log" -mtime +7方法1
find /app/logs/ -type f -name "*.log" -mtime +7|xargs ls -l
方法2
ls -l $(find /app/logs/ -type f -name "*.log" -mtime +7)
ls -l `find /app/logs/ -type f -name "*.log" -mtime +7`
方法3
find /app/logs/ -type f -name "*.log" -mtime +7 -exec ls -l {} \;
3.2linux系统运行级别一般为0-6,请分别写出每个级别的含义。
3.2.1-1) 0-6 级别的含义
0 关机(不能设置)1 单用户模式 2 多用户模式(无法使用NFS) 3 完全多用户模式/命令行模式/文本模式(工作默认环境) 4 待开发 5 x11 桌面模式 6 重启 (不能设置)
3.2.2-2) 运行 runlevel
3.2.3-3) 修改 init
例题四
4.1装完系统后,希望让网络文件共享服务NFS(iptables),仅在3级别上开机自启动,该如何做?
4.1让iptables开机自启动?
[root@oldboyedu50-lnb ~]# chkconfig --level 3 iptables on[root@oldboyedu50-lnb ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off
例题五
5.1linux系统中查看中文,但是乱码了,请问如何解决乱码问题?
5.1.1乱码原因:
5.1.2如何排查:
5.1.3如何解决:
例题六
6.1已知如下命令及结果:
[oldboy@test ~]$ mkdir /oldboy ; echo "I am oldboy,myqq is 31333741">/oldboy/oldboy.txt[oldboy@test ~]$ cat oldboy.txt
I am oldboy,myqq is 31333741
6.1.1a.现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令.
方法1 sed+awk[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed 's#,# #g' oldboy.txt |awk '{print $3,$6}'
oldboy 31333741
方法2 tr+awk
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt |awk '{print $3,$6}'
oldboy 31333741
tr sed命令阉割版
[root@oldboyedu50-lnb /oldboy]# echo 123123|tr "123" "abc"
abcabc
[root@oldboyedu50-lnb /oldboy]# echo 112233|tr "123" "abc"
aabbcc
[root@oldboyedu50-lnb /oldboy]# #tr 1对1的替换
方法3 tr+cut
[root@oldboyedu50-lnb /oldboy]# cut -d " " -f2,3,4 oldboy.txt
am oldboy,myqq is
[root@oldboyedu50-lnb /oldboy]# cut -d " " -f2-5 oldboy.txt
am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# tr "," " " <oldboy.txt |cut -d " " -f3,6
oldboy 31333741
cut
-d 指定分隔符(菜刀)
-f 某一列
6.1.2b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.
方法4 awk[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# awk -F "," '{print $2}' oldboy.txt
myqq is 31333741
#-F 指定分隔符(菜刀)
#-F指定多个分隔符
[root@oldboyedu50-lnb /oldboy]# awk -F "[, ]" '{print $3,$6}' oldboy.txt
Oldboy 31333741
方法5 sed sed
[root@oldboyedu50-lnb /oldboy]# ca时t oldboy.txt
I am oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g' oldboy.txt
oldboy,myqq is 31333741
[root@oldboyedu50-lnb /oldboy]# sed 's#I am ##g' oldboy.txt |sed 's#,myqq is##g'
oldboy 31333741
6.2小结:
1.sed /tr + awk /cut2.awk
b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.
“引号里面输入什么就显示什么”
[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3"*_*"$NF}' oldboy.txt
oldboy*_*31333741
[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3":)"$NF}' oldboy.txt
oldboy:)31333741
[root@oldboyedu50-lnb /oldboy]# awk -F"[ ,]" '{print $3","$NF}' oldboy.txt
oldboy,31333741
例题七
7.1显示 /etc/passwd 第1列和第3列内容 要求格式显示为:
USER:第1列内容 UID:第3列内容USER:第1列内容 UID:第3列内容
[root@oldboyedu50-lnb /oldboy]# awk -F":" '{print "USER:"$1,"UID:"$3}' /etc/passwd
USER:root UID:0
USER:bin UID:1
USER:daemon UID:2
USER:adm UID:3
USER:lp UID:4
USER:sync UID:5
[root@oldboyedu50-lnb /oldboy]# awk -F":" '{print "USER:"$1,"UID:"$3}' /etc/passwd|column –t (排列整齐)
USER:root UID:0
USER:bin UID:1
USER:daemon UID:2
USER:adm UID:3
USER:lp UID:4
例题八
8.1如何查看/etc/services文件的有多少行?
8.1.1显示行号 只保留最后一行
[root@oldboyedu50-lnb /oldboy]# wc /etc/services10774 58108 641020 /etc/services
[root@oldboyedu50-lnb /oldboy]# wc -l /etc/services
10774 /etc/services
例题九
9.1统计总数 ——统计出 /etc目录下面 以.conf结尾的文件的数量
|(管道) 传递的是文字|xargs 传递的是文件名
[root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc -l
195
例题十
10.1过滤出/etc/services 文件包含3306或1521两数字所在的行的内容。
[root@oldboyedu50-lnb /oldboy] # egrep "3306 | 1521" /etc/servicesmysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
| 扩展正则表达式 egrep == grep -E
10.2总结:
10.2.1显示行号
10.2.2find命令mtime *3 种
10.2.3运行级别 启动流程
10.2.4linux显示乱码排查过程
10.2.5awk取出某一列 指定分隔符
10.2.6其他命令
10.3预习:
10.3.1linux文件属性
10.3.2软连接与硬链接区别
10.3.3磁盘空间不足及排查解决过程
相关文章推荐
- day 11 第二关练习题
- day12 第二关练习题(下部)
- 005 12 A DAY With Cell There are over 5 Billion cell phones in use on the the planet RIGHT NOW How
- day 12
- day 12:Java中的Object类和String类
- day_1_12 JavaWeb系列学习总结之cookie&session
- day_12_信号处理、进程间通信
- Day 12-02 表单的重复提交&验证码重复提交
- <<The C Programming Language>>学习之路-练习题参考答案 1-12
- linux学习12练习题及答案
- day_12-acm 第二周bfs+dfs大总结
- Practice Every Day_12(精确搜索和模糊搜索)
- JAVA基础 day12 线程间通信 多线程一些常用方法
- 2012-12-12 - 12-14 11gR2 "2 Day + Performance Tuning Guide" page 52 - 168
- Java练习题12 继承
- linux基础unit12练习题
- 【备战秋招Day 3】经典面试题9-12及在线编程题7-9答案
- The Knowledge of Linux-.-Day12
- 手机卫士day12
- 搜索练习题L-12