linux - 练习题 - 04

一、linux启动过程:

 
补充:root用户密码忘了,进到单用户操作;(GRUB菜单)

二、PATH环境变量:

什么是PATH环境变量,他有什么作用?
  1. 什么时环境变量
    1. 大写
    2. 在系统大部分地方都可以使用
  1. PATH含义    
                [root@oldboyedu01 ~]# env
                HOSTNAME=oldboyedu01
                ...
                ...
 
                常用: LANG  PATH 
                [root@oldboyedu01 ~]# echo $LANG
                en_US.UTF-8
                [root@oldboyedu01 ~]# echo $PATH
                /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  1. linux下面运行命令过程
    1. 输入命令
    2. 在PATH里面 路径进行查找
    3. 找到了就运行  
    4. 找不到 command not found 
 

三、过滤出已知当前目录下oldboy中的所有一级目录

前提:
mkdir /oldboy -p
cd /oldboy
mkdir ext/oldboy test xiaodong xiaofen xingfujie -p
touch jeacen oldboy wodi.gz yingsui.gz
检查:
tree  (yum install tree -y)

方法1:

[root@oldboyedu01 oldboy]# tree -dL 1 /oldboy/
/oldboy/
├── data
├── data1
├── ext
├── test
├── xiaodong
├── xiaofen
└── xingfujie
 
7 directories

方法2:

[root@oldboyedu01 oldboy]# find -maxdepth 1 -type d
.
./test
./xiaodong
./data1
./xiaofen
./ext
./xingfujie
./data
[root@oldboyedu01 oldboy]# find -maxdepth 1 -type d ! -name "."
./test
./xiaodong
./data1
./xiaofen
./ext
./xingfujie
./data

 方法3:

[root@oldboyedu01 oldboy]# ls -l |grep "^d"
drwxr-xr-x. 2 root root 4096 Jul 10 01:58 data
drwxr-xr-x. 2 root root 4096 Jul 10 01:58 data1
drwxr-xr-x. 3 root root 4096 Aug 22 21:28 ext
drwxr-xr-x. 2 root root 4096 Jul 10 00:32 test
drwxr-xr-x. 2 root root 4096 Aug 22 21:28 xiaodong
drwxr-xr-x. 2 root root 4096 Aug 22 21:28 xiaofen
drwxr-xr-x. 2 root root 4096 Aug 22 21:28 xingfujie

 方法4:

[root@oldboyedu01 oldboy]# ls -l |awk '$2>1'
total 44
drwxr-xr-x. 2 root root 4096 Jul 10 01:58 data
drwxr-xr-x. 2 root root 4096 Jul 10 01:58 data1
drwxr-xr-x. 3 root root 4096 Aug 22 21:28 ext
drwxr-xr-x. 2 root root 4096 Jul 10 00:32 test
drwxr-xr-x. 2 root root 4096 Aug 22 21:28 xiaodong
drwxr-xr-x. 2 root root 4096 Aug 22 21:28 xiaofen
drwxr-xr-x. 2 root root 4096 Aug 22 21:28 xingfujie

方法5:

[root@oldboyedu01 oldboy]# ls -F |grep '/'
data/
data1/
ext/
test/
xiaodong/
xiaofen/
xingfujie/
 

四、快速回到上一次的所在位置/目录 (cd -)

[root@oldboyedu01 tmp]# cd -
/oldboy
[root@oldboyedu01 oldboy]# cd -
/tmp
 

五、一个目录中有很多文件(ls查看时好多屏),想最快速度查看到最近更新的文件

[root@oldboyedu01 etc]# ls -lrt    # 逆序查询最近修改的文件  
...

六、保留最近7天访问日志

已知 apache/nginx 服务的访问日志按天记录在服务器本地目录 /app/logs 下,由于磁盘空间紧张,现在要求只能保留最近 7 天访问日志!请问如 何解决? 请给出解决办法或配置或处理命令。(提示:可以从 apache 服务配置上 着手,也可以从生成出来的日志上着手。)
 
前提:
mkdir -p /app/logs 
cd /app/logs 
for  time in  {01..20};do  date -s "201705$time"; touch access_www_$(date +%F).log ;done 
date -s "20170520"   # 设置系统的时间
 

方法一:find -type f -name "*.log" -mtime +7 |xargs ls -l

[root@oldboyedu01 logs]# ll
total 0
-rw-r--r--. 1 root root 0 May  1 00:00 access_www_2017-05-01.log
-rw-r--r--. 1 root root 0 May  2 00:00 access_www_2017-05-02.log
-rw-r--r--. 1 root root 0 May  3 00:00 access_www_2017-05-03.log
-rw-r--r--. 1 root root 0 May  4 00:00 access_www_2017-05-04.log
-rw-r--r--. 1 root root 0 May  5 00:00 access_www_2017-05-05.log
-rw-r--r--. 1 root root 0 May  6 00:00 access_www_2017-05-06.log
-rw-r--r--. 1 root root 0 May  7 00:00 access_www_2017-05-07.log
-rw-r--r--. 1 root root 0 May  8 00:00 access_www_2017-05-08.log
-rw-r--r--. 1 root root 0 May  9 00:00 access_www_2017-05-09.log
-rw-r--r--. 1 root root 0 May 10 00:00 access_www_2017-05-10.log
-rw-r--r--. 1 root root 0 May 11 00:00 access_www_2017-05-11.log
-rw-r--r--. 1 root root 0 May 12 00:00 access_www_2017-05-12.log
-rw-r--r--. 1 root root 0 May 13 00:00 access_www_2017-05-13.log
-rw-r--r--. 1 root root 0 May 14 00:00 access_www_2017-05-14.log
-rw-r--r--. 1 root root 0 May 15 00:00 access_www_2017-05-15.log
-rw-r--r--. 1 root root 0 May 16 00:00 access_www_2017-05-16.log
-rw-r--r--. 1 root root 0 May 17 00:00 access_www_2017-05-17.log
-rw-r--r--. 1 root root 0 May 18 00:00 access_www_2017-05-18.log
-rw-r--r--. 1 root root 0 May 19 00:00 access_www_2017-05-19.log
-rw-r--r--. 1 root root 0 May 20 00:00 access_www_2017-05-20.log
             
[root@oldboyedu01 logs]# find -type f -name "*.log" -mtime 7  # 前第7天的
./access_www_2017-05-13.log 
[root@oldboyedu01 logs]# find -type f -name "*.log" -mtime +7    # 7天之前的文件
./access_www_2017-05-07.log
./access_www_2017-05-06.log
./access_www_2017-05-05.log
./access_www_2017-05-08.log
./access_www_2017-05-02.log
./access_www_2017-05-09.log
./access_www_2017-05-10.log
./access_www_2017-05-01.log
./access_www_2017-05-11.log
./access_www_2017-05-04.log
./access_www_2017-05-12.log
./access_www_2017-05-03.log
[root@oldboyedu01 logs]# find -type f -name "*.log" -mtime +7 |xargs ls -l
-rw-r--r--. 1 root root 0 May  1 00:00 ./access_www_2017-05-01.log
-rw-r--r--. 1 root root 0 May  2 00:00 ./access_www_2017-05-02.log
-rw-r--r--. 1 root root 0 May  3 00:00 ./access_www_2017-05-03.log
-rw-r--r--. 1 root root 0 May  4 00:00 ./access_www_2017-05-04.log
-rw-r--r--. 1 root root 0 May  5 00:00 ./access_www_2017-05-05.log
-rw-r--r--. 1 root root 0 May  6 00:00 ./access_www_2017-05-06.log
-rw-r--r--. 1 root root 0 May  7 00:00 ./access_www_2017-05-07.log
-rw-r--r--. 1 root root 0 May  8 00:00 ./access_www_2017-05-08.log
-rw-r--r--. 1 root root 0 May  9 00:00 ./access_www_2017-05-09.log
-rw-r--r--. 1 root root 0 May 10 00:00 ./access_www_2017-05-10.log
-rw-r--r--. 1 root root 0 May 11 00:00 ./access_www_2017-05-11.log
-rw-r--r--. 1 root root 0 May 12 00:00 ./access_www_2017-05-12.log
 

方法二:ls -l $(find -type f -name "*.log" -mtime +7)

[root@oldboyedu01 logs]# ls -l $(find -type f -name "*.log" -mtime +7)
-rw-r--r--. 1 root root 0 May  1 00:00 ./access_www_2017-05-01.log
-rw-r--r--. 1 root root 0 May  2 00:00 ./access_www_2017-05-02.log
-rw-r--r--. 1 root root 0 May  3 00:00 ./access_www_2017-05-03.log
-rw-r--r--. 1 root root 0 May  4 00:00 ./access_www_2017-05-04.log
-rw-r--r--. 1 root root 0 May  5 00:00 ./access_www_2017-05-05.log
-rw-r--r--. 1 root root 0 May  6 00:00 ./access_www_2017-05-06.log
-rw-r--r--. 1 root root 0 May  7 00:00 ./access_www_2017-05-07.log
-rw-r--r--. 1 root root 0 May  8 00:00 ./access_www_2017-05-08.log
-rw-r--r--. 1 root root 0 May  9 00:00 ./access_www_2017-05-09.log
-rw-r--r--. 1 root root 0 May 10 00:00 ./access_www_2017-05-10.log
-rw-r--r--. 1 root root 0 May 11 00:00 ./access_www_2017-05-11.log
-rw-r--r--. 1 root root 0 May 12 00:00 ./access_www_2017-05-12.log
 

方法三:find -type f -name "*.log" -mtime +7 -exec ls -l {} \;

[root@oldboyedu01 logs]# find -type f -name "*.log" -mtime +7 -exec ls -l {} \;
-rw-r--r--. 1 root root 0 May  7 00:00 ./access_www_2017-05-07.log
-rw-r--r--. 1 root root 0 May  6 00:00 ./access_www_2017-05-06.log
-rw-r--r--. 1 root root 0 May  5 00:00 ./access_www_2017-05-05.log
-rw-r--r--. 1 root root 0 May  8 00:00 ./access_www_2017-05-08.log
-rw-r--r--. 1 root root 0 May  2 00:00 ./access_www_2017-05-02.log
-rw-r--r--. 1 root root 0 May  9 00:00 ./access_www_2017-05-09.log
-rw-r--r--. 1 root root 0 May 10 00:00 ./access_www_2017-05-10.log
-rw-r--r--. 1 root root 0 May  1 00:00 ./access_www_2017-05-01.log
-rw-r--r--. 1 root root 0 May 11 00:00 ./access_www_2017-05-11.log
-rw-r--r--. 1 root root 0 May  4 00:00 ./access_www_2017-05-04.log
-rw-r--r--. 1 root root 0 May 12 00:00 ./access_www_2017-05-12.log
-rw-r--r--. 1 root root 0 May  3 00:00 ./access_www_2017-05-03.log
 

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

[root@oldboyedu01 ~]# echo lilaoshi >>/var/log/secure
...  实时更新
 
[root@oldboyedu01 ~]# tail -f /var/log/secure
...  用户登录 注销 都可查看到
 
tail -f   # 显示文件的实时更新
tailf  == tail  -f 

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

前提:
root@oldboyedu01 oldboy]# echo stu{01..10}
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
[root@oldboyedu01 oldboy]# echo stu{01..10}|xargs -n1
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
[root@oldboyedu01 oldboy]# echo stu{01..10}|xargs -n1 >nginx.conf
[root@oldboyedu01 oldboy]# cat nginx.conf
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
 

方法一:cat

[root@oldboyedu01 oldboy]# cat nginx.conf
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
[root@oldboyedu01 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
 

方法二:vim :set nu

        vim ...  
        :set nu       # 显示行号
        :set nonu   #取消显示行号
 
 
[root@oldboyedu01 oldboy]# vim nginx.conf
  1 stu01
  2 stu02
  3 stu03
  4 stu04
  5 stu05
  6 stu06
  7 stu07
  8 stu08
  9 stu09
10 stu10
~                                                                                    
~                                                                                    
~                                                                                    
:set nu  
 
 
[root@oldboyedu01 oldboy]# vim nginx.conf
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
~                                                                                    
~                                                                                    
                                                                     
:set nonu     
  

方法三:grep

[root@oldboyedu01 oldboy]# grep -n "stu" nginx.conf
1:stu01
2:stu02
3:stu03
4:stu04
5:stu05
6:stu06
7:stu07
8:stu08
9:stu09
10:stu10
 
[root@oldboyedu01 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
 

方法四:awk

[root@oldboyedu01 oldboy]# awk '{print NR,$0}' nginx.conf
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10
 

方法五:sed

[root@oldboyedu01 oldboy]# sed '=' nginx.conf |xargs -n2
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10
 
小结:
  1. cat -n  ;  vi/vim  显示行号
  2. grep -n
  3. awk NR $0 print
 
 

九、linux系统运行级别一般为0-6,请分别写出每个级别的含义

0-6什么含义
          [root@oldboyedu01 logs]# cat /etc/inittab
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode    单用户模式
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11   图形化界面
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
 
如何修改运行级别  临时 永久   
init 3
/etc/inittab 
如何查看运行级别
runlevel
 
 

十、装完系统后,希望让网络文件共享服务NFS(iptables)防火墙,仅在3级别上开机自启动,该如何做?

chkconfig --level 3 iptables on
[root@oldboyedu01 logs]# chkconfig iptables on
[root@oldboyedu01 logs]# chkconfig |grep ipt
iptables           0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@oldboyedu01 logs]# chkconfig iptables off
[root@oldboyedu01 logs]# chkconfig |grep ipt
iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off
[root@oldboyedu01 logs]# chkconfig --level 3 iptables on
[root@oldboyedu01 logs]# chkconfig |grep ipt
iptables           0:off    1:off    2:off    3:on    4:off    5:off    6:off
 

十一、linux系统中查看中文,但是乱码了,请问如何解决乱码问题?

原因:
        linux使用的字符集与远程连接工具的不同
解决:
        方法一:推荐-修改xshell字符集
        方法二:修改系统的字符集
                1. 命令行:
                       export LANG=en_US.UTF-8
                2. 写入配置文件
[root@oldboyedu01 logs]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
 
                     cp /etc/sysconfig/i18n  /etc/sysconfig/i18n.bak
           echo 'LANG=en_US.UTF-8' >/etc/sysconfig/i18
     3.生效
            source /etc/sysconfig/i18n
 

十二、tar 命令的使用--->压缩,解压 压缩包 。。。 /etc/目录为linux系统的默认配置文件及服务启动命令的目录

    a.请用tar打包/etc整个目录(打包及压缩)
    b.请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)
    c.请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)
 
tar 创建 查看 解压 压缩包  
        z --- 通过gzip工具进行压缩
        c --- 表示create创建压缩包
        v --- 表示verbose 显示执行过程
        f --- 表示file 接上压缩包存放的位置
        t --- 表示list  显示压缩包的内容
        x --- 从tar包把文件提取出来
        -C -- 解压到指定目录
        --exclude=  排除指定文件
        
        tar zcvf /tmp/etc.tar.gz /etc/
            创建压缩包  压缩包存放的位置  压缩哪个文件/目录 ...

创建:   tar zcf 

[root@oldboyedu01 logs]# tar zcvf /tmp/etc.tar.gz /etc/   # zcvf  === zcf  
。。。
[root@oldboyedu01 tmp]# ll
total 9548
-rw-r--r--. 1 root root 9773122 Aug 24 00:57 etc.tar.gz
 

查看:tar tf

[root@oldboyedu01 tmp]# tar ztf /tmp/etc.tar.gz    # ztf === tf 
。。。
 

解压:tar xf 

[root@oldboyedu01 tmp]# tar zxvf etc.tar.gz   # zxvf === xf
。。。
 

解压到指定目录:tar xf etc.tar.gz -C /opt

[root@oldboyedu01 tmp]# tar xf etc.tar.gz -C /opt
。。。
 
打包文件,排除某个文件:tar zcf /tmp/etc-paichu.tar.gz /etc/ --exclude=/etc/services
[root@oldboyedu01 tmp]# tar zcf /tmp/etc-paichu.tar.gz /etc/ --exclude=/etc/services
。。。
            验证:
[root@oldboyedu01 tmp]# tar tf etc.tar.gz |grep services
etc/services
etc/init/readahead-disable-services.conf
[root@oldboyedu01 tmp]# tar tf etc-paichu.tar.gz |grep services
etc/init/readahead-disable-services.conf
 
小结:
  1. tar 打包压缩
  2. 创建压缩包 查看压缩包 解压 
  3. 解压到指定的文件夹
  4. 创建压缩包排除 
 

十三、已知如下命令及结果:

mkdir -p /oldboy
echo "I am oldboy,my qq is 31333741">/oldboy/oldboy.txt
a. 现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令
b.如果需要从文件中过滤出“oldboy, 31333741”字符串,请给出命令
 
[root@oldboyedu01 oldboy]# ll -lrt   # 逆序查看最近修改的文件
...
a. 现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令
前提:    
[root@oldboyedu01 oldboy]# cat oldboy.txt
I am oldboy, my qq is 31333741
 

方法一:sed-sed

[root@oldboyedu01 oldboy]# sed 's#I am##g' oldboy.txt | sed "s#, my qq is##g"
oldboy 31333741
 

方法二:sed+awk  / tr+awk

[root@oldboyedu01 oldboy]# sed 's#,# #g' oldboy.txt |awk '{print $3,$7}'
oldboy 31333741
          [root@oldboyedu01 oldboy]# tr "," " " <oldboy.txt |awk '{print $3,$7}'
oldboy 31333741
 

方法三:awk指定多个分隔符

           -F "[, ]"     表示以逗号或者空格作为菜单 分隔符
            
[root@oldboyedu01 oldboy]# cat oldboy.txt
I am oldboy, my qq is 31333741
[root@oldboyedu01 oldboy]# awk -F "," '{print $1}' oldboy.txt
I am oldboy
[root@oldboyedu01 oldboy]# awk -F "[, ]" '{print $3,$8}' oldboy.txt
oldboy 31333741
 
b.如果需要从文件中过滤出“oldboy, 31333741”字符串,请给出命令
方法:awk
[root@oldboyedu01 oldboy]# awk -F "[, ]" '{print $3","$8}' oldboy.txt
oldboy,31333741
 
小结:
  1. tr命令
  2. awk指定分隔符 指定多个分隔符
     

十四、如何查看/etc/services文件有多少行,查看进程是否在运行

[root@oldboyedu01 oldboy]# wc -l /etc/services
10774 /etc/services
 
屌丝去洗浴中心之路
    1. 查看22端口是否开启 telnet
    2. sshd远程连接是否在运行
ps -ef  (系统中正在运行的进行)
[root@oldboyedu01 ~]# ps -ef |grep "sshd"
        。。。
 
[root@oldboyedu01 ~]# ps -ef |grep "/sshd"
root       1553      1  0 Aug23 ?        00:00:00 /usr/sbin/sshd
root       3171   3105  0 04:42 pts/0    00:00:00 grep /ssh
[root@oldboyedu01 ~]# ps -ef |grep "/sshd"|wc -l    # 统计出现的次数
            2 
 

十五、过滤出/etc/services  文件包含3306或1521两数字所在的行的内容

方法:egrep == grep -E 
[root@oldboyedu01 ~]# 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
 

十六、命令行及shell中不加引号,加单引号和双引号的区别

单引号  所见即所得  
双引号  里面的特殊符号会被解析
[root@oldboyedu01 ~]# echo '$LANG $(hostname) `pwd`'
$LANG $(hostname) `pwd`
[root@oldboyedu01 ~]# echo "$LANG $(hostname) `pwd`"
en_US.UTF-8 oldboyedu01 /root
 
 
 
 
 
 
posted @ 2018-08-28 22:46  Alice的小屋  阅读(103)  评论(0编辑  收藏  举报