一转眼都快两周没更新了,最近实在太忙了,这两周的时间断断续续的把L010学完了,短短的15节课,确是把前10节的课程全部的运用一遍,从笔记到整理,再到重新理解,最后发布到微博,也确实提升了一些综合性能,从一个问题转而可以想到思路了,这个是我非常开心的,好了,那么就开始下面的总结。

L010本堂课并非讲述新内容,而是从10多道题入手来熟悉之前的命令,那么我就以题的形式来写本次的总结。

第一题:
100M的空间创建1K的文件,可以创建多少个?如果创建1M的文件可以创建多少个?

答:假设硬盘为4k对齐,那么一个1k的文件就占用1个block和一个inode的为4.25k,就是100*1024/4.25=24094个。
那么一个1M的文件就会占用3个block和一个inode为12.25k,就是100*1024/12.25=8359个
换句话说,系统中的block的数量比inode多。那么就可以判断出,1k的文件数就等于inode的数量

相关的命令:

df -i 查询inode数量
df -h硬盘余量

答:

查询某块硬盘的inode和block的尺寸和数量(我们以第一块硬盘的第二个分区为例)

dumpe2fs /dev/sda2 | grep "Block count"  //block的数量
dumpe2fs /dev/sda2 | grep "Block size" //block的尺寸 dumpe2fs /dev/sda2 | grep "Inode count" //inode的数量
dumpe2fs /dev/sda2 | grep "Inode size" //indoe的尺寸

第二题:
如何过滤出已知当前目录下的ceshi中的所有一级目录(提示:不包含ceshi目录下面目录的子目录及隐藏目录,即只能是一级目录)?

答:

首先需要创建环境

[root@moban kh]# for n in `seq `;do mkdir -p "$n";done
[root@moban kh]# ls [root@moban kh]# mkdir -p //
[root@moban kh]# mkdir -p //
[root@moban kh]# pwd
/root/kh
[root@moban kh]# tree /root/kh/
/root/kh/
├──
├──
├──
│   └──
│   └──
├──
│   └──
│   └──
├──
├──
├──
├──
├──
├──
├──
└──
[root@moban kh]# for n in `seq `;do touch "$n.txt";done

开始做题:

用find:

[root@moban kh]# find ./ -type d | awk -F "/" '{print $2}'

[root@moban kh]# find ./ -maxdepth  -type d    //find -maxdepth 为查找的目录深度参数
./
./
./
./
./
./
./
./
./
./
./
./
./

用ll:

[root@moban kh]# ls -l | grep ^d | awk '{print $9}'

用tree:

用tree:
[root@moban kh]# tree -Ld //L是深度,d为目录的属性
.
├──
├──
├──
├──
├──
├──
├──
├──
├──
├──
├──
└──

用sed:

[root@moban kh]# ll | sed -n /^d/p | awk '{print $9}'

第三题:
去除ssd配置文件中的注释部分

答:

[root@moban kh]# grep -v ^# /etc/ssh/sshd_config        //方法1

[root@moban kh]# cat /etc/ssh/sshd_config | grep -v ^#    //方法2

第四题:
去除ssd配置文件中的注释部分以及空行部分

[root@moban ~]# grep -Ev "^#|^$" /etc/ssh/sshd_config  //方法1
[root@moban ~]# egrep -v "^#|^$" /etc/ssh/sshd_config //方法2

第五题:
一个目录中有很多文件(ls查看时好多屏),想最快速度查看到最近更新的文件,该如何查看?

答:

[root@moban kh]# ls -lrt    //r为反、倒 t为time,时间

第六题:
让egrep搜索的内容填加颜色

答:

[root@moban kh]# echo "alias egrep='egrep --color=auto'" >>/etc/profile
[root@moban kh]# source /etc/profile

第七题:
在配置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 连接(link)常与-s搭配 做软连接使用
ln -s [源文件或目录] [目标文件或目录]

参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

答:

第一步创建做题环境

[root@moban ~]# mkdir -p /root/ti/application/apache2.2.17/

这样,目录就已搭建好

下面:

[root@moban ti]# ln -s /root/ti/application/apache2.2.17/ /root/ti/application/apache    //前面是实际路径,后面的路径为软连接路径

查看一下软件链接:

[root@moban ti]# ll /root/ti/application/
total
lrwxrwxrwx root root Mar : apache -> /root/ti/application/apache2.2.17/
drwxr-xr-x root root Mar : apache2.2.17

因为是第一次做软连接,所以在原连接目录下创建一文件,去软连接里看看会不会看到,哈哈

[root@moban ~]# cd /root/ti/application/apache
[root@moban apache]# ls
[root@moban apache]# pwd
/root/ti/application/apache
[root@moban apache]# touch /root/ti/application/apache2.2.17/.txt
[root@moban apache]# ls
.txt

成功,然后还有一点,我试了一下,软连接不一定跟源路径走,比如源连接:/root/ti/application/apache2.2.17/,那么我的连接路径可以也设置为/root/apache

第八题:
已知apache服务的访问日志按天记录在服务器本地目录/app/logs下。由于磁盘空间紧张,现在要求只能保留最近3天访问日志
请问如何解决?请给出解决办法或者配置或处理命令。(一种是从apache服务配置上着手,也可以从生成出来的日志上着手)

Date 时间
参数“
-s 设置时间;根据字符串来设置日期与时间。字符串前后必须加上双引号。
>date -s //设置当前时间,只有root权限才能设置,其他只能查看。
>date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
>date -s 01:01:01 //设置具体时间,不会对日期做更改
>date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
>date -s “01:01:01 20080523″ //这样可以设置全部时间
>date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
>date -s “20080523 01:01:01″ //这样可以设置全部时间

答:

这道题其实难做的是环境(对于这个阶段的我来说)

先做环境把

[root@moban log]# for n in `seq `;do date -s "03/$n/16";touch access_www_`(date +%F)`.log;done        //一直分不清符号的使用,如``和‘’和"",不过通过这个程序知道了用这个``的时候要是中间是需要执行的程序,
关于%F,为日期的意思:同%Y-%m-%d

然后做题

[root@moban log]# find ./  -type f -mtime + -exec rm -f {} \;  //注意“\”前要有空格

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

也可以放到循环列表中

[root@moban oldboy]# echo ‘*  * * * find ./ -type f -name "*.log" -mtime + -exec rm -f {} \; >> /dev/null >&’ >> /var/spool/cron/root    // -exec rm -f {} \; 可以改成-delete

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

tail  //用于显示指定文件末尾内容,常用查看日志文件。 常用-f参数可以方便的查阅正在改变的日志文件

参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

答:

tail -f /var/log/messages

第十题:
装完系统后,希望网络文件共享服务sshd,仅在3级别上开机自启动,该如何去做。

chkconfig --list
chkconfig --level
chkconfig [应用名] on/off //各模式下的全部开启或者关闭

答:

[root@moban log]# chkconfig --list sshd            //查看在各level下的sshd开启状态
sshd :off :off :on :on :off :off :off
[root@moban log]# chkconfig sshd off //关闭所有level下的sshd
[root@moban log]# chkconfig --list sshd
sshd :off :off :off :off :off :off :off
[root@moban log]# chkconfig --level sshd on //sshd开启level 3模式
[root@moban log]# chkconfig --list sshd
sshd :off :off :off :on :off :off :off

第十一题:
linux系统运行级别一般为0-6,请分别写出每个级别的含义。

答:

0 - halt //关机模式
1 - Single user mode //单一用户模式
2 - Mutiuser,without NFS //无NFS用户的多用户模式
3 - Full multiuser mode //命令行模式
4 - unused //空
5 - X11 //图形化
6 - reboot //重启机器 init 6

第十二题:
/etc/目录为linux系统的默认的配置文件及服务启动命令的目录
a.请用tar打包/etc整个目录(打包及压缩)
b.请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)
c.请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)

tar  压缩命令

参数:

tar 参数 [压缩包的路径+文件名] [要压缩文件的名称和地点]
参数:
-c 创建
-z gz格式的压缩文件
-j bz格式的压缩文件
-v 显示过程中的文件名
-f 使用文档名,在f过后要立即加文档或路径
-x 解压
-t 查看文档内容
-X 从文档中读取排除压缩包外的目录名
-C 指定解压到某地址的参数,后面接路径
--eclude FILE 排除某个文件或者目录

答:

a.[root@moban /]# tar -czvf etc.tar.gz etc/
b.[root@moban /]# tar --exclude etc/services -czvf etc1.tar.gz etc/
c.[root@moban etc]# tar -xzvf etc.tar.gz -C /tmp

-X和-C参数运用:

[root@moban tmp]# echo var > tar.txt
[root@moban tmp]# echo tmp >> tar.txt
[root@moban tmp]# cat tar.txt
[root@moban tmp]# tar -X tar.txt -czvf etc2.tar.gz etc/
[root@moban tmp]# tar -xzvf etc2.tar.gz -C /tmp/
[root@moban tmp]# find ./ -type d -name tmp -o -name var

第十三题:
已知下面的命令及结果:
[root@moban ~]# echo "I am oldboy,myqq is 49000448" >> oldboy.txt
[root@moban ~]# cat oldboy.txt
I am oldboy,myqq is 49000448
a.现在需要从文件中过滤出“oldboy”和“49000448”字符串,请给出命令
b.如果需要从文件中过滤出“oldboy,49000448”字符串,请再给出命令

cut  //剪切数据

参数

-b 字节
-c 字符
-d 设定分隔符
-f 分区域显示,和-d一起使用,-d设定分隔符后加-f显示区域

参数使用(参数通用,不仅仅只-b):
-b -3 //-3为前3个字符,包括第三个
-b 3- //为第三个以后的字符,包括第三个
-b 3 //第三个字符
-b 3-5//第三到第五个字符,包括3和5字符
-b 3-5,6-7 //多个用,连接,从小到大排列,就算6-7,3-5也是从3-5开始

答:

a.[root@moban tmp]# cut -b -,- cut.txt
oldboy
b.[root@moban tmp]# cut -b -,- cut.txt
oldboy,

另:
已知下面的命令及结果:
[root@moban ~]# echo "I am oldboy myqq is 49000448" >> oldboy.txt
[root@moban ~]# cat oldboy.txt
I am oldboy,myqq is 49000448
a.现在需要从文件中过滤出“oldboy”和“49000448”字符串,请给出命令
b.如果需要从文件中过滤出“oldboy,49000448”字符串,请再给出命令

tr "," " "  //把,替换成空格

答:

cut方法

a.[root@moban tmp]# cut -d " " -f , cut.txt
oldboy
b.[root@moban tmp]# cut -d " " -f , cut.txt|tr " " "," //把输出的结果中空格字符换成逗号
oldboy,

awk方法

a.[root@moban tmp]# awk -F " " '{printf $3 $6}' cut.txt
oldboy49000448
b.[root@moban tmp]# awk -F " " '{printf $3","$6}' cut.txt
oldboy,

sed方法(算是吧,为了巩固sed s###g这个替换法)

a.[root@moban tmp]# sed s#","#" "#g cut.txt | awk -F " " '{printf $3 $6}'   //用sed sg把逗号换成空格
oldboy49000448

第十四题:
如何查看/etc/services文件的有多少行?

cat //查看 命令

参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting

wc 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

参数:
-c 统计字节数。
-l 统计行数。----------常用
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。

答:

)vi /etc/services
:set nu
)less -N /etc/ssh/sshd_config
)cat -n /etc/services
)nl /etc/services
)[root@moban tmp]# grep -n " " ./etc/services

第十五题:
过滤出/etc/services 文件包含3306或1521两数字的行的内容

grep 过滤

参数
-n 显示行号

答:

[root@moban tmp]# grep -En "3306|1521" /etc/services
:mysql /tcp # MySQL
:mysql /udp # MySQL
:ncube-lm /tcp # nCube License Manager
:ncube-lm /udp # nCube License Manager

[root@moban tmp]# egrep -n "3306|1521" /etc/services
:mysql /tcp # MySQL
:mysql /udp # MySQL
:ncube-lm /tcp # nCube License Manager
:ncube-lm /udp # nCube License Manager

其他一些设计到的内容

正则表达式:
^的意思是以...开头,例如^oldboy表示以oldboy开头的
与`^`意思相反的是[^*],非以*为开头的
$的意思是以....结尾,例如oldboy$表示以oldboy字符串为结尾。
^$意思是空行
\ 让一个字符脱掉马甲,还原他本来的意义。([root@moban ceshi]# sed -n '/\//p' 1.txt //过滤斜线)

find参数 -maxdepth 1 //数字1表示1层 查找的目录深度参数

小结:
find
!的作用取反 -a为and表示并且(查找多个默认为and) -o为or两遍有一个成立即可。

[root@moban ceshi]# find ./ -type f -o -name .txt
[root@moban ceshi]# find ./ -type f -a -name .txt

L010 linux命令及基础手把手实战总结的更多相关文章

  1. Linux命令工具基础04 磁盘管理

    Linux命令工具基础04 磁盘管理 日程磁盘管理中,我们最常用的有查看当前磁盘使用情况,查看当前目录所占大小,以及打包压缩与解压缩: 查看磁盘空间 查看磁盘空间利用大小 df -h -h: huma ...

  2. SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

  3. L014-第三关课前linux命令及基础知识考试手把手实战解答小节

    又是一周啊,以后保持一周一个微博吧. 这是一个堂解答考试题的课,那么就以题目来展开吧! 1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求用命令获得644这 ...

  4. linux 命令行基础

    命令行基础 一些名词 「图形界面」 「命令行」 「终端」 「shell」 「bash」 安装使用 Windws: 安装git, 打开 gitbash Linux 打开终端 Mac 打开终端 基本命令 ...

  5. Linux命令行基础操作

    目录 1.打开终端命令行 2.常用快捷键 2.1 tab键 2.2 Ctrl+c组合键 2.3 Ctrl+d组合键 2.4Ctrl+Shift+c组合键和Ctrl+Shift+v组合键 2.5图形界面 ...

  6. Linux命令工具基础02 文件及目录管理

    文件及目录管理 文件管理不外乎文件或目录的创建.删除.查询.移动,有mkdir/rm/mv 文件查询是重点,用find来进行查询:find的参数丰富,也非常强大: 查看文件内容是个大的话题,文本的处理 ...

  7. Linux命令行基础

    常用命令 命令 功能 pwd 打开当前所在的文件目录 ls 查看当前文件夹下的文件(不包括隐藏文件) ls -a 查看当前文件夹下的文件(包括隐藏文件) ls -al 查看当前文件夹下的文件(包括隐藏 ...

  8. linux命令1——基础

    Rm 删除命令 Rm [选项][文件] 删除一个文件或者目录 选项:r 递归的删除文件夹及其子文件,f 忽略不存在的文件(不提示) (2)rm删除目录下所有文件,但不删除目录 >>rm - ...

  9. Linux实战教学笔记04:Linux命令基础

    第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...

随机推荐

  1. [BJOI2018]治疗之雨

    题目 我还没疯 发现如果我们将血量抽象成点,一轮操作抽象成图上的一条边,我们如果能求出每一条边的概率,我们就能搞一下这道题 假设我们求出了这个图\(E\),设\(dp_i\)表示从\(i\)点到达\( ...

  2. 【转】spring boot web相关配置

    spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spri ...

  3. mybatis分页PageHelper插件的使用

    1.jar包, 2.改mybatis的配置文件,加上这段配置: <plugins><plugin interceptor="com.github.pagehelper.Pa ...

  4. tomcat启动后报错Bad version number in .class file (unable to load class oracle.jdbc.OracleDriver)

    对于tomcat启动后报错: 错误原因:tomcat使用的jdk和eclipce的编译用的jdk版本不同. 解决办法: 1.首先确定tomcat的jdk版本: 2.点开tomcat查看jdk版本. 使 ...

  5. Oracle 常用脚本

    ORACLE 默认用户名密码 sys/change_on_install SYSDBA 或 SYSOPER 不能以 NORMAL 登录,可作为默认的系统管理员 system/manager SYSDB ...

  6. iOS 从零到一搭建组件化项目框架

    随着公司业务需求的不断迭代发展,工程的代码量和业务逻辑也越来越多,原始的开发模式和架构已经无法满足我们的业务发展速度了,这时我们就需要将原始项目进行一次重构大手术了.这时我们应该很清晰这次手术的动刀口 ...

  7. NodeJ Koa2 安装使用 reeber

    介绍 Koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的 ...

  8. WSO2 API Manager 替换mysql作为数据库,解决AuthorizationUtils Could not set authorizations for the root问题

    按照wso2官网(https://docs.wso2.com/display/ADMIN44x/Changing+to+MySQL)配置AM的数据库,想从H2换成Mysql5.7,费了将近一天的时间, ...

  9. DOCTYPE导致MyEclipse无法正常格式化HTML的问题

    今天遇到在JSP代码中Ctrl+F无法正常格式化HTML代码,经过排查是DOCTYPE的原因. 之前写的是: <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...

  10. Pycharm常用的快捷键

    常用快捷键: Ctrl + D              复制选定的区域或行 Ctrl + Y               删除选定的行 Ctrl + Alt + L         代码格式化 Ct ...