第 1 章 linux 启动过程
1.1 linux 启动过程
(1) 开机自检 (BIOS) 内存 cup 是否有问题(硬件检查)
(2) MBR 引导
(3) GRUB 菜单(选择不同的内核)
(4) 加载内核(kernel)
(5) 运行 init 进程(linux 里面的第一个进程, 初始化过程)
(6) 读取 / etc/inittab 配置文件(运行级别配置文件)
(7) 执行 / etc/rc.d/rc.sysinit 脚本(系统初始化脚本, 设置主机名, 设置 IP 地址)
(8) 执行 / etc/rc.d/rc 脚本(根据系统的云心级别, 再开机的时候启动不同的软件)
PATH
PATH 存放的是 linux 下命令的路径(位置)
- [root@oldboyedu50-lnb ~]# echo $PATH
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
1.2 linux 执行命令过程
1. 是否是别名
2. 在 PATH 中找命令是否存在
1). 提示
command not found
2). 执行
小结:
1.linux 启动过程
2.PATH 作用
PS1 LANG PATH (三个环境变量)
3.linux 执行命令过程
1.3 题 1 过滤 一级目录
##.1 如何过滤出已知当前目录下 oldboy 中的所有一级目录(提示: 不包含 oldboy 目录下面目录的子目录及隐藏目录, 即只能是第一级目录)?
创建环境
- mkdir /oldboy -p
- cd /oldboy
- mkdir ext/oldboy test xiaodong xiaofan xingfujie -p
touch jeacen oldboy wodi.gz yingsui.gz
1.3.1 方法 1-tree
- [root@oldboyedu50-lnb /oldboy]# tree -dL 1
- .
- ext
- test
- xiaodong
- xiaofan
- xingfujie
- 5 directories
- #-d 只显示目录
- #-L level 最多显示多少层
1.3.2 方法 2-find
- [root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d
- .
- ./xiaodong
- ./xiaofan
- ./test
- ./ext
- ./xingfujie
- #-maxdepth 最大的深度 最多显示多少层
1.3.3 方法 3-find
- [root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d
- .
- ./xiaodong
- ./xiaofan
- ./test
- ./ext
- ./xingfujie
查找点的目录
- [root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d -name "."
- .
不显示带点的目录, find 命令取反 find -maxdepth 1 -type d ! -name "."
- [root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d ! -name "."
- ./xiaodong
- ./xiaofan
- ./test
- ./ext
- ./xingfujie
- #! 排除 取反 非
1.3.4 方法 4 d 开头的
- [root@oldboyedu50-lnb /oldboy]# ll |grep "^d"
- drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext
- drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie
- [root@oldboyedu50-lnb /oldboy]# #^ 以.... 开头的行 三剑客使用 正则表达式
1.3.5 方法 5 第 2 列大于 1
- [root@oldboyedu50-lnb /oldboy]# ll |awk '$2>1'
- total 40
- drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext
- drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie
1.3.6 方法 6- ls
[root@oldboyedu50-lnb /oldboy]# ls -F 不同类型的文件 加上不同的标记 目录 /
alex.txt jeacen oldboy.txt test.sh t.sh.bak xiaodong/ xingfujie/
ext/ oldboy test/ t.sh wodi.gz xiaofan/ yingsui.gz
- [root@oldboyedu50-lnb /oldboy]# #-F 不同类型的文件 加上不同的标记 目录 /
- [root@oldboyedu50-lnb /oldboy]# ls -F |grep "/"
- ext/
- test/
- xiaodong/
- xiaofan/
- xingfujie/
- [root@oldboyedu50-lnb /oldboy]# ls -ld */
- drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext/
- drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test/
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong/
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan/
- drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie/
1.4 小结:
- tree find
- grep awk
- ls
1.5 题 1 压缩解压
1.6 经典故障
tar 命令经典故障 Removing leading `/' from member names
创建压缩包都见过这个提示吧?
- [root@oldboyedu50-lnb /oldboy]# tar zcf /tmp/etc.tar.gz /etc/
- tar: Removing leading `/' from member names
什么意思呢?
背后过程:
打包压缩过程中 文件或目录 绝对路径 ---->相对路径
打包的时候:
- /etc/host
- /etc/profile
压缩包中样子
- etc/host
- etc/profile
这个提示原因:
防止解压的时候覆盖源文件.
#12 /etc / 目录为 linux 系统的默认的配置文件及服务启动命令的目录
a. 请用 tar 打包 / etc 整个目录(打包及压缩).
c. 请把 a 点命令的压缩包, 解压到 / tmp 指定目录下(最好只用 tar 命令实现).
b. 请用 tar 打包 / etc 整个目录(打包及压缩, 但需要排除 / etc/services 文件).
windows 压缩 winrar / 好压 / 2345 压缩
linux 打包压缩 tar
- 1.7 #创建压缩包
- tar zcf /tmp/etc.tar.gz /etc/
- tar zcvf /tmp/etc.tar.gz /etc/
压缩之后的放在那里 目标
- #z gzip 通过 gzip 软件压缩
- #c create 创建包
- #v verbose 显示过程
- #f file 指定文件
- 1.7.1 #查看压缩包内容
- tar ztf /tmp/etc.tar.gz
- #t list 显示压缩包内容
- # 解压
tar etc.tar.gz 解压 zxf z 可以省略不写
#x extract 解压
压缩
tar zcf
查看
tar tf
解压
tar xf
显示压缩包信息
- [root@oldboyedu50-lnb /tmp]# ll /tmp/etc.tar.gz
- -rw-r--r-- 1 root root 9734648 Jul 20 01:41 /tmp/etc.tar.gz
- # 解压到 / opt 解压到指定位置
- [root@oldboyedu50-lnb /tmp]# tar xf /tmp/etc.tar.gz -C /opt/
-C 解压到指定位置
- [root@oldboyedu50-lnb /tmp]# ll /opt/
- total 12
- drwxr-xr-x. 2 root root 4096 Jul 11 01:16 data
- drwxr-xr-x 78 root root 4096 Jul 19 20:43 etc
- drwxr-xr-x. 2 root root 4096 Mar 26 2015 rh
b. 请用 tar 打包 / etc 整个目录(打包及压缩, 但需要排除 / etc/services 文件).
1.7.2 排除 / etc/services 文件
- [root@oldboyedu50-lnb /tmp]# tar zcf /tmp/etc-pai.tar.gz /etc/ --exclude /etc/services
- tar: Removing leading `/' from member names
排除后
- [root@oldboyedu50-lnb /tmp]# tar tf /tmp/etc-pai.tar.gz |grep services
- etc/init/readahead-disable-services.conf
排除前
- [root@oldboyedu50-lnb /tmp]# tar tf /tmp/etc.tar.gz |grep services
- etc/init/readahead-disable-services.conf
- etc/services
- tar zcf /tmp/etc-pai.tar.gz /etc/ --exclude /etc/services
--exclude-from name.txt 排除文件夹和文件
- name.txt
- oldboy.txt
- /oldboy/oldboy
打包压缩:
1. 创建
2. 查看
3. 解压
4. 解压到指定位置
5. 排除(了解)
#2 假如当前目录是
cd - 进入到上一次所在的位置
An argument of - is equivalent to $OLDPWD.
- #cd - === cd $OLDPWD
- cd .
- cp/mv
- cd ..
- cd ~ ==== cd
- #3.
- [root@oldboyedu50-lnb /tmp]# cd /etc/
- [root@oldboyedu50-lnb /etc]# touch oldboy.txt
- ls -lrt
- #-r 逆序
- #-t 按照修改时间
- #6 调试系统服务时, 希望能实时查看系统日志 / var/log/secure 的更新, 如何做?
- -f
-F == -f --try 如果文件不存在 会不断重试
- tail -f /var/log/secure
- tailf /var/log/secure
1.8 题 3 打印配置文件 nginx.conf
- #7 打印配置文件 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
- stu04
- stu05
- stu06
- stu07
- stu08
- stu09
- stu10
- [root@oldboyedu50-lnb /oldboy]# echo stu{01..10} |xargs -n1>nginx.conf
生成一列 然后追加到 nginx.conf 文件里面
1.8.1 方法 1 cat
- [root@oldboyedu50-lnb /oldboy]# cat -n nginx.conf -n 显示序号
- stu01
- stu02
- stu03
- stu04
- stu05
- stu06
- stu07
- stu08
- stu09
- stu10
1.8.2 方法 2 vim
- vim nginx.conf
- :set nu #显示行号
- #nu === number
- :set nonu #取消显示行号
1.8.3 方法 3 awk
显示某一列
- [root@oldboyedu50-lnb ~]# awk '{print NR,$1}' /oldboy/nginx.conf
- stu01
- stu02
- stu03
- stu04
- stu05
- stu06
- stu07
- stu08
- stu09
- stu10
NR 行号
$1 第 1 列
$2 第 2 列
$0 一整行内容
显示 / proc/mounts 文件的行号和第 1 列和第 3 列
awk '{print NR,$1,$3}' /proc/mounts
1.8.4 方法 4 grep -n
grep -n "." nginx.conf
. 正则表达式 任意一个字符
-n 显示行号
1.8.5 方法 5 nl number of lines
nl nginx.conf
1.8.6 方法 6 sed
- sed = nginx.conf
- sed '=' nginx.conf |xargs -n2
- [root@oldboyedu50-nlb ~]# sed '=' nginx.conf
- [root@oldboyedu50-nlb ~]# sed "=" nginx.conf
= 显示行号
小结:
- cat -n /vim (必会)
- grep awk (必会)
- nl sed
1.9 题 4
已知 nginx 服务的访问日志按天记录在服务器本地目录 / app/logs 下, 由于磁盘空间紧张, 现在要求只能保留最近 7 天访问日志! 请问如何解决? 请给出解决办法或配置或处理命令.
删除 7 天之前的日志
- mkdir -p /app/logs
- cd /app/logs
- for time in {01..20};do date -s "201805$time"; touch accesswww$(date +%F).log ;done
- date -s "20180520 00:00:00"
date 显示时间 修改时间
find
-mtime modify time 修改时间
- [root@oldboyedu50-lnb /app/logs]# find -mtime +7|xargs ls -l
- -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
- -rw-r--r-- 1 root root 0 May 4 00:00 ./access_www_2018-05-04.log
- -rw-r--r-- 1 root root 0 May 5 00:00 ./access_www_2018-05-05.log
- -rw-r--r-- 1 root root 0 May 6 00:00 ./access_www_2018-05-06.log
- -rw-r--r-- 1 root root 0 May 7 00:00 ./access_www_2018-05-07.log
- -rw-r--r-- 1 root root 0 May 8 00:00 ./access_www_2018-05-08.log
- -rw-r--r-- 1 root root 0 May 9 00:00 ./access_www_2018-05-09.log
- -rw-r--r-- 1 root root 0 May 10 00:00 ./access_www_2018-05-10.log
- -rw-r--r-- 1 root root 0 May 11 00:00 ./access_www_2018-05-11.log
- -rw-r--r-- 1 root root 0 May 12 00:00 ./access_www_2018-05-12.log
实例 1-1 找出 / 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 {} \;
实例 1-2 8 linux 系统运行级别一般为 0-6, 请分别写出每个级别的含义.
- 1) 0-6
- 2)
- runlevel
- 3)
- init
第 2 章 题 5
2.1 iptable
9 装完系统后, 希望让网络文件共享服务 NFS(iptables), 仅在 3 级别上开机自启动, 该如何做?
让 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
第 3 章 题 6
3.1 乱码字符集
linux 系统中查看中文, 但是乱码了, 请问如何解决乱码问题?
乱码原因: 字符集不同
如何排查: 查看字符集是否相同
如何解决: 修改字符集
第 4 章 题 7
4.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
a.现在需要从文件中过滤出 "oldboy" 和 "31333741" 字符串, 请给出命令.
b.如果需要从文件中过滤出 "oldboy,31333741" 字符串, 请再给出命令.
a.现在需要从文件中过滤出 "oldboy" 和 "31333741" 字符串, 请给出命令.
4.2 方法 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
4.3 方法 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 的替换
4.4 方法 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
-d 指定分隔符(菜刀)
-f 某一列
a.现在需要从文件中过滤出 "oldboy" 和 "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
4.5 方法 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}' oldboy.txt
- oldboy
4.6 方法 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
4.6.1 小结:
1.sed /tr + awk /cut 这两个必须会
2.awk
4.6.2 如果需要从文件中过滤出 "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
4.7 显示 /etc/passwd 第 1 列和第 3 列内容 要求格式显示为:
USER: 第 1 列内容 UID: 第 3 列内容
USER: 第 1 列内容 UID: 第 3 列内容
USER: 第 1 列内容 UID: 第 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
第 5 章 题 8
14 如何查看 / etc/services 文件的有多少行?
显示行号 只保留最后一行
- [root@oldboyedu50-lnb /oldboy]# wc /etc/services
- 10774 58108 641020 /etc/services
- [root@oldboyedu50-lnb /oldboy]# wc -l /etc/services
- 10774 /etc/services
5.1 统计总数
统计出 /etc 目录下面 以. conf 结尾的文件的数量
| 传递的是文字
|xargs 传递的是文件名
- [root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc -l
- 195
第 6 章 题 9
15 过滤出 / etc/services 文件包含 3306 或 1521 两数字所在的行的内容.
- egrep "3306 或 1521" /etc/services
- egrep "3306|1521" /etc/services
- 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
6.1 总结:
1.Linux 启动流程
2.PATH 作用
3. 查找 grep awk
4. 打包压缩 : 创建 查看 解压 解压到 xxx
5. 基础命令
6. 显示行号
第 7 章 vmware 经典故障:
该虚拟机似乎正在使用中.
如果该虚拟机未在使用, 请按 "获取所有权(T)" 按钮获取它的所有权. 否则, 请按 "取消(C)" 按钮以防损坏.
配置文件: G:\VMware \ 模板机 01 \ 老男孩教育 50 期 - 模板机 01.vmx.
方法 1. 重启计算机
方法 2. 通过 everything 搜索 .lck 删除 虚拟机名称. lck 目录 重启 vmware
来源: http://www.bubuko.com/infodetail-2698724.html