Linux基础练习

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

1.将用户mage被误删除的的家目录恢复,复制/etc/shadow到mage家目录中。并设置只有用户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.xz(Y表示年,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"

时间: 2024-10-09 02:27:10

Linux基础练习的相关文章

Linux基础命令(之一)详解

Linux基础命令(之一)详解 学习linux的朋友都知道,系统大多数操作都是命令行的操作方式,当然如今也有图形化界面的操作方式,但是多数情况下仍然使用命令的操作模式,所以命令的作用与用法是成为学好.学会Linux系统的必备前提,也是重点之一,所以今天来聊一聊一些基础命令的用法与其作用. 1.系统关机或重启命令(小白也必须要会的) shutdown (win 系统也有) 常用参数:shutdown -h (halt) 直接关机(关闭电源) shutdown -h  now[+10]    现在关

linux基础命令——tree

Linux基础命令--tree 编辑文章 -d :只显示目录,不显示其目录下的子文件 -L level:显示第几级 图片描述 显示以rc开头的 备份: 创建多级目录: -v:可以看过程

Linux基础之磁盘管理

 Linux基础之磁盘管理         关于Linux中磁盘管理我们应该从以下四个方面入手,去了解和学习磁盘管理的知识. 第一点 磁盘的结构--硬盘         硬盘的参数 结构:磁盘的盘片,磁头,马达(机械键盘) 类型:固态硬盘(SSB)和机械硬盘 接口:早期的IDE接口,现在的SATA,SCSI,SAS 还有容量,转速,传输速度,缓存等. 硬盘存储术语 head: 磁头 track: 磁道 cylinder: 柱面 secotr: 扇区  512bytes(字节) 第二点 磁盘的分区

Linux 基础入门----推荐课程

Linux 基础入门课程:https://www.shiyanlou.com/courses/1 很好的一门Linux基础课,精炼.简洁!推荐! 课程内容: 第1节 Linux 系统简介 https://www.shiyanlou.com/courses/1/labs/1/document 第2节 基本概念及操作 https://www.shiyanlou.com/courses/1/labs/2/document 第3节 用户及文件权限管理 https://www.shiyanlou.com/

1、linux基础知识

第一天linux基础知识 1:linux操作系统组成 linux内核+GNU工具=完整的类UNIX系统 GNU工具(GNU软件是通过GNU项目发布的软件,它是一种根据GNU软件包的README手册以及自由软件指南开发的软件,大多数GNU软件是免费分发的,但不是所有的都这样,然而,所有的GNU软件必须是自由软件.) 2:linux发行版  slackware debian  reehad  Gentoo等 3:linux哲学思想 一切皆文件(硬件也已文件的形式展现在操作系统中) 小型,单一用途程序

Linux基础知识题解答(五)

题目来自老男孩BLOG:http://oldboy.blog.51cto.com/2561410/1709569,比较适合新手,空余的时候做一下,可以巩固Linux基础知识,有不对的地方欢迎指正. (1)155729 -rw-r--r--.  1 root root   35 Oct 28 2011  oldboy 请解析上面的每一列内容 文件inode号,文件访问权限,硬链接数,文件所属用户,文件所属组,文件最后修改时间,文件名 (2)描述下硬链接和软连接的区别 1.硬链接原文件/链接文件共用

第九天:Linux基础命令(二)与 C编译过程

一:Linux基础命令:   1.find 命令 查找文件 如 find / -name hello    查找根目录下已hello命名的文件.   2.grep命令 字符串匹配 如 grep "lucy" * -R 递归查找文件中含有“lucy”字符串的文件   3.du命令 查看文件所占容量   4 . >   重定向 如 ls > savels     重定向ls的标准输出从屏幕到savels文件 5 . >>    附加 如 ls >> sa

Linux基础文本查看命令之 cat,tac,more,less,head,tail

在使用linux的过程中多多少少都会涉及到文本的操作,因此掌握一些文本操作的工具命令能大大的提高我们的工作效率. cat命令 cat命令的用途是链接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者是从标准输入读取内容并显示,它常与重定向符号配合使用. 1)命令格式 cat    [选项]    [FILENAME] 2)命令功能 将文件或标准输入组合输出到标准输出. 3)命令参数 -E:在每行结束处显示 $ -n:对输出的所有行编号 -s:不输出多行空行 4)常

Linux基础概念-----环境变量

Shell 环境变量 Shell也是应用程序,工作与用户模式 变量类型 整形 浮点型 字符型 布尔型 bash变量类型 本地变量:仅对当前Shell有效 局部变量:仅对局部代码段有效(函数) 环境变量:expor VAR_NAME=Value,对当前Shell及子Shell有效 位置变量:$1;$2 .... 特殊变量:$?;$!;$$ .... 查看环境变量 printenv export 查看所有变量 set bash的引号 双引号:弱引用,可以实现变量替换: 单引号:强引用,不替换,而显示

Linux基础概念-----Linux I/O重定向 ,管道

标准输入:键盘 标准输出:显示器 错误输出:显示器 FD:文件描述符:让程序可以文件交互,并且便于内核识别文件,打开的每一个文件都有一个描述符 程序在和文件交互式,通过文件描述符来进行交互,而非文件名,文件名是方便用户分别文件. Linux一切皆文件,所以标准输入,标准输出都有各自的文件描述符 标准输入描述符:0 标准输出描述符:1 标准错误输出描述符:2 将其默认数据流改为其他设备:IO重定向 输出重定向 > 覆盖重定向 >> 追加重定向 /dev/null  黑洞 只针对当前Shel