25.centos7基础学习与积累-011-课前考试二-命令练习

从头开始积累centos7系统运用

大牛博客:https://blog.51cto.com/yangrong/p5

 

取IP地址:

6的命令:ifconfig eth0

7的命令

[root@python01 ~]# ip addr show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:2f:38:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.200/24 brd 192.168.50.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe2f:3884/64 scope link
       valid_lft forever preferred_lft forever

[root@python01 ~]# ip addr show eth0|sed -n '3p'
    inet 192.168.50.200/24 brd 192.168.50.255 scope global eth0

[root@python01 ~]# ip addr show eth0|awk 'NR==3'
    inet 192.168.50.200/24 brd 192.168.50.255 scope global eth0

[root@python01 ~]# ip addr show eth0|awk 'NR==3 {print $2}'
192.168.50.200/24

[root@python01 ~]# ip addr show eth0|awk 'NR==3 {print $2}'|awk -F  "/" '{print $1}'
192.168.50.200

1.如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包括oldboy目录下面目录的

子目录及隐藏目录,即只能是一级目录)?

正则表达式:

解答:

分析过程:要完成此题,我们首先要想如何区分目录和文件?

模拟测试数据:

[root@python01 ~]# mkdir oldboy
[root@python01 ~]# cd oldboy/
[root@python01 oldboy]# mkdir -p ext/oldboy test xiaodong xiaofan xingfujie

[root@python01 oldboy]# touch jeacen oldboy wodi.gz yingsui.gz

 思路思想方法:

1.根据颜色区分文件和目录。

2.ls-l输出结果中以d开头的就是目录。

Linux三剑客正则表达式:(只适用grep,sed,awk)正则表达式,对普通命令不适用(通配符)

^  以......开头,^d,意思是以d开头

$  以......结尾,/$,意思是以/结尾。

\  让原本有意义的字符脱掉马甲,还原它本身的含义。

.  代表任意一个字符。

.*  代表所有

[root@python01 oldboy]#  ls -l|grep "^d"
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext
drwxr-xr-x 2 root root  6 Jul 10 11:44 test
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie

3.ls-l输出结果中第二列数字大于1就是目录(文件没有硬链接的情况下是对的)。

awk默认是按照空格分割

[root@python01 oldboy]# ls -l | awk -F " " '{if($2>1) print$0}'
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext
drwxr-xr-x 2 root root  6 Jul 10 11:44 test
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie

[root@python01 oldboy]# ls -l | awk  '{if($2>1) print$0}'      
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext
drwxr-xr-x 2 root root  6 Jul 10 11:44 test
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie

4.通过给目录价标识,然后过滤标识,就是过滤出目录(ls -F或ls -p).

[root@python01 oldboy]# ls -p|grep "/$"
ext/
test/
xiaodong/
xiaofan/
xingfujie/

5.通过find直接查找指定类型的文件(-d就是目录)。

[root@python01 oldboy]# find ./ -maxdepth 1  -type d
./
./ext
./test
./xiaodong
./xiaofan
./xingfujie

[root@python01 oldboy]# find ./ -maxdepth 1  -type d ! -name "."
./ext
./test
./xiaodong
./xiaofan
./xingfujie

[root@python01 oldboy]# find ./* -maxdepth 1  -type d
./ext
./ext/oldboy
./test
./xiaodong
./xiaofan
./xingfujie

[root@python01 oldboy]# find ./ -maxdepth 2  -type d  
./
./ext
./ext/oldboy
./test
./xiaodong
./xiaofan
./xingfujie

 

[root@python01 oldboy]# ls -dl */
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext/
drwxr-xr-x 2 root root  6 Jul 10 11:44 test/
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong/
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan/
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie/

正则表达式的方法:

[root@python01 oldboy]# ls -l|sed -n '/^d/p'
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext
drwxr-xr-x 2 root root  6 Jul 10 11:44 test
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie

 

[root@python01 oldboy]# ls -l|awk '/^d/'    
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext
drwxr-xr-x 2 root root  6 Jul 10 11:44 test
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie

 

[root@python01 oldboy]# ls -lF|sed -n '/\/$/p'
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext/
drwxr-xr-x 2 root root  6 Jul 10 11:44 test/
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong/
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan/
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie/

 

[root@python01 oldboy]# ls -l|sed -n '/^d/p'
drwxr-xr-x 3 root root 20 Jul 10 11:44 ext
drwxr-xr-x 2 root root  6 Jul 10 11:44 test
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaodong
drwxr-xr-x 2 root root  6 Jul 10 11:44 xiaofan
drwxr-xr-x 2 root root  6 Jul 10 11:44 xingfujie

 

[root@python01 oldboy]# ls -a|grep "\."
.
..
wodi.gz
yingsui.gz

awk 过滤、输出内容,一门语言。NR行号。

  $1 第一列,  $2 第二列一次类推,但¥0表示一行,NF表示最后结尾一列

  -F 指定分隔符。  最牛逼的命令。

简单、易用、高效

https://blog.51cto.com/oldboy/1740750

[root@python01 oldboy]# awk 'NR==1 {print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@python01 oldboy]# awk -F ":" 'NR==1 {print $6}' /etc/passwd  
/root
[root@python01 oldboy]# awk -F ":" 'NR==1 {print $7}' /etc/passwd
/bin/bash
[root@python01 oldboy]# awk -F ":" 'NR==1 {print $NF}' /etc/passwd
/bin/bash

[root@python01 oldboy]# awk -F ":" 'NR==1 {print $1,$2,$NF}' /etc/passwd    
root x /bin/bash

 

find 查找与时间有关的参数:

-atime   n  #n为数字,意义在n天之前的【一天之内】被access过的档案

-ctime   n  #n为数字,意义在n天之前的【一天之内】被change过状态的档案

-mtime   n  #n为数字,意义在n天之前的【一天之内】被modification过的档案

 

-newer file    #file 为一个存在的档案,意思是说,只要档案比file还要新,就会别列出来

find ./ -type f -name ".log" -mtime +7|xargs rm -f

 

取反 !

取交集 -a (and)

取并集 -o (or)

 

2.假如当前目录

cd ~  回到root家目录

cd -   回到上一次的目录

原理是环境变量控制

[root@python01 oldboy]# env|grep -i oldpwd
OLDPWD=/root

3.一个目录中有很多文件(ls查看是好多屏),想最快速度查看到最近更新的文件。如何看?

解答:

ls -lrt /etc  #==>执行这个命令后最新的文件会在最下面。

-rw-r--r--   1 root root     1064 Jun 27 15:17 passwd
----------   1 root root      428 Jun 27 15:17 gshadow
-rw-r--r--   1 root root      542 Jun 27 15:17 group
----------   1 root root      775 Jun 27 15:17 shadow
-rw-r--r--.  1 root root     2892 Jul  8 15:03 bashrc
-rw-r--r--   1 root root     1930 Jul  8 15:03 profile
[root@python01 oldboy]# ls -lrt /etc

ls  list(列表)  列表目录文件 例子:ls /   列根/目录下目录和文件

  -l(long)长格式,-d(directorys)查看目录 -F给不同文件结尾加不同标识,

  不显示。-t按修改时间排序,-r反转排序,倒叙排序

屏蔽别名、并显示颜色

[root@python01 oldboy]# \ls -lrt --color=auto /etc

[root@python01 oldboy]# echo oldgirl >123.log
[root@python01 oldboy]# \grep oldgirl 123.log
oldgirl
[root@python01 oldboy]# \grep --color=auto oldgirl 123.log  
oldgirl

[root@python01 oldboy]# grep 3306 /etc/services
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL

 

4.在配置apache是执行了./configure --prefix=/application/apache2.2.17来编译apache,

在make install完成后,希望用户的访问路径更简单,需要给/application/apache2.2.17

目录做一个软链接/application/apache,使得内部开发或管理人员通过/application/apache

就可以访问到apache的安装目录/application/apache2.2.17下的内容,请你给出实现的命令。

(提示apache为一个httpd web服务)

ln -s /application/apache2.2.17  /application/apache

创建软链接

[root@python01 /]# mkdir -p /application/apache2.2.17
[root@python01 /]# ln -s /application/apache2.2.17  /application/apache
[root@python01 /]# ls -l /application/
total 0
lrwxrwxrwx 1 root root 25 Jul 12 09:12 apache -> /application/apache2.2.17
drwxr-xr-x 2 root root  6 Jul 12 09:12 apache2.2.17

5.已知apache服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,

现在要去只能保留近7天访问日志!请问如何解决?请给出解决办法或配置处理命令。

命令解释:

第一步:修改当前系统日期   date -s "2019/06/$n" 

第二步:创建log日志文件     touch access_www_$(date +%F).log

命令说明格式化日期date +%F

[root@python01 logs]# echo $(date +%F)
2019-06-14
[root@python01 logs]# echo $(date)
Fri Jun 14 00:04:18 CST 2019

[root@python01 ~]# mkdir -p /app/logs
[root@python01 ~]# cd /app/logs      
[root@python01 logs]# for n in `seq 14` ;do date -s "2019/06/$n";touch access_www_$(date +%F).log;done    
Sat Jun  1 00:00:00 CST 2019
Sun Jun  2 00:00:00 CST 2019
Mon Jun  3 00:00:00 CST 2019
Tue Jun  4 00:00:00 CST 2019
Wed Jun  5 00:00:00 CST 2019
Thu Jun  6 00:00:00 CST 2019
Fri Jun  7 00:00:00 CST 2019
Sat Jun  8 00:00:00 CST 2019
Sun Jun  9 00:00:00 CST 2019
Mon Jun 10 00:00:00 CST 2019
Tue Jun 11 00:00:00 CST 2019
Wed Jun 12 00:00:00 CST 2019
Thu Jun 13 00:00:00 CST 2019
Fri Jun 14 00:00:00 CST 2019
[root@python01 logs]# ls
access_www_2019-06-01.log  access_www_2019-06-04.log  access_www_2019-06-07.log  access_www_2019-06-10.log  access_www_2019-06-13.log
access_www_2019-06-02.log  access_www_2019-06-05.log  access_www_2019-06-08.log  access_www_2019-06-11.log  access_www_2019-06-14.log
access_www_2019-06-03.log  access_www_2019-06-06.log  access_www_2019-06-09.log  access_www_2019-06-12.log

 同步网络时间:

yum -y install ntp ntpdate

 ntpdate cn.pool.ntp.org

[root@python01 logs]# find /app/logs/   -type f -mtime +7 -name "*.log" |xargs \rm -f

[root@python01 logs]# find /app/logs/   -type f -mtime +7 -name "*.log" -exec \rm -f {} \;

[root@python01 logs]# \rm -f `find /app/logs/   -type f -mtime +7 -name "*.log"`

 

工作中可以做成定时任务删除

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

一边调试一边看日志:

[root@python01 logs]# tail -f /var/log/messages

tailf  /var/log/messages 效果一样

tail -F /var/log/messages 效果一样

开两个线程:

[root@python01 ~]# for n in `seq 1000` ;do echo $n >>/var/log/messages;sleep 1;done

[root@python01 logs]# tail -f /var/log/messages
Jun 11 00:00:00 python01 systemd: Time has been changed
Jun 12 00:00:00 python01 systemd: Time has been changed
Jun 13 00:00:00 python01 systemd: Time has been changed
Jun 14 00:00:00 python01 systemd: Time has been changed
Jun 14 00:01:01 python01 systemd: Started Session 43 of user root.
Jul 11 00:00:00 python01 systemd: Time has been changed
Jul 11 00:01:01 python01 systemd: Started Session 44 of user root.
Jul 11 08:56:29 python01 systemd: Time has been changed
Jul 11 09:01:01 python01 systemd: Started Session 45 of user root.
Jul 11 10:01:01 python01 systemd: Started Session 46 of user root.
1
2
3
4
5
6
7

7.打印配置文件nginx.conf内容的行号机内容,该如何做?

[root@python01 oldboy]# pwd
/root/oldboy

[root@python01 oldboy]# seq 20 >nginx.conf
[root@python01 oldboy]# cat nginx.conf

[root@python01 oldboy]# echo stu{01..20}|xargs -n 1 >nginx.conf
[root@python01 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
    11  stu11
    12  stu12
    13  stu13
    14  stu14
    15  stu15
    16  stu16
    17  stu17
    18  stu18
    19  stu19
    20  stu20

[root@python01 oldboy]# nl nginx.conf

grep  .点代表任意一个字符,把搜索到的任意一个字符加行号

[root@python01 oldboy]# grep -n ".*" nginx.conf

[root@python01 oldboy]# grep -n . nginx.conf
1:stu01
2:stu02
3:stu03
4:stu04
5:stu05
6:stu06
7:stu07
8:stu08
9:stu09
10:stu10
11:stu11
12:stu12
13:stu13
14:stu14
15:stu15
16:stu16
17:stu17
18:stu18
19:stu19
20:stu20

[root@python01 oldboy]# sed = nginx.conf |sed 'N;s/\n/ /'

vim 编辑文件:

设置行号  :set nu  取消行号   :set nonu

[root@python01 oldboy]# awk '{print NR,$0}' nginx.conf

[root@python01 oldboy]# less -N nginx.conf  

区别nl对应空行不计行号,其他的都对空行记行号。

 more命令:

查看大文件时:按页一次一屏,回车键时一次一行,空格一次一屏,不能回看前面的,

less命令:

查看大文件时:按页一次一屏,回车键时一次一行,空格一次一屏,上下键可以回看前面的一行,按b可以一次回退一屏。

 8.装完系统后,希望让网络文件共享服务NFS,仅在3级别上开机自启动,该如何做?

解答:什么是开机自启动,杀毒软件大家都知道,例如:360等每次开机都会自动起来,

在Linux下软件服务随系统启动而启动的配置。

第一种开机自启动的配置方法:可以把要启动的服务命令放在/etc/rc.local 里。

例如:

[root@python01 /]# ll /etc/init.d/network                
-rwxr-xr-x. 1 root root 7923 Aug 24  2018 /etc/init.d/network

编辑 vim /etc/rc.local 在最后一行添加红色字体的内容:

vim 快捷键  o  是进入到下一行的编辑模式

touch /var/lock/subsys/local
/etc/init.d/network

 

[root@python01 /]# netstat -luntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8870/sshd           
tcp6       0      0 :::21                   :::*                    LISTEN      10653/vsftpd        
tcp6       0      0 :::22                   :::*                    LISTEN      8870/sshd           
[root@python01 /]# systemctl stop vsftpd
[root@python01 /]# systemctl disable vsftpd
Removed symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service.
[root@python01 /]# netstat -luntp          
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8870/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      8870/sshd          

这个是7的设置

[root@python01 /]# systemctl list-unit-files|grep enabled
autovt@.service                               enabled
crond.service                                 enabled
getty@.service                                enabled
rsyslog.service                               enabled
sshd.service                                  enabled

6.的设置如:

chkconfig nfs off

chkconfig --list sshd

chkconfig --level 3 sshd off

chkconfig 的原理:

就是用软链接的方式:

 自己写的脚本开机自启动:

1.写脚本

[root@python01 rc3.d]# vim /etc/init.d/oldboyd      
echo I like lanlan and miaohong

[root@python01 rc3.d]# /etc/init.d/oldboyd start
-bash: /etc/init.d/oldboyd: Permission denied

2.可执行
[root@python01 rc3.d]# chmod +x /etc/init.d/oldboyd
[root@python01 rc3.d]# /etc/init.d/oldboyd start

I like lanlan and miaohong

 3.添加

[root@python01 rc3.d]# chkconfig --add oldboyd
service oldboyd does not support chkconfig

 

[root@python01 /]#  vim /etc/init.d/oldboyd  
#chkconfig:  35 56 27
#description:  oldboyd by eric at 28
echo I like lanlan and miaohong

 [root@python01 rc3.d]# chkconfig --add oldboyd

 

[root@python01 rc3.d]# chkconfig --list oldboyd

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

oldboyd         0:off   1:off   2:off   3:on    4:off   5:on    6:off

[root@python01 rc3.d]# chkconfig oldboyd off

 

[root@python01 rc3.d]# chkconfig --list oldboyd

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

oldboyd         0:off   1:off   2:off   3:off   4:off   5:off   6:off

 

[root@python01 rc3.d]# ll /etc/rc.d/rc3.d/|grep oldboyd
lrwxrwxrwx  1 root root 17 Jul 12 15:59 K27oldboyd -> ../init.d/oldboyd

lrwxrwxrwx  1 root root 17 Jul 12 15:59 K27oldboyd -> ../init.d/oldboyd
lrwxrwxrwx. 1 root root 20 May 24 23:25 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 May 24 23:25 S10network -> ../init.d/network

 

14.如何查看/etc/services文件有多少行?

[root@python01 data]# wc -l /etc/services
11176 /etc/services

[root@python01 data]# cat -n /etc/services |tail -1
 11176  matahari        49000/tcp               # Matahari Broker

用前面的方法后面接tail -1查看最后一行

wc命令:

-l(lines) 显示总行数

-L(length)打印行的长度 ,计算长度。

[root@python01 data]# wc -L /etc/services           
130 /etc/services

[root@python01 data]# echo oldboy|wc -L
6

[root@python01 data]# export LANG="en_US.UTF-8"

[root@python01 data]# export LANG="zh_CN.UTF-8"

 

[root@python01 data]# ps -ef|grep sshd         
root       8870      1  0 Jul09 ?        00:00:00 /usr/sbin/sshd -D
root       9882   8870  0 08:32 ?        00:00:01 sshd: root@pts/0,pts/1
root      10307   9884  0 11:58 pts/0    00:00:00 grep --color=auto sshd
[root@python01 data]# ps -ef|grep "/sshd"
root       8870      1  0 Jul09 ?        00:00:00 /usr/sbin/sshd -D
root      10352   9884  0 13:32 pts/0    00:00:00 grep --color=auto /sshd
[root@python01 data]# ps -ef|grep "/sshd"|grep -v grep
root       8870      1  0 Jul09 ?        00:00:00 /usr/sbin/sshd -D

使用wc统计进程数来确认该服务是否正常,过滤关键词的方式

[root@python01 data]# ps -ef|grep "/sshd"|grep -v grep|wc -l
1

[root@python01 data]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8870/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      8870/sshd           
[root@python01 data]# netstat -lntup|grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8870/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      8870/sshd           
[root@python01 data]# netstat -lntup|grep sshd|wc -l
2
[root@python01 data]# netstat -lntup|grep sshdd|wc -l
0

 

 

 

 

口试部分:

1.解释什么是GPL,GNU,自由软件

 

2.如何选择linux操作系统版本?

 

3.安装系统时如何给linux操作系统分区?

 

4.描述Linux系统的启动过程?

1.开机BIOS自检

2.MBR引导

  硬盘0柱面0磁道1扇区的前446byte.

3.grub引导菜单

  cat /etc/grub.conf

4.加载内核kernel

5.启动init进程

[root@python01 /]# ps -ef|grep init
root      11523  11351  0 10:20 pts/0    00:00:00 grep --color=auto init

6.读取inittab文件,执行rc.sysinit,rc等脚本

/etc/inittab

/etc/rc.d/rc.sysinit

/etc/rc.d/rc3.d/      <==文本模式

7.启动mingetty,进入系统登录界面

图片是用另存为的方式保存

5.请说出你知道的20个linux命令及作用

 

7.32位和64位系统的区别及如何选择?

 

8.什么是PATH环境变量,它有什么作用?

 

优化开机自启动服务:这个我比较熟悉

 

posted @ 2019-07-09 17:01  Eric.TSE  阅读(543)  评论(0编辑  收藏  举报