1、常见的Linux内核的操作系统发行版有哪些?
# grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据-c :计算找到'搜寻字符串' 的次数-i :忽略大小写-n :顺便输出行号-v :反向选择,即过滤掉指定的字符串
--color=auto :可以将找到的关键词部分加上颜色的显示
# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash30:operator:x:11:0:operator:/root:/sbin/nologin
# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e :直接在命令列模式上进行sed 的动作编辑;-f :直接将sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的sed 动作;-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)-i :直接修改读取的文件内容,而不是输出到终端。动作说明: [n1[,n2]]动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在10 到 20 行之间进行的,则『 10,20[动作行为] 』function:a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p :列印,亦即将某个选择的数据印出。通常 p 会与参数
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如1,20s/old/new/g 就是
举例:
答:主要有3个系列:Debian,Redhat,Slackware;
其中Debian(迪变)中有著名的Ubuntu(乌班图);
Redhat系列有CentOS(森托思)、Fedora(费多热)等(这些读音并不唯一,只是按我的习惯的读法写的)。
注意:
Linux只是一个操作系统内核,现有的大部分Linux版本操作系统都是将GNU组件和一些应用软件结合Linux内核而成,即GNU/Linux。
GNU:是自由软件项目中的的主要项目,它包括gcc(编译器)、bash(命令解释软件)和编程语言组成。
2、Linux系统shell?
答:实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果
3、Linux命令格式是什么样的?
答:Linux命令由命令字+参数+路径文件组成,具体见下图;
注意:
Linux的路径风格与Windows不同:Windows中的路径都是反斜线\划分的,如D:\data\test.txt,而在Linux中都是斜线/划分的,如root/data/test.txt;
Linux里面一切皆文件(广义上来说)。
4、列举一些常见的Linux命令
答:
(1)查看当前用户:# whoami
(2)查看主机名:# hostname;临时更改主机名:# hostname newname
(3)创建一个目录/data:# mkdir /data(表示在根目录下创建一个名为data的文件夹);
# mkdir data(表示在当前目录下创建一个名为data的文件夹)。
注释:mkdir——make a directorys,参数-p:创建多级目录,如:# mkdir /data/test/m/ -p
(4)查看当前目录:# pwd (即:print working directory)
(5)切换目录至/data目录下(与Windows下的DOS命令一样):# cd /data , (cd即:change directory);
符号:
..当前目录的上一级目录
.当前目录
./当前目录下
.tmp 文件名前带点表示隐藏文件
举例:
# cd ..进入上一级目录
(6)在当前目录下创建文件test.txt:# touch test.txt ,注意touch命令创建的文件若已经存在也不会提示,只会更改文件的时间戳;
(7)向文件test.txt中写入内容:Linux编辑器命令有两个vi/vim,前者是简单编辑器,后者是比较复杂的编辑器,一般文本操作都用前者,比如:
# vi test.txt 执行命令后进入编辑页面,默认是命令模式,并不能键入内容;
键入 i 进入编辑模式,方可写入内容;
键入内容,按ESC键退出编辑模式;
然后,键入 :wc ,即可保存退出(也可以键入 :q! ,表示不保存强制退出);
(8)查看自己编辑的文件内容:# cat test.txt (cat有也可以用于简单的文件编辑,见下面例子)
(9)echo 输出内容(也可用于简单的文件编辑,可见下面的例子)
(10)ls 查看文件和目录,参数:-d 查看目录,-a 显示隐藏文件
(11)符号解释:
>> 追加重定向,用于把内容追加到文件结尾;
> 重定向, 用于清空文件内容,并把内容追加到文件结尾;
<< 追加输入重定向
< 输入重定向
; 命令分隔符
/data/ 表示目录下面
/data 表示目录本身和目录下面
| 管道
/ 根目录或路径分隔符
~ 用户家目录
{} 字符或数字序列
- 用户上一次所在目录
\ 转义字符,让有意义的字符脱掉它原有的意义,如$在Linux中有特殊含义,要把其当作普通字符就需要在前面加反斜线,写为“\$”
! 用于调用命令,如!! 表示调用上一条命令,!+数字 表示调用命令记录中对应数字编号的命令
举例:# echo "I am a boy" >>test.txt将I am a boy追加到test.txt的结尾
# echo "I am a boy" >test.txt将test.txt清空,并把I am a boy添加到test.txt的结尾
# >test.txt将test.txt文件清空
# cat >>test.txt <<EOF将两行12345追加到test.txt中
12345
12345
EOF
(12)cp 拷贝文件或者目录(可选参数:-r 拷贝目录 -p 保持属性 -a 可代替前两者)
举例:
# cp test.txt /temp/将test.txt拷贝到/temp/目录下;
# cp -a /data /temp/将/data目录拷贝到/temp/目录下。
(13)mv 移动文件或目录
举例:
# mv test.txt /temp/将test.txt移动到/temp/目录下;
# mv /data /temp/将/data目录移动到/temp/下。
(14)rm删除文件或目录(参数:-f 强制删除, -r 删除目录)
举例:
# rm test.txt删除当前目录下的test.txt文件,有确认删除提示
# rm -f test.txt强制删除当前目录下的test.txt文件,无提示
# rm -fr /data/tmp/ 强制删除/data/tmp/目录,无提示(这是危险操作)。
补充:rmdir 删除空目录
(14)grep命令(重要的常用命令之一)
grep:Global Regular Expression Print, 使用正则表达式搜索文本 , 并把匹配的行打印出来。主要用于过滤字符串。
用法:
举例:
将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号
(15)文件头尾查看命令:
head命令:查看文件头部,-n 指定查看文件前n行内容,n默10;
tail命令:查看文件尾部,-n指定查看文件后n行内容,n默10;
(16)sed命令(常用重要命令之一)
sed:主要用于对文件的增删改查
用法:
将 ett.txt 中20~30行打印出来(查询)
[root@www ~]# sed -n '20,30p' ett.txt
删除/etc/passwd所有包含root的行,其他行输出
nl /etc/passwd | sed '/root/d'
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3 bin:x:2:2:bin:/bin:/bin/sh
....下面忽略
#第一行的匹配root已经删除了
将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除(删除)
[root@www ~]# nl /etc/passwd | sed '2,5d'
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
.....(后面省略).....
将test.txt文件中的oldboy替换为Xiongchao(修改)
[root@www ~]# sed -i '#oldboy#Xiongchao#' test.txt
(17)tree命令
tree:查看目录结构;
用法; # tree 参数
(18)如何去掉有些命令执行中的确认提示?
答:一般有些命令,如cp命令重复执行时就会提示“是否拷贝?”,如果要去掉这个提示,一般我们在命令前加入反斜杠\;
举例:
重复执行以下命令
# cp 1 /tmp/ 有提示
重复执行以下命令
# \cp 1 /tmp/ 无提示
(19)Linux中的别名
alias:查看系统别名或者给命令设置别名; 设置别名用法:# alias 别名='命令'
unalias:取消别名; 取消别名用法:# unalias 待取消的别名
(20)awk命令(重要常用命令之一)
用途:取列是其擅长的
用法:awk [-参数 变量] 'BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}。。。。END{后处理}'
举例:# awk '{if(NR>19&&NR<31) print $1}' test.txt将test.txt的20~30行中第一列打印出来。
(21)find 命令(常与xargs命令配合)
作用:查找 -type 文件类型-name 按名称查找-exec执行命令
(22)xargs命令
作用:配合find/ls查找,将查找结果一条条的交给后续命令处理;
(23)seq命令
作用:输出一个数字序列
用法:# seq 参数 参数范围
举例:
$ seq1000#起始默认是 1,间隔默认也是1
$ seq21000#间隔默认是1
$ seq1310#从1到10,间隔为3,结果是:1 4 7 10
(24)man命令
作用:用于查看命令解释或查找命令手册
常见用法:# man 命令
(25)help命令
作用:用于查看内置命令解释(内置命令不可以用man查看)
用法:# help 命令
/********************************************试题笔记*********************************************/
压缩与解压:
解压 tar zxvf 文件名.tar.gz
压缩 tar zcvf 文件名.tar.gz 目标名
Linux文件权限一共10位长度,分成四段,
第一段表示文件类型
第二段表示用户对这文件的权限
第三段表示用户所属的组对这文件的权限
第四段表示其它用户对这文件的权限
如drwxr-xr-x,
d :第一段,表示文件类型(文件?目录)
Linux有三个查看文件的命令,分别为cat、more、less,
cat命令:将文件内容一次全输出显示在屏幕上。
路由信息组成部分:1.目的主机的网络地址 2.下一跳的地址 3.子网掩码
gw:表示网关(一个局域网到另一个局域网所要经过的门槛)
netmask:子网掩码
( 1 )软连接可以跨文件系统,硬连接不可以
( 2 )硬连接不管有多少个,都指向的是同一个i节点,会把结点连接数增加。不管你删除的是源文件还是连接的文件,只要结点的连接数不是 0 ,文件就一直存在。当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改。软链接不直接使用 i 节点号作为文件指针 , 而是使用文件路径名作为指针。所以删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件。软链接有自己的 i 节点 , 并在磁盘上有一小片空间存放路径名。
( 3 )软连接可以对一个不存在的文件名进行连接 。
( 4 )软连接可以对目录进行连接。
管道(Pipe)通信:
管道在Linux中直接用 | 表示;
Linux系统的负载(Load):
linux系统中的Load对当前CPU工作量的度量。简单的说是 进程队列 的长度;
load可以用uptime和top命令来查看;
Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load ,通过系统命令"w"查看当前load average情况,
如Load:2.5,1.3,1.1表示系统的负载压力在距离当前时间1分钟内的平均负载为2.5,最近5分钟平均为1.3,最近15分钟平均为1.1,所以负载压力在上升。
指令:
grep:Global Regular Expression Print, 使用正则表达式搜索文本 , 并把匹配的行打印出来,
wc:word count, 统计指定文件中的字节数 , 字数 , 行数 , 并将统计结果显示输出。
subnet 设置一个子网,
range 可分配的IP地址范围上,
default-lease-time 默认租约时间,
max-lease-time 最大租约时间
netstat命令:
netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
用法:
netstat 参数
常见参数:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
lsof命令:
查看指定PID的端口是被哪个应用程序使用;
用法:
lsof -i:22
ps命令:
Process Status的缩写,查看当前命令执行时刻进程的状态
用法:
ps 参数
参数:
a 显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c 显示进程的真实名称
-N 反向选择
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示
注:文件权限码共有十位,共十位 ,第一位是文件类型,后面的每三位算一个数字,如-rw-r--r-x表示权限数值为645。
Linux中的关机或重启命令:
shutdown命令是安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。
命令中各选项的含义为:
- k 并不真正关机而只是发出警告信息给所有用户
- r 关机后立即重新启动
- h 关机后不重新启动
- f 快速关机重启动时跳过fsck
- n 快速关机不经过init 程序
- c 取消一个已经运行的shutdown
需要特别说明的是该命令只能由超级用户使用;
例1,系统在十分钟后关机并且马上重新启动: # shutdown –r +10
例2,系统马上关机并且不重新启动:# shutdown –h now
halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。
halt命令的部分参数如下:
[-f] 没有调用shutdown而强制关机或重启
[-i] 关机或重新启动之前,关掉所有的网络接口
[-p] 关机时调用poweroff,此选项为缺省选项
reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot命令的场合主要是在单用户模式。
init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动
fork()函数:
fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事。fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID,非零值;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;
Linux中的&&与||作用:
&&:若符号前面的命令没有正确执行或返回值为假,后面命令就不执行,否则需要执行;
||:若符号前面的命令有正确执行或返回值为真,后面的命令就不需要执行,否则需要执行。