Linux操作系统

来源:互联网 发布:acg和sia知乎 编辑:程序博客网 时间:2024/05/18 18:55

1、常见的Linux内核的操作系统发行版有哪些?

答:主要有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, 使用正则表达式搜索文本 , 并把匹配的行打印出来。主要用于过滤字符串。

用法:

# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:-a :将 binary 文件以 text 文件的方式搜寻数据-c :计算找到 '搜寻字符串' 的次数-i :忽略大小写-n :顺便输出行号-v :反向选择,即过滤掉指定的字符串--color=auto :可以将找到的关键词部分加上颜色的显示

举例:

将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号

# grep -n root /etc/passwd1:root:x:0:0:root:/root:/bin/bash30:operator:x:11:0:operator:/root:/sbin/nologin

(15)文件头尾查看命令:

head命令:查看文件头部,-n 指定查看文件前n行内容,n默10;

tail命令:查看文件尾部,-n指定查看文件后n行内容,n默10;


(16)sed命令(常用重要命令之一

sed:主要用于对文件的增删改查

用法:

# sed [-nefr] [动作]

选项与参数:-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e :直接在命令列模式上进行 sed 的动作编辑;-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)-i :直接修改读取的文件内容,而不是输出到终端。动作说明: [n1[,n2]]functionn1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 1020 行之间进行的,则『 10,20[动作行为] 』function:a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是
举例:

将 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/sh3  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/bash6 sync:x:5:0:sync:/sbin:/bin/sync7 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  参数  参数范围

举例:

$ seq 1000#起始默认是 1,间隔默认也是1

$ seq 21000#间隔默认是1

$ seq 1310#从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 :第一段,表示文件类型(文件?目录)

rwx: 第二段,文件所有者权限
r-x:第三段,文件所有者所在组权限
r-x:第四段,其他用户权限




Linux有三个查看文件的命令,分别为cat、more、less,

cat命令:将文件内容一次全输出显示在屏幕上。

more命令:分屏显示文件内容,每次只显示一屏,只允许向前浏览。
less命令:与more相似,并且支持向前,向后浏览。




路由信息组成部分:1.目的主机的网络地址 2.下一跳的地址  3.子网掩码

gw:表示网关(一个局域网到另一个局域网所要经过的门槛)  

 netmask:子网掩码


硬链接与软链接的解释:

( 1 )软连接可以跨文件系统,硬连接不可以

( 2 )硬连接不管有多少个,都指向的是同一个i节点,会把结点连接数增加。不管你删除的是源文件是连接的文件,只要结点的连接数不是 0 ,文件就一直存在。当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改。软链接不直接使用 i 节点号作为文件指针 , 而是使用文件路径名作为指针。所以删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件。软链接有自己的 i 节点 , 并在磁盘上有一小片空间存放路径名。

( 3 )软连接可以对一个不存在的文件名进行连接 。

( 4 )软连接可以对目录进行连接。





管道(Pipe)通信:
管道在Linux中直接用 | 表示;
管道是半双工的,读写不能同时双向进行数据操作。管道的容量还受其它因素的影响,管道缓冲区的大小也会影响程序的执行结果。管道必须打开一个读端和一个写端。若写端关闭,读端只能返回0。如读端关闭,写端返回错误值-1。管道是一个固定大小的缓冲区 相当于半双工进程通信机制 管道满时 写操作阻塞 管道空时 读管道阻塞。



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 显示版本显示



umask
功能说明:指定在建立文件时预设的权限掩码
       语法:umask [-S][权限掩码]
补充说明:umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。Linux中的权限有r(读) w(写) x(执行),分别用数字4,2,1代表。
umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。
对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。        目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7
对于新建文件,umask值为244,那么权限就是666-244=422  
linux系统中权限rwx对应数值为421,故文件权限为-r- - -w- -w-
具体权限见下表:


注:文件权限码共有十位,共十位 ,第一位是文件类型,后面的每三位算一个数字,如-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中的&&与||作用:

&&:若符号前面的命令没有正确执行或返回值为假,后面命令就不执行,否则需要执行;

||:若符号前面的命令有正确执行或返回值为真,后面的命令就不需要执行,否则需要执行。





0 0
原创粉丝点击