第1章 PATH

1.1 PATH 存放的是linux下命令的路径(位置)

[root@oldboyedu50-lnb ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

1.2 linux启动过程

开机自检(BIOS

MBR引导

GRUB菜单

加载内核

运行init进程

读取/etc/inittab配置文件

执行/etc/rc.d/rc.sysinit脚本

执行/etc/rc.d/rc脚本

启动mingetty进程

1.3 linux执行命令过程

1.是否是别名

2.PATH中找命令是否存在

1).提示

command not found

2).执行

实例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-tree

[root@oldboyedu50-lnb /oldboy]# tree -dL 1

.

├── ext

├── test

├── xiaodong

├── xiaofan

└── xingfujie

5 directories

方法2-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 "."

.

[root@oldboyedu50-lnb /oldboy]# find -maxdepth 1 -type d ! -name "."

./xiaodong

./xiaofan

./test

./ext

./xingfujie

方法3 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

方法4 第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

方法5 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/

方法6 *目录标记

[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-2 /etc/目录为linux系统的默认的配置文件及服务启动命令的目录

a. 请用tar打包/etc整个目录(打包及压缩)。

b. 请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)。

c. 请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)。

1.创建压缩包

tar zcvf /tmp/etc.tar.gz /etc/

#z gzip 通过gzip 软件压缩

#c create 创建包

#v verbose 显示过程

#f file 指定文件

2.查看压缩包内容

tar ztf /tmp/etc.tar.gz

#t list 显示压缩包内容

3.解压

tar zxf etc.tar.gz

#x extract 解压

[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/

[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文件)。

[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

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

这个提示原因: 防止解压的时候覆盖源文件。

实例1-3 假如当前目录是/etc/sysconfig/network-scripts/

cd - 进入到上一次所在的位置

An argument of - is equivalent to $OLDPWD.

cd - === cd $OLDPWD

cd . 进入当前目录

cd .. 进入上一级目录

cd ~ 进入当前目录的家目录

实例1-4 按照时间顺序查看文件

ls -lrt

#-r 逆序

#-t 按照修改时间

调试系统服务时,希望能实时查看系统日志/var/log/secure的更新,如何做?

-F == -f --try 如果文件不存在 会不断重试

tail -f /var/log/secure

[root@oldboy50-01 ~]# ll -t

total 52

-rw-r--r--. 1 root root 10 Jul 17 04:28 oldboy.log

-rw-r--r--. 1 root root 56 Jul 16 18:42 *.sh

drwxr-xr-x. 3 root root 4096 Jul 15 01:48 oldboy

-rw-------. 1 root root 1160 Jul 14 23:41 anaconda-ks.cfg

-rw-r--r--. 1 root root 21736 Jul 14 23:41 install.log

-rw-r--r--. 1 root root 5890 Jul 14 23:38 install.log.syslog

实例1-5 打印配置文件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

方法1 cat

[root@oldboyedu50-lnb /oldboy]# cat -n nginx.conf

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

方法2 vim

:set nu #显示行号

:set nonu #取消显示行号

方法3 awk

显示某一列

[root@oldboyedu50-lnb ~]# awk '{print NR,$1}' /oldboy/nginx.conf

1 stu01

2 stu02

3 stu03

4 stu04

5 stu05

6 stu06

7 stu07

8 stu08

9 stu09

10 stu10

显示/proc/mounts 文件的行号和第1列和第3列

awk '{print NR,$1,$3}' /proc/mounts

方法4 grep -n

grep -n "." nginx.conf

. 正则表达式 任意一个字符

-n 显示行号

方法5 nl

number of lines

nl nginx.conf

方法6 sed

= 显示行号

实例1-6 已知nginx服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近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

-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-7 找出/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-8 linux系统运行级别一般为0-6,请分别写出每个级别的含义。

1) 0-6

2)

runlevel

3)

init

实例1-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

实例1-10 10 linux系统中查看中文,但是乱码了,请问如何解决乱码问题?

乱码原因:

如何排查:

如何解决:

实例1-11 已知如下命令及结果:

[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”字符串,请再给出命令.

方法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

[root@oldboyedu50-lnb /oldboy]# echo 123123|tr "123" "abc"

abcabc

[root@oldboyedu50-lnb /oldboy]# echo 112233|tr "123" "abc"

aabbcc

方法3 tr+cut

tr 1对1的替换

[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 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

方法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

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

实例1-12 显示 /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

实例1-13 如何查看/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

统计总数

统计出 /etc目录下面 以.conf结尾的文件的数量

[root@oldboyedu50-lnb /oldboy]# find /etc/ -type f -name "*.conf" | wc -l

195

实例1-14 过滤出/etc/services 文件包含33061521两数字所在的行的内容。

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

第2章 vmware 经典故障:

该虚拟机似乎正在使用中。

如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。

配置文件: G:\VMware\模板机01\老男孩教育50-模板机01.vmx

方法1.重启计算机

方法2.通过everything 搜索 .lck 删除 虚拟机名称.lck 目录 重启vmware