首页 > 代码库 > linux 综合 待修改

linux 综合 待修改

一、Linux 分类

redhat的典型分支如:redhat, centos ,Fedora,mandrake,mandriva,国产的红x等等

debian的分支如:debian,ubuntu等

slackware的分支如suse等

 

yum可以用于运作rpm包,例如在Fedora系统上对某个软件的管理:
安装:yum install <package_name> 
卸载:yum remove <package_name> 
更新:yum update <package_name> 

 

apt-get可以用于运作deb包,例如在Ubuntu系统上对某个软件的管理:
安装:apt-get install <package_name> 
卸载:apt-get remove <package_name> 
更新:apt-get update <package_name>

 

 

Linux 命令格式:

[] 之间的任何内容都是可选的

... 后面的任何内容都是可以重复的。

{} 表示应该选择由竖线(|)隔开的各项中的一个。

For Example:

   Cmd[-x] {on | off} filename …. 可以匹配以下命令:

  Cmd –x on filename

   Cmd  -x off filename1 filename2

   Cmd  off filename1

 

 

系统管理员基本任务:

  1. 增加,删除,以及管理用户账号
  2. 增删硬件
  3. 执行备份
  4. 安装和更新软件
  5. 监视系统
  6. 故障诊断
  7. 维护本地文档
  8. 时时警惕系统安全
  9. 帮助用户

 

 

 

Linux 系统典型的引导过程:

  1. 加载并初始化内核

1.1      系统ROM 把一个小的引导程序从硬盘载入到内存中(BIOS)

1.2      这个引导程序再安排载入内核

  1. 检测和配置设备

2.1 内核检测并初始化每一个硬件设备

  1. 创建内核线程

3.1      内核创建几个自发的进程(自发进程就是不通过系统的fock机制创建的进程)

3.2      一旦自发进程创建完毕,内核的引导过程也就结束。不过处理基本操作的进程和linux守护进程都还没有创建,这些全部交由init进程完成。

  1. 操作员干预(仅用于手动引导)
  2. 执行系统,启动脚本

启动脚本一般完成下面的一些内容:

5.1      设置计算机名称

5.2      设置时区

5.3      采用fsck模式检查磁盘(只在自动模式下)

5.4      安装系统的磁盘

5.5      从/tmp目录删除旧文件

5.6      配置网络接口

5.7      启动守护进程和网络服务

  1. 多用户模式运行

在启动脚本完成后,系统就是一个完全的系统,但这时候还不能进行多用户登录,必须有init进程生成一个getty进程监测终端和控制台,生成getty进程后,init进程完成引导。

 进程 :

Ps aux 了解系统上运行进程的全貌。只提供过去系统的一个快照。

Top 实时更新的一个系统

 

硬链接

      相当于copy了一个文件的副本,但和copy不同的是创建的硬链接和源文件是同步(或者是共享的),不但内容共享,权限等也是完全相同的,删除其中任何一个,其他的文件照常使用,在平时应用中提供硬链接,以防用户误删除。

Cmd :    ln f1   ../f2    //创建f2 是f1 的硬链接

软连接

     软连接就相当于windows 中的快捷方式,删除源文件,

Cmd:    ln  -s f1  /home/f2   // 在/home/f2 创建f1 的一个软连接

 

文件权限:

 Chmod 改变用户的read write exe 权限

 Chown  改变用户的属主

 Umask 设置创建文件的默认权限,但最好是在配置文件中设置,用umask的设置用户是可以自己修改的。

 

 文件额外的标志(只有ext* 文件系统可用):

 用命令lsattr 和chattr 可以进行设置

 可以设置文件一下内容:

 从不更新文件的访问时间

 只允许以追加方式写入

 不允许删除和修改文件

 

 

访问控制列表(ACL)

 

 

 

 

 

批量创建文件和文件夹

Cmd: touchm{1..50}.txt    创建m1.txt,m2.txt,m3.txt….. m50.txt

Cmd: mkdirm{1..50}

 

 

 

 

正则表达式

 

 

 

 

 

变量

   Variable= value

 ${variable} 或者 $variable

 如果变量有中有空格,给变量赋值时应该用“”括起来

 Forexample: variable = “Hellow World”

设置只读变量:

 Colour=blue

Readonly colour

清除变量的值:

Unset colour

定义和清除环境变量:

Environ-Variable = value   环境变量赋值

Export Environ-variable    声明环境变量

清除环境变量和清除一般变量的方法相同

Unset Environ-Variable

常用环境变量:env 命令显示所有的环境变量

 PWD  OLDPWD PATH HOME SHELL USERUID

将命令赋给一个变量:

Cmd=$(ls -l) 命令可以嵌套

echo $cmd 结果集之间没有回车

echo “$cmd”结果集之间有回车,和ls–l 输出结果相同

位置参数

是一个特殊的shell 脚本变量

$0 为脚本的名字 $1 为第一个参数 $2 为第二个参数,以此类推

${10}为第十个参数,第十个以后都要用括号括起来

$* 和$@ 表示从$1开始的所有的参数

$# 传到shell脚本的所有参数

$$ 脚本运行的脚本号

$? 返回值

Shell 循环(条件判断)

  

  命令的返回值:

        可用 echo $? 查看

  返回值

 含义

0

 命令运行成功

1-125

命令运行失败,脚本命令,系统命令,命令参数错误

126

找到命令无法执行

127

没有找到命令

128

命令被系统强制退出

 

数字判断

-eq

 =

-ne

!=

 -gt

-ge

>=

     -lt

-le

<=

判断字符串

   String

判断不为空

-n  string

判断不为空

-z string

判断为空

String a = string b

 

String a != string b

 

 

 

 

判断:

   If/elif/else结构:

     Ifexpression1

     Then

                   Command

     Elifif expression2

then

                   Command

          Else

                 Command

       Fi

Case 结构:

  Casevariable in

   Variable1)

         Command

                   ……

         Command;;

 Variable2)

         Command

                   ……..

         Command;;

*)

        Command

                   ……..

         Command;;

esac

for  结构

for variable in {list}

do

         command

         command

done

 

for ((expr1;expr2;expr3))

         do

                   command

                   command

         done

while expression

do

 command

done

 

until expression

do

         command

done

 

字符串处理:

 字符串的长度:

   ${#string}    

expr length  $string(最好将$string用双引号括起来,因为如果string包含空格,会有语法错误)

expr index

expr index  $string $substring 具体的返回值,请参考下图的例子

 

expr match

expr match $string $substring

substring  可以是字符,也可以使正则表达式

抽取子串

         从左边抽取:

         ${string:position}

         ${string:positon:length}

         从右边抽取:

         ${string:-position} :和-之间有一个空格

   ${string :(postion)}

 也可以用一下命令

        expr substr $string $positon $length

删除字符串:

         ${string#substring}删除string开头处和substring 匹配的最短子串

         ${string##substring}删除string开头和substring匹配的最长子串

         ${string%substring}删除string结尾处和substring 匹配的最短子串

         ${string%%substring}删除string结尾处和substring匹配的最长子串

替换子串:

 ${string/substring/replacement} 只替换第一次与substr相匹配的子串

${string/substring/replacement} 替换所有与substr匹配的子串

 

 ${string/#substring/replacement} 替换开头与substr匹配的子串

 ${string/%substring/replacement} 替换开头与substr匹配的子串

 

 

文件标示符:

     文件标示符是0-9 的数据,指明了与进程相关的特定数据流的源。当linux 启动一个进程,它自动为该进程打开了3个文件:标准输入,标准输出和标准错误输出,分别由文件表示0,1,2表示,如果该进程要打开其他的输入输出文件,则从3开始表示。

     Set  -o  noclobber 不允许覆盖任何文件   set +o noclobber 

  >> 追加   > 覆盖   > 强制覆盖(当noclobber时)

 注意: 命令的错误输出不是命令的输出结果

将命令的输出重定向到newfile 文件中,但是错误输出任然在shell上显示,就说明命令的错误输出不是命令的输出结果。

 

   Wc –l newfile  和 wc  -l < newfile   第二条只显示数字,不显示文件名

<<delimiter  shell 将分解符delimiter之后 直到下一个delimiter 之前的内容作为输入

 

 

 

 

子shell 与进程处理

   在linux 中只有fork函数可以创建子进程,父进程都使用fork函数创建子进程

Shell 的命令分为内建命令和外部命令,内建命令是由shell本身执行的命令,而外部命令是由fork函数创建的子进程执行的命令,也就是说内建命令不创建子shell ,而外部命令创建子shell

内建 命令是包含在shell 工具包中的命令

:表示永真,相当于关键字true

在shell中用()括起来的命令行,在子shell中运行,在父shell 中定义的变量可以在子shell中使用,但在子shell中定义的变量不能再父变量中使用

 Shell脚本的限制模式,限制模式将会禁用一些脚本或命令

 例如可以禁用cd 命令的使用等等

Trap 命令可以指定在收到某条信号的时候执行某条命令

      Trap command sig1

Alias 和 unalias 设置别名和取消设置别名

     Alias cddavid=’cd  /home/david’

 

 

Linux 中的设备有两种类型:

字符设备(无缓冲且只能顺序存储)、块设备(有缓冲且能随机存取)

两个特殊的设备:/dev/zero   /dev/null

 

/proc 文件系统

   是一个伪文件系统,它只存在内存中,而不占用外存空间。它以文件系统的访问方式为访问系统内核参数的操作提供接口。由于系统的信息(如进程)是动态改变的,所有用户或应用程序读取/proc文件时,/proc文件系统是动态的从系统内核读出所需信息并提交的。所以有些时候我们称/proc中的文件为虚拟文件。也有些时候我们查询文件会返回大量的信息,可是文件的大小却会是0

/proc 目录下有三个重要的文件:

  Net  scsi  和sys

   Sys目录是可写的,可通过它查询或修改内核参数

   而 net 和SCSI 则取决于内核参数的配置

  使用/proc/sys 优化系统参数(不要轻易修改,否则可能会引起系统崩溃)

     例如可以修改   /prco/sys/fs/file-max  设置文件的最大个数

     用户修改内存参数后,要将其添加到文件rc.local 中,当系统启动后能自动完成修改
 net 是查看网络

/proc/net/sockstat   /proc/net/tcp

linux 综合 待修改