1. 有一个文件ip.txt,每行一条ip记录,共若干行,下面哪个命令可以实现“统计出现次数最多的前3个ip及其次数”?
sort ip.txt | uniq -c | sort -rn | head -n 3
解析:首先sort进行排序,将重复的行都排在了一起,然后使用uniq -c将重复的行的次数放在了行首,在用sort -rn进行反向和纯文本排序,这样就按照重复次数从高到低进行了排列,最后利用head -n 3 输出行首的三行。
2. bash中,需要将脚本demo.sh的标准输出和标准错误输出重定向至文件demo.log。
bash demo.sh &>demo.log
bash demo.sh >demo.log 2>&1
一个命令执行前,先会准备好所有输入输出,默认分别绑定(stdin,stdout,stderr),如这个时候出现错误,命令将终止,不会执行。这些默认的输出,输入都是linux系统内定的,我们在使用过程中,有时候并不希望执行结果输出到屏幕。我想输出到文件或其它设备。这个时候我们就需要进行输出重定向了。
linux shell下常用输入输出操作符是:
1. 标准输入 (stdin) :代码为 0, 使用 < 或 << ; /dev/stdin -> /proc/self/fd/0 0代表: /dev/stdin
2. 标准输出 (stdout):代码为 1, 使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1 1代表: /dev/stdout
3. 标准错误输出(stderr): 代码为 2, 使用 2> 或 2>>; /dev/stderr -> /proc/self/fd/2 2代表: /dev/stderr
输出重定向的格式:
command-line1[1-n] > file或文件操作符或设备
3. 在unix系统中,目录结构采用带链接树形目录结构。
4. Shell脚本语言中的参数表示
$# 是传给脚本的参数个数
$0是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
5. 用户态切换到内核态的3种方式
A.系统调用
B. 异常
C. 外围设备的中断
6. Mkdir 目录 创建指定名称的目录
-m --mode 模式 设定权限模式
-p --parents可以是一个路径名称。 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
-v --verbose 每次创建新目录都显示信息(输出版本信息并退出)
7. 在cpu和物理内存之间进行地址转换时,MMU(MemoryManage Unit)存储管理单元,将地址从虚拟地址空间映射到物理地址空间。
8. fg:将后台中的命令调至前台继续运行
bg:将一个在后台暂停的命令,变成继续执行
ctrl+z:可以将一个正在前台执行的命令放到后台,并且暂停。(也就是挂起 )
ctrl+h:在shell就是向左删除的作用
9. 运行在多核处理器上的linux环境中,若临界区非常短,且不允许线程上下文切换的情况下,SpinLock满足上述需求。
10. tcpdump即:dumpthe traffic on啊work 根据使用者的定义对网络上的数据包进行截获的包分析工具。Tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or 、not等逻辑语句。
Tcpdump: 直接启动tcpdump将监视第一个网络接口上的所有流过的数据包
Tcpdump –i eth1 :监视指定的网络接口的数据包
11. ifconfig(通常以root身份登录或使用sudo以便在linux机器上使用ifconfig),不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。
Ifconfig [网络设备][参数]
参数:up:启动指定网络设备/网卡
down:关闭指定网络设备/网卡。
Arp:设置指定网卡是否支持ARP(地址解析协议)协议—根据IP地址获取物理地址的一个TCP/IP协议。
-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
address 为网卡设置IPv4地址
txqueuelen<长度> 为网卡设置传输列队的长度
使用实例:
显示网络设备信息(激活状态的)ifconfig
启动关闭指定网卡 ifconfig eth0 up
ifconfig eth0 down
为网卡配置和删除IPv6地址 ifconfig eth0 add 33ffe:3240:800:1005::2/64
ifconfig eth0 del 33ffe:3240:800:1005::2/64
用ifconfig修改MAC地址 ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
配置IP地址 ifconfig eth0 192.168.120.56
给eth0网卡配置IP地:192.168.120.56
启用和关闭ARP协议 ifconfig eth0 arp
ifconfig eth0 –arp
设置最大传输单元 ifconfig eth0 mtu 1500
12. 目录在linux文件系统中以文件的形式存在的
13. 进程之间的通讯(IPC):1 消息传递(管道,FIFO,posix和system v 消息队列)
2 同步 (互斥锁,条件变量,读写锁,文件和记录锁,posix和system v信号灯) 3 共享内存区(匿名共享内存区,有名posix共享内存区,有名systemv 共享内存区) 4 过程调用(Solaris门,Sun RPC)
14. 符号链接又叫软连接,这个文件包含了另一个文件的路径名(绝对路径或相对路径)符号链接的操作是透明的:对符号链接文件进行读写的程序会表现得直接对目标文件进行操作。一个符号链接文件仅包含有一个文本字符串,其被操作系统解释为一条指向另一个文件或者目录的路径。它是一个独立文件,其存在并不依赖于目标文件。如果删除一个符号链接,它指向的目标文件不受影响。如果目标文件被移动、重命名或者删除,任何指向它的符号链接仍然存在,但是它们将会指向一个不复存在的文件。软连接能够跨文件系统,也可以和目录链接。软连接可以对一个不存在的文件名进行链接,但是直到这个名对文件被创建后才能打开其链接。
硬链接:是指通过索引结点来进行链接。在linux的文件系统中,保存在磁盘分区的文件不管是什么类型都它一个编号称为索引结点inode index。硬链接的作用就是允许一个文件拥有多个有效路径名,防止“误删”。文件真正删除的条件是与之相关的所有硬链接文件均被删除。
· 文件有相同的 inode 及 data block;
· 只能对已存在的文件进行创建;
· 不能交叉文件系统进行硬链接的创建;
· 不能对目录进行创建,只可对文件创建;
· 删除一个硬链接文件并不影响其他有相同 inode 号的文件。
15. 地址重定位:操作系统把用户程序指令中的相对地址变换成为所在存储中的绝对地址分过程。
地址重定位实现了:从逻辑地址到物理地址的转换。
1. 地址的静态重定位
在程序运行之前,为用户程序实现了地址重定位工作。一般由操作系统中的重定位装入程序完成。
2. 地址的动态重定位
在程序执行寻址时进行重定位,访问地址时,通过地址变换机构改变为内存地址用户程序原封不动的装入内存,运行时再完成地址的定位工作需要硬件的支持,要求系统中配备定位寄存器和加法器。
16. 系统调用包括基于文本的shell和基于图标的GUI。