unix达内串讲.docx

上传人:b****6 文档编号:4695734 上传时间:2022-12-07 格式:DOCX 页数:18 大小:30.08KB
下载 相关 举报
unix达内串讲.docx_第1页
第1页 / 共18页
unix达内串讲.docx_第2页
第2页 / 共18页
unix达内串讲.docx_第3页
第3页 / 共18页
unix达内串讲.docx_第4页
第4页 / 共18页
unix达内串讲.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

unix达内串讲.docx

《unix达内串讲.docx》由会员分享,可在线阅读,更多相关《unix达内串讲.docx(18页珍藏版)》请在冰豆网上搜索。

unix达内串讲.docx

unix达内串讲

Unix串讲文档

1、Unix操作系统:

对比Windows理解。

属于操作系统平台,我们的应用软件运行在这个平台上,初期没有图形用户界面,只能通过命令与操作系统交流,用户与系统交流就是通过shell,shell相当于一个翻译器,将用户的需求翻译成相应的系统调用,再由操作系统(kernel)与底层硬件(hardware)交流,完成相应的功能

kernel:

管理设备、内存、硬盘、CPU,是硬件和程序之间的接口,管理虚拟内存(swapspace)、精灵进程和文件系统等。

内存=物理内存+交换空间;精灵进程一般是在后台提供服务的进程

shell:

也是一个程序,是一个与用户交流,使用户可以使用和管理系统中资源的程序,是一个命令解释器,相当于Windows里面的cmd.exe

2、常用Shell的介绍:

区别、转换方式等

BourneShell:

即常说的BShell,它是Unix里面最早的Shell,一般系统管理员使用这个Shell,系统脚本也是使用这个Shell编写的。

对于BShell,超级用户的提示符是#,普通用户的提示符是$,从其它Shell转换到BShell的方式是在命令行上输入sh回车

CShell:

C语言实现的Shell,加入了很多BShell里面没有的功能,如历史命令和别名功能,CShell和BShell在脚本程序的语法以及环境变量设置语法等上面不兼容。

超级用户的提示符是#,普通用户的提示符是%,从其他Shell转换到CShell的方式是在命令行上输入csh回车

Bourne-againShell:

对BShell的扩展,能够通过上下键取回使用过的命令,能够通过tab键快速匹配命令或文件名。

超级用户的提示符是#,普通用户的提示符是$,从其他Shell转换到Bourne-againShell的方式是在命令行上输入bash回车

不同的Shell在命令、环境变量设置的语法等方面都可能有区别,见后面环境变量部分

3、登录、退出、用户切换:

输入的密码都没有回显

telnet协议:

使用telnet[ip][port]可以登录到一个开放的服务器,如:

telnet172.16.0.623,端口可以不写,缺省是23,或者只输入telnet命令,再输入openip[port]的方式也可以登录

远程登录协议:

使用/usr/bin/rlogin命令,rloginip[-lusername]的方式,如:

rlogin172.16.0.6-lopenlab,输入密码,也可以登录开放的服务器,如果没有-l选项,则默认以当前用户登录到其他服务器上

su命令:

切换用户,命令格式su[-][username],(注意-号后面的空格)在普通用户下输入su命令,则默认切换到root用户,如果希望切换到某个用户,需要加上用户名,如:

suopenlab;如果当前用户是root,则切换到其他用户不需要输入密码,普通用户切换,需要密码;'-'的含义,如:

su-openlab,登录后会使用openlab的环境设置,并且转换到openlab的主目录;还可以使用某个用户的权限执行某个命令,如:

su-openlab-c"ls-l",此方式只以openlab的环境和权限执行后面的命令,并不完成转换用户的功能

退出:

使用logout,要求是登录shell,即不能切换shell;使用exit,会退出每一层切换的shell,直到退出服务器;使用ctrl+d也可以退出,ctrl+d的含义是终止终端输入

4、系统文件

/etc/passwd:

存储用户账号的基本信息,如:

openlab:

x:

104:

1:

:

/user/openlab:

/bin/csh,一个账号的信息以':

'分隔,格式为用户名:

密码占位符:

用户的uid:

用户的gid:

用户的基本描述信息(如邮箱等):

用户登录时的主目录:

用户登录时默认的Shell。

每个用户的信息占用一行

/etc/shadow:

存储用户密码加密后的信息,如:

openlab:

kO0xoLuG0wpo2:

14175:

:

:

:

:

:

,第二个位置就是用户加密后的密码。

此文件在默认情况下只有root有读权限

用户在登录时,系统会根据输入的用户名和密码到这两个文件中验证,如果验证失败,则不允许登录

/etc/group:

存储组信息,如:

adm:

:

4:

root,daemon,格式为组名:

密码:

组id:

组内用户列表。

一个用户可以属于多个组,每个组也可以有多个用户

/etc/.login和/etc/profile分别为CShell和BShell的系统初始化环境文件,具体内容看环境变量部分

/var/adm/wtmpx和/var/adm/utmpx均为Unix系统用户登录退出信息记录文件,wtmpx存放曾经登录的记录(用last查看),utmpx存放在线的用户(用who查看);/var/log/wtmp为Linux系统用户登录退出信息记录文件。

该文件会记录用户的登录名、进程id、设备名、终端号、入口类型(7为登录,8为退出)、登录或退出时间、用户登录的ip地址等。

last命令可以读这些文件,并以用户可以看懂的方式输出,如:

last-f/var/adm/utmpx,-f选项可以指定某个文件

5、文件系统

在安装Windows时,我们需要给硬盘分区、格式化、将系统安装在C盘上,可以有多块硬盘,分区后的盘符与C盘并列;Unix系统与Windows也有相似之处,只是Unix系统是一个树状结构,有一个'/'路径,其他的分区都挂载在'/'下的某个目录上而已(见df–k命令结果)。

当一块硬盘被系统认出后,就会给这块硬盘起一个名字,方式为/dev/dsk/c0t0d0,c表示控制器号,t表示目标号,d表示盘符,其后面跟着的三个数字联合唯一表示一块硬盘,新的硬盘需要通过format命令进行分区,分区后会变成/dev/dsk/c0t0d0s*,Solaris系统可以划分为s0--s7,其中s2表示整块硬盘,不能使用,所以最多7个分区,分区号不需要连续;再通过newfs命令创建文件系统(相当于格式化),目的是划分block(如datablock、i-nodeblock等),以便于向系统申请空间时可以根据不同类型申请不同的block;最后通过mount命令挂载其它分区到根文件系统下的某个目录上,不同硬盘的不同分区就这样组织起来了

6、i-node

每个文件系统都有一张i-node表,这个表是在newfs时生成的,里面存放的是i-node,一个i-node占用一个i-node-block。

每当我们向系统申请空间创建一个文件的时候,系统就会从i-node表中申请一个i-node,i-node也是文件查找的依据,如ppt中演示的执行cat/etc/passwd的过程。

对于文件来说,它的datablock中存放的是文件的内容,而对于目录来说,它的datablock中存放的是文件名和i-node的对应关系

ls-i查出文件和目录的inode号,顺便解释软硬连接:

lnfile1file2硬连接:

在inode文件中增加一条记录,指向同一文件,当硬连接数大于1的时候,删除文件只的删除了文件名到inode的一条对应关系。

文件内容没有删除。

硬连接文件是一个存在的文件

ln-sfile1file2软连接:

在文件中保存另外一个文件的位置,磁盘中会生成俩个inode号。

软连接文件是一个类型为l的文件:

lrwxrwxrwxaa->a.txt

7、常用命令,只做介绍,更多内容请参见man手册

mkdir[-p]创建一个或多个目录

创建目录:

mkdir目录名

创建多个目录:

mkdir目录1目录2

参数:

-p可以纵向创建多层目录,如:

mkdir-pa/b/c

cd路径改变当前目录

~:

波浪号,代表当前用户的主目录

绝对路径:

由根("/")开始的路径

相对路径:

默认是当前路径,不以"/"开始

rmdir目录名删除空目录,该命令只能删除空目录

rm[-rfi]删除文件或目录

-r:

删除一个目录rm-r目录名(目录可以不为空)

-i:

显示交互提示信息

-f:

强制删除(包括被保护的文件)

pwd显示出用户当前工作目录的绝对路径

touch改变文件的最后一次访问和最后一次修改时间,如果文件不存在,创建新的空文件

touchfile1file2

ls[-aAdFilRtu]察看当前工作目录下的文件和目录

-a:

显示所有文件或目录,包含所有以'.'开头的隐藏文件

-A:

显示所有文件或目录,包含隐藏文件,但不显示'.'和'..'

-d:

如果参数是目录,则显示目录名,常与-l一起使用

-F:

可以显示文件类型*:

可执行文件;/:

目录;@:

软链接文件;=:

socket文件;|:

表示管道文件(mkfifo);什么都没有表示普通文件

-i:

显示文件的i节点数

-l:

以长列表形式显示文件,如:

-rw-r--r--1openlabother8988月19日20:

34.cshrc,包括:

文件类型、权限、硬链接数、属主、属组、大小、最后一次修改时间、文件名

类型和权限以类似于drwxr-xr-x形式给出,第一位表示类型,可能的值有d(目录)、l(软连接文件)、b(块设备文件)、c(字符设备文件)、p(管道文件)、s(socket文件)、-(普通文件);后九位表示权限,三位一部分,表示所有者、同组、其他人的权限;对于硬链接数部分,如果是文件代表的是硬链接数,如果是目录,代表的该目录的子目录数加2,这个2的含义是两个隐藏目录,'.'和'..';此外,对于文件和目录的读写执行权限还需要特别说明,对于目录来说,读权限代表ls,写权限代表可以在目录中创建、删除文件,即对目录的datablock内容进行修改,执行权限代表可以cd进入目录

-R:

显示递归(recursive)列表,显示所有子目录的目录结构-t:

按最后一次修改时间顺序显示

-u:

最后一次访问时间

chmod更改文件权限,有符号法和八进制法。

必须是文件的所有者或root

符号法:

chmod{u|g|o|a}{+|-|=}{r|w|x}filename

u表示用户本人;g表示同组用户;o表示其他用户;a表示所有用户

+给予权限;-取消权限;=将所许可的权限赋给文件

r:

可以查看文件的内容,对目录来讲,可以查看目录内的内容

w:

可以修改文件,对目录来讲,可以在里面建立、删除文件

x:

文件可以运行,对于目录来讲,可以cd进去

还支持这样的语法:

chmodo=ufile,表示file文件其他人的权限赋值为u的权限

八进制数字法:

此方法用三位八进制数表示权限,每位数字分别表示用户本人、同组用户、其他用户的权限,其中:

4(100)表示可读;2(010)表示可写;1(001)表示可执行

644是文件常用的权限、755是目录的常用的权限,也往往被设置为默认的权限,当我们创建一个文件或者目录时,这个文件或者目录的权限,是与用户自己umask值设置相关的,文件创建后的权限会用666和umask值做‘运算‘,目录创建后的权限是777和umask值做‘运算’

umask:

权限掩码

eg:

22

----w——w——

掩盖掉其他和同组人的权限022

所以文件666应该设置为644

目录777应该设置为755

改变掩码:

执行命令:

umask066或者:

在初始化文件中设置

权限和掩码的运算不所单纯的减运算。

chown[-R]usernamefileName|dirName修改文件或目录的所有者,只有属主或root用户有此权限

-R表示改变目录所有者的同时,改变其所有子目录的所有者,如:

chown-Ropenlabfilename

mv[-i]移动和重命名

移动:

mv文件名文件要移动到的目录

mv目录1目录2把目录1整体移动到目录2下

改名:

mva.txtb.txt给a.txt改名为b.txt,如果b.txt存在,则内容变为a.txt的内容

-i提示是否覆盖已经存在的文件

cp[-ri]复制文件或目录

cpfile1file2源文件一定要存在,如果file2存在,file2的内容会被file1内容覆盖,如果不存在,会创建一个名字是file2的file1拷贝。

-i:

cp-ifile1file2如果file2存在,-i选项会按提示进行拷贝文件

-r:

cp-rdir1dir2对目录做备份如果dir2不存在,则按原来的目录结构一样做备份,如果dir2存在,原目录变成目标目录的子目录

catfileName显示文件内容,当文件内容在屏幕上滚动显示时,可按ctrl+S键暂停滚屏,按ctrl+Q继续,用此命令不会分屏显示。

一般用这个命令查看小文件,或者将几个小文件连接成一个大文件,如:

cata.txtb.txtc.txt>d.txt

morefileName分屏显示文件内容,显示时各功能键如下:

space或f:

继续下一屏的输出;b:

返回上一屏;enter:

看下一行的输出;

q:

退出显示文件内容;/字符串:

查询字符串所在处;n:

查找下一个

filename*显示文件类型,按照文件内容推测文件类型,比较准确

head[-n]显示文件头几行内容,缺省显示10行

-n:

表示显示文件行数,如:

head-n10/etc/passwd或者head-10/etc/passwd

tail[-n][-f]显示文件尾部,缺省10行,可用于跟踪文件增长过程

-n:

显示文件最后n行;+n:

从文件的第n行开始显示;-f:

设置实时刷新,可用来做日志监控

who查看当前登录用户,显示登录名、伪终端号、登录时间、登录ip

w查看当前登录用户,显示的信息比who更详细,具体显示含义使用man查询

-h:

不显示起始行;-s:

按短格式显示

users显示当前登录的用户名列表

id[-a][user]查看当前用户有效身份、用户id、组名、组id,加-a选项会显示用户属于的所有组加了用户名,如:

id-aopenlab,可以显示openlab帐户的信息

whoami显示用户有效身份

whoami显示用户真实身份,讲解时使用su命令

whereis确定一个命令的二进制行码、源码及联机手册所在的位置:

whereis命令名

which显示命令名的路径或者alias,如:

which命令名

clear清屏

ln[-s]创建软、硬链接

lnfile1file2给file1创建一个硬链接名字为file2,实际上是增加了一个文件名和i-node的对应关系,修改目录的datablock中的内容,如果做删除文件操作,会检查文件的硬链接数,如果文件的硬链接数为1,则收回文件的datablock和i-node-block,否则仅删除一个对应关系

ln-sfile1file2给file1(file1可以是目录)创建一个软链接,名字为file2,实际上申请了新的i-node和datablock,datablock中的内容存放的是file1的名字,如果删除了源文件,就释放了datablock,软链接文件不能找到原始文件

软链接可以跨文件系统,硬链接不可以;链接文件可以解决操作系统版本问题,如某版本的可执行程序在/usr/bin目录下,而新版本的可执行程序放在/bin目录下,相同的命令放两份是资源浪费,这时可以使用链接文件解决,将/bin链接到/usr/bin目录上。

Linux系统的启动器和Windows中的快捷方式完成相同的功能,可以创建一个启动器,用vi打开这个文件查看它的内容,里面记录的是命令名、版本、图标等相应的信息,双击一个启动器可以访问这个程序,双击一个链接文件不能达到相同的目的,链接文件是在没有图形界面的时候就出现了,当时没有快捷方式的概念。

链接文件可以使我们管理文件时方便,常用的深目录文件可以通过链接文件实现管理的方便,但是这样会造成树状结构的目录变成网状

df[-hk]显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总字节数、已用字节数、剩余字节数占用百分比等。

-k:

显示磁盘空间使用信息

-h:

以G、M、K等方便人阅读的方式显示

du[-hks]统计磁盘使用情况

-k:

当前目录下和所有子目录空间占用情况,以千字节方式显示

-h:

以G、M、K等方便人阅读的方式显示,低版本系统可能不支持

-s:

统计总的块数(block),1个block是512bytes

grep[-iv]过滤功能,把包含这个串的行输出来,可以使用正则表达式,实现过滤用|grep

例:

ls|grepa把含有a这个字符的文件名和目录列出来

-i:

忽略大小写

-v:

找出不能匹配的行

xargs建立参数表并执行命令。

在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。

但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。

错误信息通常是“参数列太长”或“参数列溢出”。

这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。

这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

例:

#find.-typef-print|xargsfile

wc[-lwcC]对行、单词、字符进行统计

-l:

以行为单位统计

-w:

以单词为单位统计

-c:

以字节为单位统计

-C:

统计字符个数

date显示或设置日期和时间,只有超级用户才有权限设置日期

cal用来显示某年内指定的日历

cal[[month]year]例:

cal1998

passwd[[-d]username]修改或删除登录口令,-d需要root权限,可删除指定账号的密码,解锁账号

echo回显字符和查看环境变量值

回显:

echo要显示的字符,如:

echoAAA

查看环境变量值:

echo$环境变量名,如:

echo$PATH

|管道符,连接两边的命令,把前一个命令的输出,作为下一个命令的输入

例:

ls-l|grep^d,列出所有目录的详细列表

<输入重定向:

可以将输入写入指定文件

>输出重定向:

可以把一个命令的输出重定向到一个文件里,如果文件存在,覆盖源文件

>>追加:

把一个命令的输出追加到一个文件里,文件不存在则创建

man格式化察看帮助手册,常用操作如下:

(可能由于版本问题,部分命令不可用)

1)空格:

翻向下一页

2)回车:

看下一行

3)f:

翻页(功能同空格)

4)b:

往回翻页

5)/字符:

查找指定的字符串(按n可以继续进行查找)

6)q:

退出帮助手册

手册是分节的,可以使用-s节号来指定查询哪个节的内容,如:

man-s2read。

常用的系统命令都在节1中,节2中一般是系统调用,节3中是c的函数等等

find查找文件语法:

find路径查询条件

find是精确匹配:

find.-namefile1模糊匹配为:

find.-name"file*"

-name:

按文件名查找

-mtime10修改时间距今10天的文件,+10大于10天,-10小于10天

-size+400表示文件大小超过400个block

-typef只查找普通文件

crontab[-elr[username]][File]定时服务,系统会定时执行用户配置的任务

username:

是指设定指定user的时程表,这个前提是你必须要有其权限(比如说是root)才能够指定他人的时程表。

如果不使用-uuser的话,就是表示设定自己的时程表

-e:

设置定时任务(回车后进入vi模式)

-l:

查看有哪些定时服务

-r:

删除目前的任务表

配置的任务文件格式是:

*****指令;每位表示的含义是:

分钟(0-59);小时(0-23);日期(1-31);月(1-12);星期(0-6,0表示周日)

例:

2617**5ls-l>>test.txt,表示每到周五的17点26分,执行命令ls-l>>test.txt

查看结果:

mailx

alias用户可以将常用的命令用自己习惯的名称来重新命名,不同的Shell语法不同

CShell:

aliasdir'ls-F';BourneShell:

aliasdir='ls-a'

8、进程相关命令(了解)

/usr/bin/ps[-ef][-Uuid]列出系统当前运行的状态

-f:

详细列表(UID:

启动进程的用户;PID:

进程号;PPID:

父进程号;STIME:

进程开始时间;TTY:

进程和哪个终端相关;TIME:

进程累计使用CPU时间;CMD:

进程运行的命令)

-Uuid:

列出某个用户或用户id相关的进程

-e:

列出所用进程

无参数:

列出当前终端相关的进程

/usr/ucb/ps[-auwx]列出系统进程,比/usr/bin/ps更详细

-a:

所有进程;-u:

显示USER、%CPU等信息;-w:

使用宽格式输出;-x:

包括无终端控制的进程

USER:

进程属于谁

PID:

进程号

PPID :

父进程号。

%CPU:

累计使用的CPU

%MEM:

占用的memory,百分比

SZ:

进程的地址空间大小size

RSS:

residentsetsize驻留集大小

TT:

终端号

S:

进程的状态(R可运行状态;O正在运行;S休眠Sleep;T是进程挂起,相当于暂停;Z是僵尸进程,Solaris中僵尸进程的进程名是

START:

启动时间

TIME:

累计使用时间

COMMAND:

执行的命令

prstat实时显示当前系统中所有进程,退出使用q

kill[-signal]pid向进程发送信号,只有root和所有者有权限

-signal是一个信号,pid为进程号。

kill-l可以列出系统支持的所有信号,前面的数字就是signal的值

如,kill-91230,向1230号进程发送SIGKILL信号kill1230,向1230号进程发送SIGTERM终止信号。

SIGKILL信号不能被捕获忽略,SIGTERM可以捕获忽略

pkill进程名终止所有与进程名匹配的权限之内的进程

sleepn休眠n秒后退出,会占用当前终端,使用ctrl+c可以退出。

ctrl+c终止前台的一个程序

ctrl+z使前台运行的一个程序挂起

&将进程放在后台运行,如:

sleep1000&

jobs[-l]列出所有工作的状态,-l参数可以显示工作的进程号+表示最近的作业,-表示先前的作业

fg[%job_id]将工作号是job_id的工作转到前台

bg[%job_id]将工作号是job_id的工作转到后台运行,一般在挂起之后做这个操作

stop[%job_id]使后台工作号是job_id的工作挂起

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1