香港服务器的Linux运维必会的命令详解(一)

已关闭留言

香港服务器的Linux运维必会的命令详解

1.mkdir

简介

创建文件目录

语法

mkdir [-p] dirName

参数

-p 确认目录是否已经存在,若不存在则建立目录而不会报错

示例

创建test文件夹及在其中创建new文件夹

$ mkdir -p test/new

2. find

简介

文件搜索

语法

find path -option [ expression ] [ -exec -ok command ] {} \;

参数

expression表达式默认是 -print

-mount -xdev 只查询和指定目录一个文件系统下的文件

-amin n 在过去n分钟内被读取过

-anewer file 读取时间迟于file的文件

-atime n 在过去n天内被读取得文件

-cmin n 在过去n分钟被修改过

-cnewer file 比文件file更新的文件

-ctime n 在过去n天内被修改过的文件

-empty 空的文件

-gid n or -group name gid n 或是 group 名称是 name

-ipath p -path p 路径符合p的文件,ipath会忽略大小写

-name name -iname name 文件名符合name的文件,iname忽略大小写

-size n 文件大小是n单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytesw 是二个位元组

-type

c 文件类型是c的文件

d 目录

c 字型装置工作

b 区块装置文件

p 具名贮列

f 一般文件

i 符号连接

s socket

-pid n process idn的文件

示例

在当前目录及子目录以.sh结尾的文件列出来

$ find . -name “*.sh”

在当前目录及子目录列出20天内更新过的文件

$ find . -ctime -20

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件

$ find . -type f -perm 644 -exec ls -l {} \;

3. awk

简介

文本处理

语法

awk ‘condition { action }’ filename

参数

-F 指定字段分隔符

action的相关函数:

toupper():字符转为大写

tolower():字符转为小写

length():返回字符串长度

substr():返回子字符串

substr($1,2):返回第一个字段,从第2个字符开始一直到结束

substr($1,2,3):返回第一个字段,从第2个字符开始开始后的3个字符

sin():正弦

cos():余弦

sqrt():平方根

rand():随机数

示例

$ echo “aa bb cc dd” | awk -F “bb” ‘{ print $1}’

aa

$ cat test.txt

aa ss

dd ff

gg hh

$ cat test.txt | awk ‘{print NR”)”, $0}’

1) aa ss

2) dd ff

3) gg hh

$ cat exp.txt

/stsvc/fms/conf/application.yml

/stsvc/sms/conf/application.yml

/stsvc/tms/conf/application.yml

/root/home/chenfan

/root/home/jhhuang

$ cat exp.txt | awk ‘/stsvc/ {print $0}’ #包含 stsvc 的行

/stsvc/fms/conf/application.yml

/stsvc/sms/conf/application.yml

/stsvc/tms/conf/application.yml

$ cat exp.txt | awk ‘/stsvc\/fms/ {print $0}’ #包含 stsvc/fms 的行

/stsvc/fms/conf/application.yml

$ cat exp.txt | awk ‘NR%2==1 {print $0}’  #奇数行

/stsvc/fms/conf/application.yml

/stsvc/tms/conf/application.yml

/root/home/jhhuang

$ echo “aa ss dds” | awk ‘{ if($3 == “dd”) print $0; else print “nothing”}’

nothing

4. sed

简介

文本处理

语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数

-e<script> 以选项中指定的script来处理输入的文本文件

-f<script> 以选项中指定的script来处理输入的文本文件

-h 显示帮助

-n 仅显示想script处理后的结果

动作说明:

a 新增,新增的内容出现在下一行

i 插入,插入的内容出现在上一行

c 取代,取代n1,n2之间的行

d 删除

p 打印,打印选择的数据,通常与sed -n一起运行

s 取代,就是替换功能

示例

在第二行下面添加Hello

$ sed ‘2a Hello’

搜索/etc/passwd包含root关键字的行

$ nl /etc/passwd| sed -n ‘/root/p’

删除/etc/passwd包含root关键字的行

$ nl /etc/passwd| sed ‘/root/d’

搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行

$ nl /etc/passwd | sed -n ‘/root/{s/bash/blueshell/;p;q}’

$ nl /etc/passwd | sed -n ‘/root/{s/bash/blueshell/;p;q}’

数据的搜索与替换

$ sed ‘s/要被取代的字串/新的字串/g’

5. uniq

简介

检查文件中的重复行列

语法

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][–help][–version][输入文件][输出文件]

参数

-c 在列旁边显示该行重复次数

-d 仅显示重复出现的行列

-u 仅显示出行一次的行列

-f<栏位> 忽略指定的栏位

-s 忽略比较指定的字符

-w<字符位置> 指定要比较的字符

示例

$ cat testfile

test 30

test 30

test 30

Hello 95

Hello 95

Hello 95

Hello 95

Linux 85

Linux 85

$ uniq -c testfile #删除重复行后的内容

3 test 30 #前面的数字的意义为该行共出现了3

4 Hello 95 #前面的数字的意义为该行共出现了4

2 Linux 85 #前面的数字的意义为该行共出现了2

6. sort

简介

行列排序

语法

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][–help][–verison][文件]

参数

-b 忽略每行文本前面的空格

-c 检查文件是否按照顺序排序

-d 只处理英文字母。数字和空格,忽略其他字符

-f 排序时,将小写字母看成大写字母

-i 只处理040-176之间的ACSII

-m 将排序好的文件合并

-M 将前面三个字母按照月份缩写排序

-n 依照数值的大小排序

-r 以相反的顺序排序

-u 唯一,输出的结果是去重过的

-t<分隔字符> 指定排序时所用的栏位分隔字符

+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一个栏位

示例

$ cat testfile #testfile文件原有排序

test 30

Hello 95

Linux 85

$ sort testfile #重排结果

Hello 95

Linux 85

test 30

7. tail

简介

查看文件内容

语法

tail [参数] [文件]

参数

-f 循环读取

-q 不显示处理信息

-v 显示详细的处理信息

-c<数目> 显示的字节数

-n<行数> 显示文件的尾部 n 行内容

�pid=PID -f合用,表示在进程ID,PID死掉之后结束

-q, –quiet, –silent 从不输出给出文件名的首部

-s, –sleep-interval=S -f合用,表示在每次反复的间隔休眠S

示例

循环显示notes.log的文件内容

$ tail -f notes.log

$ tail -f notes.log

8. head

简介

查看文件开头部分内容

语法

head [参数] [文件]

参数

-q 隐藏文件名

-v 显示文件名

-c<数目> 显示的字节数。

-n<行数> 显示的行数

示例

显示 notes.log 文件的开头 5

$ head -n 5 runoob_notes.log

9. mkfs

简介

在特定的分区建立文件系统

语法

mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

参数

device : 预备检查的硬盘分区,例如:/dev/sda1

-V : 详细显示模式

-t : 给定档案系统的型式,Linux 的预设值为 ext2

-c : 在制做档案系统前,检查该partition 是否有坏轨

-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面

block : 给定 block 的大小

示例

/dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在

$ mkfs -V -t msdos -c /dev/hda5

sda6分区格式化为ext3格式

$ mfks -t ext3 /dev/sda6

10. chmod

简介

控制文件调用权限

语法

chmod [-cfvR] [–help] [–version] mode file…

参数

mode参数:

[ugoa…][[+-=][rwxX]…][,…]

(1) u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是

(2) + 表示增加权限、表示取消权限、= 表示唯一设定权限

(3) r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行

-c : 若该文件权限确实已经更改,才显示其更改动作

-f : 若该文件权限无法被更改也不要显示错误讯息

-v : 显示权限变更的详细资料

-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

示例

将文件 file1.txt 设为所有人皆可读取

$ chmod ugo+r file1.txt

#或者

$ chmod a+r file1.txt

将文件 file1.txt file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入

$ chmod ug+w,o-w file1.txt file2.txt