标签:blog http os io 使用 ar for 文件 数据
一、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
系统管理员基本任务:
Linux 系统典型的引导过程:
1.1 系统ROM 把一个小的引导程序从硬盘载入到内存中(BIOS)
1.2 这个引导程序再安排载入内核
2.1 内核检测并初始化每一个硬件设备
3.1 内核创建几个自发的进程(自发进程就是不通过系统的fock机制创建的进程)
3.2 一旦自发进程创建完毕,内核的引导过程也就结束。不过处理基本操作的进程和linux守护进程都还没有创建,这些全部交由init进程完成。
启动脚本一般完成下面的一些内容:
5.1 设置计算机名称
5.2 设置时区
5.3 采用fsck模式检查磁盘(只在自动模式下)
5.4 安装系统的磁盘
5.5 从/tmp目录删除旧文件
5.6 配置网络接口
5.7 启动守护进程和网络服务
在启动脚本完成后,系统就是一个完全的系统,但这时候还不能进行多用户登录,必须有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: touch m{1..50}.txt 创建m1.txt,m2.txt,m3.txt ….. m50.txt
Cmd: mkdir m{1..50}
正则表达式
变量
Variable = value
${variable} 或者 $variable
如果变量有中有空格,给变量赋值时应该用“”括起来
For example: variable = “Hellow World”
设置只读变量:
Colour= blue
Readonly colour
清除变量的值:
Unset colour
定义和清除环境变量:
Environ-Variable = value 环境变量赋值
Export Environ-variable 声明环境变量
清除环境变量和清除一般变量的方法相同
Unset Environ-Variable
常用环境变量:env 命令显示所有的环境变量
PWD OLDPWD PATH HOME SHELL USER UID
将命令赋给一个变量:
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 结构:
If expression1
Then
Command
Elif if expression2
then
Command
Else
Command
Fi
Case 结构:
Case variable 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
标签:blog http os io 使用 ar for 文件 数据
原文地址:http://www.cnblogs.com/qianjin253738234/p/3953104.html