1. 文件管理
Ø touch 新建文件。例: touch test.txt 新建一个test.txt 文件。
Ø cp 复制文件。例:cp ./user_one/test_one ./user_two/test_two,将user_one目录下的test_one文件复制到user_two目录下面,并且命名为test_two。加参数-i会在有重名是询问是否要覆盖。
Ø mv 文件或目录改名,或者用于将一个文件由一个目录移动到另外一个目录。例:mv ./user_one/test_one ./user_two ,将user_one下面的test_one 文件移动到user_two下面。
Ø rm 文件移除命令。 例:rm /root/test ,将/root 目录下的名称为test的文件移除 。如果要彻底删除一个目录,加 -r这个参数,表示递归删除其全部子目录和文件。(慎用)
Ø chmod 更改文件/目录访问文件。文件/目录都有读(r)、写(w)、执行(x)权限。
用户类型有三种:
owner:文件/目录创建者,默认拥有三种权利,简写为u;
group:和owner同组的其他用户,简写为g;
other: 除以上两者的其他的用户,简称为o;
例:给test加上o的x权限:chmod o+x test 给test减去o的x权限chmod o-x test。
此外,还可以用数字表示权限4(读)、2(写)、1(执行),可以用数字的组合 来表示权限。例:7=4+2+1表示全部权限,6=4+2表示读写权限 ;chmod 777 test (表示给u,g,o以7,7,7的权限)
Ø chown 更改文件的所有者或组。只有 root 用户可以更改文件的所有者。只在root 用户或拥有该文件的情况下才可以更改文件的组。如果拥有文件但不是 root 用户,则只可以将组更改为该用户所在的组。
Ø tail 输出文件的末尾部分。默认为输出最后10行,参数-n可以自定义输出末尾的行数。例:tail -3 test.txt,输出test.txt末尾的3行。
Ø cat 三大功能:
(1)显示文件 ,例:cat test.txt,将test.txt文件中的内容显示出来。
(2)新建一个文件,例:cat>test_two.txt,新建一个名为 test_two.txt的文件。 文件创建后可直接编辑, 编辑完成后按ctrl+c保存退出 。
(3)将几个文件合并成一个文件,例:cat test_one.txt test_two.txt>test.txt 将test_one.txt 与test_two.txt 合并,并输出到test.txt。
Ø more 一页一页的显示文件。space往下一页,b往回一页,enter显示下一行,h搜索字符串,q停止显示
Ø less 与more功能类似,除了可以按space往下一页外,还可以利用上下键来翻页
Ø find 查找目录或文件。命令格式:find pathname -options [-print -exec -ok ...]。pathname所查找的目录路径;-print将匹配的文件输出到标准输出;-exec对匹配的文件执行该参数所给出的shell命令;-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行;-name按照文件名查找文件。
2. 磁盘管理
Ø ls 列出目录中所有子目录和文件。加上-l参数,列出文件的详细信息。在使用-l参数后可以查看文件的类型。
常用的几种文件类型有:
普通文件,第一个字符为[-];
目录文件,第一个字符为[d];
链接文件,第一个字符为[l] ;
块设备文件,第一个字符为[b];
字符设备文件,第一个字符为[c]
Ø md /mkdir 创建目录。 mkdir后可以带参数,mkdir [-m][-p] 目录名。 -m: 对新建目录设置存取权限,也可以用chmod命令设置; -p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
Ø cd 进入目录。用“..”来指代父目录,用“.”指代当前目录,cd ~ (或者cd #)可以到用户的主目录
Ø df 检查文件系统的磁盘空间占用情况。查看挂载点的磁盘空间大小。
Ø du 统计目录或文件所占磁盘空间的大小,默认以k为单位。
Ø pwd 查看当前目录的完整路径。
Ø lsof 列出打开的文件。因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。参数-i用以显示符合条件的进程情况。
lsof输出各列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
3. 文档编辑
Ø Vi的2种模式:编辑模式和命令模式。
Ø 两种模式的切换:Vi启动时进入的是命令模式,在命令模式下按i可以进入编辑模式,在编辑模式中按ESC可以退回到命令模式。
Ø 退出vi的命令:
:wq 保存文件后退出
:x 保存文件后退出
:q! 不存盘退出
附:
:x与:wq的区别:
:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间。
一般情况下两者没有什么区别,只有在编译源文件时会产生影响。":wq"强制更新文件的修改时间,这样会让make编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,也产生了不必要的系统资源花销。
Ø :set nu 设置vi中的行号。:set nonu 去掉行号
Ø wc 统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。- c 统计字节数;- l 统计行数;- w 统计字数。
Ø uniq 检查及删除文本中重复出现的行列。
参数说明:
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
--help 显示帮助。
--version 显示版本信息。
Ø grep 查找内容包含指定的范本样式的文件。
Ø sed 流编辑器,自动编辑一个或多个文件,简化对文件的反复操作。
sed的几个重要用途:
(1)删除:d命令
sed '2d' example-----删除example文件的第二行。
sed '2,$d' example-----删除example文件的第二行到末尾所有行。
sed '$d' example-----删除example文件的最后一行。
sed '/test/'d example-----删除example文件所有包含test的行。
(2)替换:s命令
sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
sed 's/^192.168.0.1/&localhost/' example-----&符号表示被替换的字符本身。所有以192.168.0.1开头的行都会被替换成它自己加 localhost,变成192.168.0.1localhost。
sed -n 's/(love)able/1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
(3)选定行的范围:逗号
sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。
sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
sed '/test/,/check/s/$/sed test/' example-----对于模板test和check之间的行,每行的末尾用字符串sed test替换。
(4)多点编辑:e命令
sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
(5) 从文件读入:r命令
sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
(6)写入文件:w命令
sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。
(7)追加命令:a命令
sed '/^test/a\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。
(8)插入:i命令
sed '/test/i\new line-------------------------' exampl如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。
(9)下一个:n命令
sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
(10) 变形:y命令
sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
(11)退出:q命令
sed '10q' example-----打印完第10行后,退出sed。
(12)保持和获取:h命令和G命令
sed -e '/test/h' -e '$G example,任何包含test的行都被复制并追加到该文件的末尾。
(13)保持和互换:h命令和x命令
sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。
Ø awk 文本解析器。默认以空格为分割符,也可以用-F自定义分隔符。例:awk '{ if (NF>2) {print $1"."$2"."$3"."$4} }'。
条件操作符:<、<=、==、!=、>=、~匹配正则表达式、!~不匹配正则表达式
awk内容变量:
ARGC 命令行参数个数 ;
AGRV 命令行参数排列;
ENVIRON 支持队列中系统环境变量的使用;
FILENAME awk浏览的文件名 ;
FNR 浏览文件的记录数 ;
FS 设置输入域分隔符,同- F选项;
NF 浏览记录的域个数;
NR 已读的记录数;
OFS 输出域分隔符;
ORS 输出记录分隔符 ;
RS 控制记录分隔符。
Ø sort 对文本文件内容加以排序。
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息
4. 文件传输
Ø scp 远程复制文件或目录。
复制文件:
(1)将本地文件拷贝到远程
scp 文件名 --用户名@计算机IP或者计算机名称:远程路径
例:scp ./test.txt root@10.6.222.195:/root 将当前目录下的test.txt 文件复制到10.6.222.195的根目录下
(2)从远程将文件拷回本地
scp --用户名@计算机IP或者计算机名称:文件名 本地路径
例:scp root@10.6.222.195:/root/test.txt ./ 从10.6.122.195的根目录下下复制文件test.txt到当前目录
复制目录:
(1)将本地目录拷贝到远程
scp -r 目录名 --用户名@计算机IP或者计算机名称:远程路径
例:scp -r /root/cherie_test/ root@10.6.222.195:/root/ 将本机root目录下的cherie_test目录拷贝到10.6.222.195的root目录下
(2)从远程将目录拷回本地
scp -r --用户名@计算机IP或者计算机名称:目录名 本地路径
例:scp -r root@10.6.222.195:/root/cherie_test/ /root/ 将10.6.222.195的root目录下的cherie_test目录拷贝到本机root目录下
Ø rsync 更好的远程拷贝文件
rsync的六种工作模式:
(1)拷贝本地文件。当文件来源路径和目的路径都是本地时就启用这种工作模式
(2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。(这个功能还不会用)
(3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。(这个功能还不会用)
(4)从远程rsync服务器中拷贝文件到本地机。当文件来源路径是服务器,目的路径是本地机时就启用该模式。命令格式与scp相同。
(5)从本地机器拷贝文件到远程rsync服务器中。当文件来源路径是本地,目的路径是服务器时就启用该模式。命令格式与scp相同。
(6)列远程机的文件列表。(这个功能还不会用)
5. 网络通讯
Ø ifconfig 查看、配置、启用或禁用网络接口。
参 数:
del<地址> 删除网络设备IPv6的IP地址。
<hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
irq<IRQ地址> 设置网络设备的IRQ。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
mtu<字节> 设置网络设备的MTU。
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理
-promisc 关闭或启动指定网络设备的promiscuous模式。
[网络设备] 指定网络设备的名称
Ø telnet 远端登入。
Ø ping 检查两台机器间的网是否连通。参数-c ping的次数,参数-i每次ping之间的时间间隔。例:ping -c 5 -i 2 10.6.222.195 ,表示每两秒ping一次,共ping5次。
6. 系统管理
Ø top 动态观察进程变化。最上面的六行为整个系统的资源使用状态。
第一行:显示系统已启动的时间、目前上线人数、系统整体负载。
第二行:显示目前观察的进程数量。
第三行:显示cpu整体负载。
第四行:物理内存的使用情况。
第五行:虚拟内存的使用情况。
第六行:当在top程序中是输入指令时,显示状态的地方。
Ø ps 查看进程的运行状态 。 常用的参数有:-A列出所有的进程;-au显示较详细的信息;-aux显示所有包含其他使用者的进程。
-au参数下的属性值说明:
%CPU: 占用的 CPU 使用率
%MEM: 占用的内存使用率
VSZ: 占用的虚拟内存大小
RSS: 占用的内存大小
TTY: 终端的次要装置号码
STAT: 该行程的状态:(D: 不可中断的静止 ;R: 正在执行中 ;S: 静止状态;T: 暂停执行;Z: 不存在但暂时无法消除;W: 没有足够的记忆体分页可分配;<: 高优先序的行程;N: 低优先序的行程;L: 有记忆体分页分配并锁在记忆体内 )
START: 进程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
Ø kill 终止一个进程。参数-9强制终止进程。
Ø vmstat 展现给定时间间隔的服务器的状态值。主要用来报告虚拟内存的统计信息。对于服务器监控有用的度量有:r(运行队列)、 bi(页导入)、us(用户cup)、sy(系统cpu)、id(空闲)。如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重;如果bi,bo 长期不等于0,表示内存不足;r(运行队列)展示了正在执行和等待CPU资源的任务个数;当这个值超过了CPU数目,就会出现CPU瓶颈了。
Ø iostat 对系统的磁盘I/O操作活动进行监视。参数-c 显示cpu的使用情况;-d显示磁盘使用情况;-k某些使用block为单位的列强制使用Kilobytes为单位;
cpu属性值说明:
%user:cpu在用户模式下的时间百分比。
%nice:cpu在带nice值的用户模式下的时间比。用户空闲时间比。
%system:cpu在系统模式下的时间百分比。 (同常%user+%nice+ %system=100)
%iowait:cpu等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无 意识等待时间百分比。
%idle:cpu空闲时间百分比。
如果%iowait的值过高,表示硬盘存在I/O瓶颈;%idle值高,表示CPU较空闲;如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
磁盘属性值说明:
tps:每秒传输次数,一次传输即为一次I/O请求。
Blk_read/s:每秒从设备读取的数据量。
Blk_wrtn/s:每秒向设别写入的数据量。
Blk_read:读取的数据总量。
Blk_wrtn:写入的数据总量。
使用-x参数获得更多磁盘统计信息,
disk属性值说明:
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。
Ø date 显示和设置系统日期和时间。只有超级用户才能设置时间,一般用户只能显示时间。要取得几天前的日期 date -d "x days ago",x用数字代替,几天前写正数,几天后写负数。
7. 备份压缩
Ø tar 为文件和目录创建档案。参数-c建立一个压缩文件;-x解开一个压缩文件;-t查看压缩文件中的文件;-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!;-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
tar -cvf /tmp/etc.tar /etc ,仅打包,不压缩;
tar -zcvf /tmp/etc.tar.gz /etc,打包后,以 gzip 压缩;
tar -jcvf /tmp/etc.tar.bz2 /etc,打包后,以 bzip2 压缩
Ø zip 压缩文件 。zip [参数] [打包后的文件名] [打包的目录路径]。
zip命令参数列表:
-a 将文件转成ASCII模式
-F 尝试修复损坏的压缩文件
-h 显示帮助界面
-m 将文件压缩之后,删除源文件
-n 特定字符串 不压缩具有特定字尾字符串的文件
-o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
-q 安静模式,在压缩的时候不显示指令的执行过程
-r 将指定的目录下的所有子目录以及文件一起处理
-S 包含系统文件和隐含文件(S是大写)
-t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy
例:将/home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的html.zip
zip –q –r html.zip /home/Blinux/html
8. 辅助工具
Ø man 显示某一命令的详细信息和使用方法 。例: man top 将显示top的详细信息和用法 , 使用man后按q退出。