Linux基础练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础练习相关的知识,希望对你有一定的参考价值。

    在平常接触Linux时,小编遇到一些简单典型的基础题,在这里就给大家列出来几个,仅供大家平常的练习。  

    1.将用户mage被误删除的的家目录恢复,复制/etc/shadowmage家目录中。并设置只有用户wang可以读取/home/mage/shadow。

        rm -rf /home/mage

        cp -a /etc/skel/ /home/mage

        chown -R mage.mage /home/mage

        cp /etc/shadow /home/mage

        setfacl -m u:wang:rx /home/mage/

        setfacl -m u:wang:r /home/mage/shadow

        su - wang

        cat /home/mage/shadow

    2.下载编译安装httpd 2.4最新版本,写出安装过程

        et apr-1.5.0.tar.bz2 apr-util-1.5.2.tar.bz2 httpd-2.4.10.tar.bz2

        yum install pcre-deve

    安装apr

        tar -xvf apr-1.5.0.tar.bz2

        cd apr-1.5.0/

        ./configure --prefix=/usr/local/apr

        make

        make install

    安装apr-util

        tar -xvf apr-util-1.5.2.tar.bz2

        cd apr-util-1.5.2/

        ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

        make

        make install

    安装apache

        tar -xvf httpd-2.4.10.tar.bz2

        cd httpd-2.4.10

        ./configure  --prefix=/usr/local/rjnnhttp

                             --sysconfdir=/etc/rjnnhttp

                             --with-pcre

                             --with-apr=/usr/local/apr

                             --with-apr-util=/usr/local/apr-util

        make

        make install

        vim /etc/profile.d/rjnn.sh export PATH=$PATH:/usr/local/rjnnhttp

        vim /etc/man_db_conf

        MANDATORY_MANPATH           /usr/local/rjnnhttp/man

        links

    3.过滤ifconfig命令结果中所有大于0且小于255的三位数。

    (1)ifconfig |grep -E ‘\<(([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘

    (2)ifconfig |grep -E ‘\<((1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\>‘

    4.误删除/lib64/libc.so.6系统库文件,如何恢复之,实验说明。

    ##删除 libc.so.6

        1、查找libc.so.6   ldd `which ls`

        2、rm  -rf/lib64/libc.so.6 

       ##如何恢复

        3、重启计算机,在开机界面的时候按下一次esc键,设置为从光盘引导启动。

    ##注:此处linux的环境是面vmware 虚拟机中。别的机器光盘启动方式不同。

    4、进入光盘求援模式,6 7的界面选项根据实际情况选择。

    6、复制/lib64/libc.so.6 /mnt/sysimage/lib64

    7、关闭selinux

    vim /etc/sysconfig/selinux

    将SELINUX=enforcing 改成 SELINUX=disabled

    8、重启计算机

        5.计算2+4+6+…+96+98+100之和。

            echo {2..100..2} | tr " " "+" | bc

        6.yum源的配置与使用。创建一个本地yum源

     base源指向https://mirrors.aliyun.com/centos/7/os/x86_64/

     epel源指向https://mirrors.aliyun.com/epel/7Server/x86_64/

            vim /etc/yum.repos.d/CentOS.repo

            [base]

            name=base

            baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/

            gpgcheck=0

            enabled=1

            [epel]

            name=epel

            baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/

            gpgcheck=0

            enabled=1

      7.编写脚本/root/bin/sysinfo.sh显示当前主机系统信息,包括主机名,操作系统版本,内核版本,CPU型号,内存大小,硬盘分区。

            #!/bin/bash

            #

            echo "HOSTNAME=`uname -n`"

            echo "IPADDR=`ifconfig |grep inet|head -1|tr -s " " |cut -d " " -f3`"

            echo "OPERATION=`uname -o`"

            echo "RELEASE=`uname -r`"

            echo "CPUTYPE=` lscpu |grep "Model name" `"

            echo "MEMSIZE=`free`"

            echo "DISKINFO=`lsblk`"

    8.统计/var/log/httpd/access.log日志访问频繁前十的地址,并从大到小排序。

            cat /var/log/httpd/access.log | cut -d" " -f1 | sort | uniq -c | sort -nr  | head -10

    9.误删除rpm包命令,如何恢复之,实验说明 。

      [[email protected] ~]# which rpm

        /usr/bin/rpm

      [[email protected] ~]# rm -rf /usr/bin/rpm

    1、与上题一样进入救援模式

    2、mkdir /mnt/cdrom

    3、mount /dev/cdrom /mnt/cdrom

          ##挂载光盘 

    4、安装rpm软件, rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-17.el7.x86_64.rpm              --force  --root=/mnt/sysimage

    5、重新启用计算机

    10.编写脚本/root/bin/sysinfo.sh显示当前主机系统信息,包括主机名,操作系统版本,内核版本,CPU型号,内存大小,硬盘分区

        #!/bin/bash

        #

        echo "HOSTNAME=`uname -n`"

        echo "IPADDR=`ifconfig |grep inet|head -1|tr -s " " |cut -d " " -f3`"

        echo "OPERATION=`uname -o`"

        echo "RELEASE=`uname -r`"

        echo "CPUTYPE=` lscpu |grep "Model name" `"

        echo "MEMSIZE=`free`"

        echo "DISKINFO=`lsblk`"

    11.给root用户定义别名命令vimnet,相当于vim /etc/sysconfig/network-scripts/ifcfg-ens33,并使root执行history命令时,显示每个命令执行的具体时间。

        echo "alias vimnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736‘" >>              /root/.bashrc

        . /root/.bashrc

        vimnet

        echo ‘HISTTIMEFORMAT="%F %T"‘ >>/root/.bashrc

        . /root/.bashrc

        history

    12.开启两个终端,将终端1 中输入命令的执行结果输出,并同时输出到终端2 。

        [[email protected] ~]# tty

        /dev/pts/0

        [[email protected] ~]# date | tee  /dev/pts/1

        Sat Jun 17 19:23:39 CST 2017

        ## 另一个终端

        [[email protected] ~]# Sat Jun 17 19:23:32 CST 2017

    13.编写/root/bin/excute.sh,实现与用户交互,判断用户给予的参数是否可读,可写,可执行

        [[email protected] ~]# excute.sh /etc/passwd

        Can read

        Can write

        [[email protected] ~]# excute.sh /bin/ls    

        Can read

        Can write

        Can execute

        [[email protected] ~]# cat /root/bin/excute.sh

        #Author: jin.ren

        #QQ: 1922006891

        #Version: 3.0

        #Date :2017-06-13-19-39-34

        #test

        [ -r $1 ] && echo "Can read"

        [ -w $! ] && echo "Can write"

        [ -x $1 ] && echo "Can execute"

    14.写一个脚本,让它可以传递两个参数后,实现对该参数的加、减、乘、除运算并输出运算后的值

    [[email protected] ~]# vim /root/bin/let.sh

    [[email protected] ~]# let.sh

    Please input Number133

    Please input Number22

    33+2=35

    33-2=31

    33*2=66

    33/2=16

    [[email protected] ~]# cat /root/bin/let.sh

    #Author: jin.ren

    #QQ: 1922006891

    #Version: 3.0

    #Date :2017-06-13-19-44-55

    #operation

    read -p "Please input Number1" NUM1

    read -p "Please input Number2" NUM2

    ADD=$[$NUM1+$NUM2]

    SUB=$[$NUM1-$NUM2]

    RID=$[$NUM1*$NUM2]

    DIV=$[$NUM1/$NUM2]

    echo "$NUM1+$NUM2=$ADD"

    echo "$NUM1-$NUM2=$SUB"

    echo "$NUM1*$NUM2=$RID"

    echo "$NUM1/$NUM2=$DIV"

    15.指出软链接与硬链接的异同之处(至少四处)。

硬链接:1相于当给文件增加了一个新名在添加链接时会增加链接数,其inode

            点数不会增加

   2支持绝对路径与相对路径

   3不能跨分区来创建链接

   4硬链接不能对目录来创建

   5硬链接链接到文件被删除时,依旧可以通过链接文件来访问被删文件的

     数据

软链接:1链接到一个文件时,相当于创建了一个新的文件,inode结点会增加

         2软链接链接到的文件被删除时,不可以通过链接文件来访问被删的数据

         3软链接支持跨分区链接

         4软链接支持绝对路径与相对路径但要注意的是不要相对于当前的工作目录

    16.取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用两种方法实现

    echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |rev|cut -d"/" -f1|rev

    echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |grep  -o ‘[^/]*$‘

basename /etc/sysconfig/network-scripts/ifcfg-ens33

   17.复制/etc/ssh/sshd_config /tmp/中并更名为sshd_config.bak。/tmp/sshd_config.bak文件中所有以非#号开头与包含空白字符的行保存至/tmp/sshd_config中。

    [[email protected] ~]# cp /etc/sshd_config /tmp/sshd_config.bak

cat /tmp/sshd_config.bak  |grep -Ev ‘^#|^[[:space:]]*$‘>/tmp/sshd_config

    18.编写/root/bin/baketc.sh 查找/etc/目录中超过1天未修改的文件,将其压缩备份至/bakup目录。若之前没有备份过则备份之,若存在的备份文件超过了2分钟则备份之,否则退出。备份的格式为YYYY-MM-DD-hh-mm-ss.xzY表示年,M表示月,D表示日,h表示时,m表示分,s表示秒)

    #!/bin/bash

    # Author: Jin.Ren

    # Date: 20170611

    #

    DATE=`date +"%Y-%m-%d-%H-%M-%S"`

    WCFILE=`ls /backup | wc -l`

    [ -d /backup ] || mkdir /backup

    [ $WCFILE -eq 0 ] && find /etc/ -mtime +1 >> /dev/null | xargs tar     -    Jcvf /backup/$DATE\.tar.xz

    FILE=$[`ls -lt /backup/* | cut -d" " -f9 | head -1 |tr -dc     [:digit:]`+200]

    echo "new file old time add two minute was: $FILE"

    NOW=$[`date  +"%Y%m%d%H%M%S"`]

    echo "NOW system time is: $NOW"

    [ $FILE -lt $NOW ] && find /etc/ -mtime +1 | xargs tar -Jcvf     /backup/$DATE\.tar.xz

    19.对/etc/目录,分别执行命令,实现以下功能

    (1)按从大到小顺序显示文件列表

    (2)只显示隐藏文件

    (3)只显示目录

    (4)按mtime时间显示文件列表

    (5)按atime时间显示文件列表

    1)ls -Sl /etc/

    2)ls -d /etc/.*

    3)ls -ld /etc/

    4)ls -lt /etc

    5)ls -lut /etc

    20.编写/root/bin/wcfile.sh统计/etc目录中的目录的个数,文件的个数,并求出/etc/目录中的目录和文件个数的总和

    [[email protected] ~]# wcfile.sh

    file number was 3099

    directory number was 729

    file and directory was 3828

    [[email protected] ~]# cat /root/bin/wcfile.sh

    #Author: jin.ren

    #QQ: 1922006891

    #Version: 3.0

    #Date :2017-06-17-21-02-52

    #wc etc file

    FILE=`find /etc/ -not -type d | wc -l`

    DIR=`find /etc/ -type d | wc -l`

    AND=$[$FILE+$DIR]

    echo "file number was $FILE"

    echo "directory number was $DIR"

    echo "file and directory was $AND"

 



以上是关于Linux基础练习的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础2-4 基础权限练习

Linux基础练习

linux基础命令练习1

linux基础命令练习1

linux基础命令练习题

linux基础练习8