linux 教程 获取帮助
内建命令与外部命令之分
help , man , info 命令的使用以及区别
内建命令与外部命令
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在 bash 源码的 builtins 里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在 /bin,/usr/bin,/sbin,/usr/sbin 等等。比如:ls、vi 等。
1 | # 得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的 .def 中 |
help 命令
因为 help 命令是用于显示 shell 内建命令的简要帮助信息。帮助信息中显示有该命令的简要说明以及一些参数的使用以及说明,一定记住 help 命令只能用于显示内建命令的帮助信息,不然就会得到你刚刚得到的结果。
那如果是外部命令怎么办,不能就这么抛弃它呀。其实外部命令基本上都有一个参数–help,这样就可以得到相应的帮助,看到你想要的东西了。试试下面这个命令是不是能看到你想要的东西了。
linux 教程 防火墙
iptables
在 RHEL7 之前的版本中关闭防火墙等服务的命令是
1 | service iptables stop |
/etc/init.d/iptables stop
firewalld
redhat7 之后使用了 firewalld 代替了原来的 iptables。
查看防火墙状态:systemctl status firewalld
- 如果防火墙的状态参数是 inactive,则防火墙为关闭状态。
- 如果防火墙的状态参数是 active,则防火墙为开启状态。本示例中防火墙为开启状态,因此需要关闭防火墙。
启动防火墙:systemctl start firewalld
关闭防火墙。如果防火墙为关闭状态可以忽略此步骤。
- 如果您想临时关闭防火墙,运行命令
systemctl stop firewalld。
说明 这只是暂时关闭防火墙,下次重启 Linux 后,防火墙还会开启。
- 如果您想永久关闭防火墙,运行命令
systemctl disable firewalld。
linux 教程 进程管理
top 是我们常用的一个查看工具,能实时的查看我们系统的一些关键信息的变化:
top 是一个在前台执行的程序,所以执行后便进入到这样的一个交互界面,正是因为交互界面我们才可以实时的获取到系统与进程的信息。在交互界面中我们可以通过一些指令来操作和筛选。在此之前我们先来了解显示了哪些信息。
我们看到 top 显示的第一排,
| 内容 | 解释 |
|---|---|
| top | 表示当前程序的名称 |
| 11:05:18 | 表示当前的系统的时间 |
| up 8 days,17:12 | 表示该机器已经启动了多长时间 |
| 1 user | 表示当前系统中只有一个用户 |
| load average: 0.29,0.20,0.25 | 分别对应 1、5、15 分钟内 cpu 的平均负载 |
load average 在 wikipedia 中的解释是 the system load is a measure of the amount of work that a computer system is doing 也就是对当前 CPU 工作量的度量,具体来说也就是指运行队列的平均长度,也就是等待 CPU 的平均进程数相关的一个计算值。
我们该如何看待这个 load average 数据呢?
linux-小测验
小明是一个服务器管理员,他需要每天备份论坛数据(这里我们用 alternatives.log 日志替代),备份当天的日志并删除之前的日志。而且备份之后文件名是 年-月-日 的格式。alternatives.log 在 /var/log/ 下面。
1 | sudo cron -f & |
挑战:历史命令
介绍
在 Linux 中,对于文本的处理和分析是极为重要的,现在有一个文件叫做 data1,可以使用下面的命令下载:
1 | cd /home/shiyanlou |
data1 文件里记录是一些命令的操作记录,现在需要你从里面找出出现频率次数前 3 的命令并保存在 /home/shiyanlou/result。
目标
- 处理文本文件
/home/shiyanlou/data1 - 将结果写入
/home/shiyanlou/result - 结果包含三行内容,每行内容都是出现的次数和命令名称,如 “100 ls”
提示
- cut 截取 (参数可以使用
-c 8-,使用 man cut 可以查看含义) uniq -dc去重- sort 的参数选择
-k1 -n -r - 操作过程使用管道,例如:
1 | cd /home/shiyanlou |
参考答案
注意:请务必自己独立思考解决问题之后再对照参考答案,一开始直接看参考答案收获不大。
1 | cat data1 | cut -c 8- | sort | uniq -dc | sort -rn -k1 | head -3 > /home/shiyanlou/result |
挑战:数据提取
介绍
小明在做数据分析的时候需要提取文件中关于数字的部分,同时还要提取用户的邮箱部分,但是有的行不是数组也不是邮箱,现在需要你在 data2 这个文件中帮助他用正则表达式匹配出数字部分和邮箱部分。
数据文件可以使用以下命令下载:
1 | cd /home/shiyanlou |
下载后的数据文件路径为 /home/shiyanlou/data2。
目标
- 在文件
/home/shiyanlou/data2中匹配数字开头的行,将所有以数字开头的行都写入/home/shiyanlou/num文件。 - 在文件
/home/shiyanlou/data2中匹配出正确格式的邮箱,将所有的邮箱写入/home/shiyanlou/mail文件,注意该文件中每行为一个邮箱。
提示
- 邮箱的格式匹配
- 注意符号
.的处理
来源
2016 年 TapFun 校招面试题
参考答案
注意:请务必自己独立思考解决问题之后再对照参考答案,一开始直接看参考答案收获不大。
1 | grep '^[0-9]' /home/shiyanlou/data2 > /home/shiyanlou/num |