Linux 经常使用命令笔记

一、mkdir : 建立目录,make directorys,-p 递归建立目录php

mkdir-p /a/b/chtml

二、ls  : -l(long)d(directory)显示目录或文件,全称list前端

-l#列出文件的详细信息,如建立者,建立时间,文件的读写权限列表等等node

-d#只查看目录mysql

-F#会在不一样类型的文件后面加上*/=>@|等符号,以便区分不一样类型文件linux

-p#会在目录后面加上/,以便区分目录和文件ios

-h#人类可读模式,显示K、M、Gweb

-i#显示inode,也就是文件的index number正则表达式

-r#依相反次序排列,–reverse算法

-R#列出全部子目录层, –recursive

-t#按修改时间进行文件的排序,-modificationtime

-s#在每一个文件的后面打印出文件的大小,-size

-a#列出文件下全部的文件,包括以“.“开头的隐藏文件

-A#列出除了".“和”…"之外的文件。

–color=auto #添加颜色

–time-style=STYLE#style值可选full-iso,long-iso(最优), iso, locale

ll --time-style=long-iso install.log (显示效果最好)

-rw-r–r--. 1 root root 62057 2017-01-14 14:32install.log

ll --time-style=full-iso install.log

-rw-r–r--. 1 root root 62057 2017-01-1414:32:36.206994569 +0800 install.log

ll --time-style=iso install.log

-rw-r–r--. 1 root root 62057 01-14 14:32 install.log

ll --time-style=locale install.log

-rw-r–r--. 1 root root 62057 Jan 14 14:32 install.log

三、cd : 切换目录层次change directory

~表示家目录,

-表示上一次的目录

cd~

cd/tep/fq

cd/root

cd-  # 回到/tep/fq

四、pwd : 显示当前目录

pwd

五、echo : 打印输出内容(printf复杂的输出)

参数:

-n : 不换行输出

-e : 激活转义字符\,可使用如下转义字符

\a    alert (BEL)

\b    backspace

\c    produce no further output

\e    escape

\f    form feed

\n    new line            #换行

\r    carriage return

\t    horizontal tab     #水平tab键

\v    vertical tab       #垂直tab键

示例:

echo"abce"

echo -n’abcd’;echo ‘efg’

echo -e"hello\tworld"

hello  world

echo -e"hello\nworld"

hello

world

echo -e “hello\vworld”

hello

world

输出命令的结果:

a、用反引号``(tab键上)

echo date +%F

b、用$()

echo $(date +%F)

六、vi/vim : 记事本编辑器

:set nu 显示行号

settabstop=4  一个tab为4个空格长度

set ai  设置自动缩进

syntax on   高亮

dd      删除当前行

yy      复制当前行

p       粘贴

行号gg 定位到指定行号

G       切换到文件尾

gg      切换到文件首

^或0:(注意是数字零)光标移至当前行首

$:光标移至当前行尾

七、cat : 查看文件内容(concatenate)

cat/etc/hosts

cat-n /etc/hosts  #显示行号

cat>>a.txt<<EOF   #将EOF之间所全部数据追加到a.txt尾部

EOF

八、cp  : -apr 拷贝文件或目录

cpa.txt /tmp/

cp-r a /tmp  #将目录a拷贝到tmp

cp-a a /tmp  #-a = -dpr

九、mv : 移动文件或目录,也可更名(rename命令)

mva.txt /tmp

mva.txt b.txt  #将a.txt改成b.txt

十、rm :  删除文件

-f强制删除文件

-r递归删除文件或目录

-fr删除指定的目录和文件

rm-fr /tmp/*

十一、rmdir : 删除空目录

十二、head : 显示文件前几行,默认10行

-n行数

head-n 500 a.txt

head-500 a.txt

1三、tail : 监控文件的变化

-n行数,显示文件后几行,默认10行;

-f跟踪文件结尾变化,若是文件被删除后重建,不会显示新的变化

-F跟踪文件结尾变化,会尝试从新链接文件,若是文件被删除后重建,会显示新的变化

tail-n 500 a.txt

tail-500 a.txt

相似命令:tailf。

tailf至关于tail -f,相似于tail -f,严格说来应该与tail –follow=name更类似些。

与tail -f不一样的是,若是文件不增加,它不会去访问磁盘文件,因此省电,并减小了磁盘访问

1四、alias : 显示设置的别名,ualias取消别名

能够在/etc/profile、/etc/bashrc中配置全局别名。在用户家目录.bashrc配置用户别名

alias grep=‘grep --color=auto’

1五、tac : 反转内容输出(cat反写)

cata.txt | tac

1六、which : 查看命令所在的路径

whichntpdate

/usr/sbin/ntpdate

1七、find : 查找命令,

-typef      按类型(f:文件 d:目录)

-namefilename   按文件名

-perm        按权限查找

-mtime       按修改时间, +n表示n天前,-n表示最近的n天,n表示第n天

-prune       忽略某个目录,如查没有-depth参数,则-prune则有效,并表示不深刻到目录里面。(难以理解,见下面练习题第二关中的说明)

-mindepth    限定搜索指定目录的最小深度

-maxdepth    限定搜索指定目录的最大深度

!        排除

-o           或,等于-or

-and         而且,条件之件默认为-and

find/ -type -f -name aaa        #查找文件名为aaa的文件

find. -maxdepth 1 -type d ! -name “.”  #只查找1层,类型是目录,目录名不含有.的目录

find/bin -type f -perm 4755  -exec ls -l {};  #查找有特殊权限的命令

1八、tree : 查看目录结构

-d  显示目录

-L  要显示层级

tree/

tree-L 1 / : 只显示一层结构

1九、xargs:用于把其它命令的输出交给后面的命令处理

find /tmp -typef -name aa | xargs rm –fr

find ./ -type f  -print0| xargs -0 md5sum >> md5_rc1.txt

后一种是适用于文件名含有空格的文件。一般xargs用于隔断文件是默认为:空格、TAB、换行符等,-print0则是以NULL隔断文件,xargs -0 就是以NULL来区分文件隔断。

20、whoami : 查看当前命令行终端用户

2一、w : 查看当前登录的用户和作什么

2二、su:切换用户

参数:

-c<指令>或–command=<指令>:执行完指定的指令后,即恢复原来的身份

-f或——fast:适用于csh与tsch,使shell不用去读取启动文件

-或-l或——login:改变身份时,也同时变动工做目录,以及HOME,SHELL,USER,logname。此外,也会变动PATH变量

-m,-p或–preserve-environment:变动身份时,不要变动环境变量

-s或–shell=:指定要执行的shell

–help:显示帮助

–version;显示版本信息。

示例:

su - root

2二、sudo :让普通用户能够拥有指定的root权限功能,需root用户提早受权

sudouseradd kkk

2三、rpm : 软件安装命令

rpm-ivh :安装

rpm-e :卸载

rpm-e --nodeps :不考虑依赖,强行卸载

2四、whereis: locate thebinary, source, and manual page files for a command

whereis-b mkdir

mkdir:/bin/mkdir

2五、uname : 查看系统版本

-a:

-r:

-m:

uname-a

2六、halt:关机 (init 0)

2七、reboot 重启(init 6)

2八、shutdown

shutdown-r now : 重启

shutdown-h now : 关机

2九、lsb_release:显示系统版本

lsb_release-a

30、lastlog : 查看用户是否登陆过

3一、last : 查看最后登录过的用户列表

3二、file : 查看文件类型

3三、ln : 建立连接文件

硬连接:源文件与目标文件的inode号码相同,都指向同一个inode

ln 源文件 目标文件

软连接:至关于windows中的快捷方式

ln -s 源文件 目标文件

ln -s /abc/def/ghi/jk/ /tmp/jk/

能够经过readlink 软连接名,来查看软连接信息

3四、stat : 查看文件信息

参数:

-L, --dereference #follow links

-Z, --context #print the SELinux security context

-f, --file-system #display file system status instead of file status

-c  --format=FORMAT #格式化输出

-t, --terse #print the information in terse form

The valid format sequences for files (without --file-system):

%a     Access rights in octal(八进制权限644)

%A     Access rights in humanreadable form(人类可读模式rw-r–r--)

%b     Number of blocks allocated(see %B)(取stat信息中的Blocks: 后面的值)

%B     The size in bytes of eachblock reported by %b

%C     SELinux security contextstring

%d     Device number in decimal

%D     Device number in hex

%f     Raw mode in hex

%F     File type

%g     Group ID of owner

%G     Group name of owner

示例:

stat install.log

File: `install.log’

Size: 62057       Blocks: 136    IO Block: 4096   regular file

Device: 803h/2051d      Inode:391683      Links: 1

Access: (0644/-rw-r–r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2017-01-01 23:32:26.238999717 +0800

Modify: 2017-01-02 00:00:41.324999404 +0800

Change: 2017-01-02 00:01:11.062999379 +0800

stat -c %B etiantian

512

stat -c %d etiantian

1792

stat -c %G etiantian

root

3五、df : 检查linux服务器的文件系统的磁盘空间占用状况

df -hi

-a 所有文件系统列表

-h 方便阅读方式显示

-H 等于“-h”,可是计算式,1K=1000,而不是1K=1024

-i 显示inode信息

-k 区块为1024字节

-l 只显示本地文件系统

-m 区块为1048576字节

–no-sync 忽略 sync 命令

-P 输出格式为POSIX

–sync 在取得磁盘信息前,先执行sync命令

-T 文件系统类型

选择参数:

–block-size=<区块大小>指定区块大小

-t<文件系统类型> 只显示选定文件系统的磁盘信息

-x<文件系统类型> 不显示选定文件系统的磁盘信息

–help 显示帮助信息

–version 显示版本信息

3六、less : 是对文件或其它输出进行分页显示的工具(按屏显示,能够前滚(向下),也可回退(向上))

-N  #显示行号

less a.txt

less -N a.txt

3七、more:是对文件或其它输出进行分页显示的工具(按屏显示,能够前滚(向下),但不能回退(向上))

3八、man : 查看命令及配置文件的帮助

3九、touch :建立文件或修改文件时间戳

40、env : 显示当前用户的环境变量

4一、source : 读取和执行配置文件

source/etc/sysconfig/i18n  或 . /etc/sysconfig/i18n

4二、netstat : 查看网络状态

[–tcp|-t]  [–udp|-u]   [–raw|-w]   [–listening|-l]   [–all|-a]  [–numeric|-n] [–program|-p]

netstat-lntup

netstat-an

4三、lsof :列出当前系统打开文件的工具(list open files)

参数:

lsof -c abc 显示abc进程如今打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程状况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,可是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程状况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
  46 --> IPv4 or IPv6
  protocol --> TCP or UDP
  hostname --> Internet host name
  hostaddr --> IPv4地址
  service --> /etc/service中的 service name (能够不止一个)
  port --> 端口号 (能够不止一个)

输出各列信息的意义

COMMAND:进程的名称 PID:进程标识符

USER:进程全部者

FD:文件描述符,应用程序经过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

示例:

lsof -i :port    :查看端口状况

lsof-i :22

COMMAND   PID USER  FD   TYPE  DEVICE SIZE/OFF NODE NAME

sshd     2776 root    3u IPv4   16724      0t0 TCP *:ssh (LISTEN)

sshd     2776 root    4u IPv6   16730      0t0 TCP *:ssh (LISTEN)

sshd 23312 root 3r IPv4 3417749 0t0 TCP LS-B:ssh->127.0.0.1:patrolview(ESTABLISHED)

4四、crontab命令

crontab–操做每一个用户的守护程序和执行的时间表。

crontabfile [-u user]–用指定的文件替代目前的crontab。

crontab- [-u user]–用标准输入替代目前的crontab。

crontab-l [user]–列出用户目前的crontab。

crontab-e [user]–编辑用户目前 的crontab 。

crontab-d [user]–删除用户目前 的crontab 。

crontab-c dir --指定crontab的目录。

crontab文件的格式:M H D m d cmd

M:分钟(0-59)

H:小时(0-23)

D:天(1-31)

m:月份(1-12)

d:一星期内的天(0-6,0为星期天)

4五、history

history-d 9 #删除指定行号的历史记录

history-c  #删除全部历史记录

能够经过配置HISTCONTROL=ignorespace环境变量来指定history命令不记录敏感操做。如:

通常状况会显示:

history -c

mysql -uroot -p123456

histroy

mysql -uroot -p123456

history

使用HISTCONTROL

history -c

HISTCONTROL=ignorespace

mysql -uroot -p123456

histroy

HISTCONTROL=ignorespace

history

4六、seq:打印序列

seq-s “,” -f “t%01g” 1 5

-s   :使用分隔符

“,”  :分隔符为了英文逗号

-f   :格式化

%01g:1位浮点数

结果  :t1,t2,t3,t4,t5

4七、chkconfig

chkconfig-–list #列出全部的系统服务

chkconfig-–add httpd #增长httpd服务

chkconfig-–del httpd #删除httpd服务

chkconfig-–level httpd 2345on #设置httpd在运行级别为二、三、四、5的状况下都是on(开启)的状态

chkconfig-–list #列出系统全部的服务启动状况

chkconfig-–list mysqld #列出mysqld服务设置状况

chkconfig-–level 35 mysqldon #设定mysqld在等级3和5为开机运行服务,–level 35表示操做只在等级3和5执行,on表示启动,off表示关闭

chkconfigmysqld on #设定mysqld在各等级为on,“各等级”包括二、三、四、5等级

4八、grep(三剑客之三)

参数:

-c:只输出匹配行的计数。

-i:不区分大小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:排除,显示不包含匹配文本的全部行。

-e: 或的意思,可以使用多个条件

-E: 使用多个条件,至关于多个-e,需加双引号

–color=auto #添加颜色

grep -E 至关于egrep

示例:

grep ‘test’ d*    # 显示全部以d开头的文件中包含 test的行。

grep ‘test’ aa bb cc  #显示在aa,bb,cc文件中匹配test的行。

grep linuxtechi /etc/passwd:  #在/etc/passwd文件中查找单词"linuxtechi"

grep -e EST -e WAIT /netstat.log      #在netstat.log中查找包含EST或WAIT的行

grep -E “EST|WAIT” /netstat.log       #在netstat.log中查找包含EST或WAIT的行

grep -v ^# /etc/ssh/sshd_config       #过滤文件/etc/ssh/sshd_config中全部的注释

grep -Ev “#|$”/etc/ssh/sshd_config #过滤文件/etc/ssh/sshd_config中全部的注释和空行

4九、sed(三剑客之二)

说明

sed是一种在线编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容打印到屏幕。而后处理下一行,至文件末尾。此时,原文件的内容不会改变,除非用-i参数来指定sed修改原文件。sed的分隔符能够是#,也能够是/。

格式:

sed [-nefri] [n1[,n2]][command] 输入文本

参数:

选项参数

-n:取消默认打印,只打印sed特殊处理的那一行。

-e:直接在指令列模式上进行sed的动做编辑。

-f:sed直接执行动做文件内的动做command。-f commandfile

-r:使用扩展的正则表达式(默认为基础正则表达式语法)

-i:直接修改读取的文件的内容,不在由屏幕输出

[n1[,n2]]

通常表示选择要进行动做的行数。如动做要删除在10行到20行之间的行:[10,20d]

command命令参数

a:新增。新增一行a后面的字符串(当前行的下一行)

c:取代。c后面的字符串能够取代n1,n2之间的行

d:删除。

i:插入。插入i后面的字符串(当前行的上一行)

p:打印。

s:替换。

小括号()分组功能

sed -nr ‘s#abc.∗.∗#\1#gp’

s###g中第1个#和第2个#之间的内容表示要查找的内容,能够用正则表达式,其中用小括号()括起来的内容,能够在第2个#和第3个#之间用\1来调用,第2个#和第3个#之间不能用正则表达式。如查前面有多个小括号,则\一、\二、…\n来表示第1个括号的内容,第2个括号的内容。。。第n个括号的内容。r表示使用正则表达式,g表示全局替换,p表示打印。因为前面有-n取消了默认输出,因此必须用参数p来打印过滤出的内容,不然什么都不会输出。

示例:

sed s#str1#str2#g filename:用str2替换str1,只打印,但不改原文件内容。-i:表示修改原文件内容

sed s#oldboylinux#mywindows#g ett.txt:将oldboylinux替换成mywindows

sed -i s#oldboylinux#mywindows#g ett.txt :此时ett.txt中的内容已被替换

sed -n 2p #显示第2行

sed -n [2,5d] #删除第二、三、四、5行

sed -n ‘/oldboylinux/p’ ett.txt #过滤出含有oldboylinux的行

echo ‘kkkddd’ | sed ‘s#kkkkkkdddddd#\1#g’             #kkk

echo ‘kkkddd’ | sed -r ‘s#(kkk)(ddd)#\1#g’             #kkk

echo ‘kkkddd’ | sed -r ‘s#(kkk)(ddd)#\1    \2#g’      #kkk    ddd

echo ‘kkkddd’ | sed -r ‘s#(kkk)(ddd)#\1 is a \2#g’    # kkk is a ddd

删除ifconfig eth1的输出先后的空格,并将内容中的相连的多个空格替换为一个空格

ifconfig eth1 | sed -r ‘s# +# #g’ | sed -r ‘s#^ ##g’ | sed -r ‘s#+$##g’

在a.txt文件的第1行插入1行内容为:wddglog

sed -i ‘1 i wddglog’ a.txt  #-i表示修改原文件,1表示第1行,i表示插入

50、awk(三剑客之一)

awk -F: ‘{print $1}’ /etc/passwd #以:为分隔符,打印/etc/passwd中的第一列

-F:指定分隔符,默认分隔符为空格。多个分隔符需用’[]’,’[]'内的所有为分隔符,同时有效

$0:表示一行

$1:表示第一列

$n:表示第n列

$NF:表示最后一列

NR:表示行号

cat /etc/passwd | awk -F: ‘{print $1}’

echo “I am oldboy,myqq is 49000448” | awk -F ‘[ ,]’ ‘{print$3" "$6}’ #以空格和逗号为分隔符

oldboy49000448

5一、tar:打包和压缩/解压缩命令

格式:

tar[必选参数+辅助参数] 包名  需打包的文件或目录

参数:

必选参数

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名

必选参数之只选一(五个是独立的命令,压缩解压都要用到其中一个,能够和别的命令连用但只能用其中一个。)

-c: 创建压缩档案

-x:解压

-t:查看内容

-r:向压缩归档文件末尾追加文件

-u:更新原压缩包中的文件

可选参数

-z:有gzip属性的

-j:有bz2属性的

-Z:有compress属性的

-v:显示全部过程

-O:将文件解开到标准输出

-P: 不提示

-C: 改变目录

-X: 打包时根据文件列表排除文件

–exclude Filename:排除,在压缩的过程当中,不要将 Filename 打包!

经常使用参数组合:

gzip打包组合zcvf,解包组合zxvf

bzip打包组合jcvf,解包组合jxvf

压缩示例:

tarzcvf a.tar.gz /tmp/kkk

tarjcvf a.tar.bz /tmp/kkk

tarzcvf workspace.tar.gz --exclude /Workspace/Linux Workspace/ #打包时排除/Workspace/Linux

tarzcvfX workspace.tar.gz a.txt /Workspace/Linux Workspace/    #打包时根据a.txt中的文件名排除

cat a.txt

aa.txt

bb.txt

cc.txt

解压示例:

tar-xvf file.tar         #解压 tar包

tar-xzvf file.tar.gz         #解压tar.gz

tar-xjvf file.tar.bz2        #解压 tar.bz2

tar-xZvf file.tar.Z          #解压tar.Z

tar-xvf file2.tar -C /home/usr2  #将file2.tar解压到/home/usr2下

5二、cut:从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

格式:

cut  [-bn] [file] 或 cut [-c] [file]  或 cut [-df] [file]

参数

-b:以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c:以字符为单位进行分割。

-d:自定义分隔符,默认为制表符。

-f  :与-d一块儿使用,指定显示哪列。f3表示第三列,f3,6表示第3列和第6列,f2-5表示第2列到第5列

-n:取消分割多字节字符。仅和 -b 标志一块儿使用。若是字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围以内,该字符将被写出;不然,该字符将被排除。

cut命令主要是接受三个定位方法:

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c

第三,域(fields),用选项-f

示例:

catcut_ch.txt

星期一

星期二

星期三

星期四

cut -c 3 cut_ch.txt

5三、tr:也是替换命令

echo “I am oldboy,myqq is 49000448” | tr “,”" "  #将逗号替换成空格

echo ‘abc’ | tr ‘abc’ ‘xyz’ #x替换a,y替换b,z替换c

5四、wc:打印文件的文本行数、单词数、字节数

参数:

-c,–bytes: 打印字节数(print thebyte counts)

-m,–chars:打印字符数(print the charactercounts)

-l,–lines:打印行数(print thenewline counts)

-L,–max-line-length:打印最长行的长度(print the length of the longest line)

-w,–words:打印单词数(print theword counts)

示例

wc–lines /etc/passwd

wc -l/etc/passwd

5五、du: 查看文件和目录磁盘使用的空间

参数:

-a或-all  显示目录中个别文件的大小。

-b或-bytes  显示目录或文件大小时,以byte为单位。

-c或–total  除了显示个别目录或文件的大小外,同时也显示全部目录或文件的总和。

-k或–kilobytes  以KB(1024bytes)为单位输出。

-m或–megabytes  以MB为单位输出。

-s或–summarize  仅显示总计,只列出最后加总的值。

-h或–human-readable  以K,M,G为单位,提升信息的可读性。

-x或–one-file-xystem  以一开始处理时的文件系统为准,若赶上其它不一样的文件系统目录则略过。

-L<符号连接>或–dereference<符号连接> 显示选项中所指定符号连接的源文件大小。

-S或–separate-dirs   显示个别目录的大小时,并不含其子目录的大小。

-X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。

–exclude=<目录或文件>         略过指定的目录或文件。

-D或–dereference-args   显示指定符号连接的源文件大小。

-H或–si  与-h参数相同,可是K,M,G是以1000为换算单位。

-l或–count-links   重复计算硬件连接的文件。

示例:

(1)显示目录或者文件所占空间

du

(2)显示指定文件所占空间

du log2012.log

(3)查看指定目录的所占空间

du scf

(4)显示多个文件所占空间

du log30.tar.gz log31.tar.gz

(5)只显示总和的大小

du -s scf

(6)方便阅读的格式显示

du -h test

(7)文件和目录都显示

du -ah test

(8)显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

du -c log30.tar.gz log31.tar.gz

(9)输出当前目录下各个子目录所使用的空间

du -h  --max-depth=1

5六、useradd : 创建用户帐号

格式:

useradd [-mMnr][-c <备注>][-d <登入目录>][-e<有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户账号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g<群组>][-G <群组>][-s ]

参数:

-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。

-d<登入目录>  指定用户登入时的启始目录。

-D  变动预设值.

-e<有效期限>  指定账号的有效期限。格式MM/DD/YY

-f<缓冲天数>  指定在密码过时后多少天即关闭该账号。0:当即停权 -1:关闭此功能(默认值-1)

-g<群组>  指定用户所属的群组。

-G<群组>  指定用户所属的附加群组。

-m  自动创建用户的登入目录。

-M  不要自动创建用户的登入目录。

-n  取消创建以用户名称为名的群组.

-r  创建系统账号。

-s指定用户登入后所使用的shell。不填写时,系统根据/etc/default/useradd预设值指定

-u  指定用户ID。

-p 建立用户时,直接指定密码,但在 /etc/shadow文件中以明文显示,不安全

示例:

useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bashoracle

useradd -u 510 test

补充说明:

useradd可用来创建用户账号。账号建好以后,再用passwd设定账号的密码.而可用userdel删除账号。使用useradd指令所创建的账号,其实是保存在/etc/passwd文本文件中。passwd设定的密码在/etc/shadow文件中。

5七、userdel : 删除用户

参数:

-f, --force     force removal of files, even if notowned by user
-h, --help      display this help message and exit
-r, --remove    在删除用户的同时一块儿把这个用户的宿主目录和邮件目录删除。

示例:

userdel -r newuser

5八、date : 根据给定格式显示日期或设置系统日期时间

(1)格式:

date [OPTION]…[+FORMAT]

(2)参数:

-d  显示字符串描述的时间

-f  显示DATEFILE文件中的每行时间

-r  显示文件的最后修改时间

-R  以RFC-2822兼容日期格式显示时间

-rfc-2822   以RFC-2822兼容日期格式显示时间

-s  设置时间为string

-u  显示或设定为Coordinated Universal Time时间格式

–help  显示date命令的帮助信息

–version   显示date命令的版本信息

(3)Format参数格式

%%  显示字符%

%a  星期几的缩写(Sun…Sat)

%A  星期几的完整名称(Sunday…Saturday)

%b  月份的缩写(Jan…Dec)

%B  月份的完整名称(January…December)

%c  日期与时间。只输入date指令也会显示一样的结果

%C  世纪(年份除100后去整) [00-99]

%d  日期(以01-31来表示)。

%D  日期(含年月日)。

%e  一个月的第几天 ( 1…31)

%F  日期,同%Y-%m-%d

%g  年份(yy)

%G  年份(yyyy)

%h  同%b

%H  小时(00…23)

%I  小时(01…12)

%j  一年的第几天(001…366)

%k  小时(0…23)

%l  小时(1…12)

%m  月份(01…12)

%M  分钟(00…59)

%n  换行

%N  纳秒(000000000…999999999)

%p  AM or PM

%P  am or pm

%r  12小时制时间(hh:mm:ss [AP]M)

%R  24小时制时间(hh:mm)

%s  从00:00:001970-01-01 UTC开始的秒数

%S  秒(00…60)

%t  制表符

%T  24小时制时间(hh:mm:ss)

%u  一周的第几天(1…7); 1 表示星期一

%U  一年的第几周,周日为每周的第一天(00…53)

%V  一年的第几周,周一为每周的第一天 (01…53)

%w  一周的第几天 (0…6); 0 表明周日

%W  一年的第几周,周一为每周的第一天(00…53)

%x  日期(mm/dd/yy)

%X  时间(%H:%M:%S)

%y  年份(00…99)

%Y  年份(1970…)

%z  RFC-2822 风格数字格式时区(-0500)

%Z  时区(e.g.,EDT), 没法肯定时区则为空

(4)示例:

a、设置系统时间

date -s"2013-11-14 00:00:00"

b、按各类格式显示当前日期时间

(i)只显示当前日期的年份

date +%Y

(ii)只显示当前日期的月份

date +%m

(iii)显示各类格式类型的日期

date +%D

date ‘+%Y-%m-%d’

date +%Y-%m-%d

date +%m/%d/%y

date +%m/%d/%Y

c、显示3天前的日期

date +%F --date=‘3day ago’

date +%F --date ‘3day ago’

date +%F --d ‘3day ago’

date +%F -d ‘-3day’

d、显示明天的日期

date +%F -d ‘nextago’

e、显示3天后的日期

date +%F -d ‘+3day’

date +%F -d ‘3day’

f、显示3小时前的时间

date +%H -d ‘-3hour’

g、显示3小时之后的时间

date +%H -d ‘3hour’

h、显示6分钟之前的时间

echo $(date+%Y%m%d%H%M -d ‘-6 min’)

i、显示6分钟之后的时间

echo $(date +%Y%m%d%H%M-d ‘6 min’)

j、显示20秒之前的时间

echo $(date+%Y%m%d%H%M%S -d ‘-20 sec’)

k、显示20秒之后的时间

echo $(date+%Y%m%d%H%M%S -d ‘20 sec’)

5九、hwclock : 显示与设定硬件时钟

在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是一般可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,以后系统时钟即独立运做。全部Linux相关指令与函数都是读取系统时钟的设定。

格式:

hwclock [–adjust][–debug][–directisa][–hctosys][–show][–systohc][–test]
[–utc][–version][–set --date=<日期与时间>]

参数:

–adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用–adjust参数,可以使hwclock根据先前的记录来估算硬件时钟的误差,并用来校订目前的硬件时钟。

–debug  显示hwclock执行时详细的信息。

–directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若没法存取时,可用此参数直接以I/O指令来存取硬件时钟。

–hctosys  将系统时钟调整为与目前的硬件时钟一致。

–set --date=<日期与时间>  设定硬件时钟。

–show  显示硬件时钟的时间与日期。

-w --systohc  将硬件时钟调整为与目前的系统时钟一致。

–test  仅测试程序,而不会实际更改硬件时钟。

-u --utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工做。

-v --version  显示版本信息。

示例:

查看当前的硬件日期和时间

hwclock

查看clock文件,确认是否设置了UTC:

cat /etc/default/rcS

UTC=yes

将当前时间和日期写入BIOS,避免重启后失效

hwclock -w

60、cal: 显示日历

6一、locate: 按名字查找文件,但只能查看updatedb库中的内容,需按期更新updatedb库

locate -n 1 cp  # 查询包括cp的文件,只显示查到的第一行

6二、chmod:改变权限属性

语法:

chown [选项]…[属主][:[组]] 文件…

参数:

u表示属主用户、g表示属组、o其它组用户、a全部用户(默认)

  • 表示增长权限、- 表示取消权限、= 表示惟一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示为可执行。

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

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

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

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

–help : 显示辅助说明

–version : 显示版本

示例:

chmod 777ett.txt

chmod –R 755oldboy/

chmod u+xett.txt

6三、chown: 改变文件属主和属组

语法:

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

参数:

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

示例:

chown oldboya.sh

chownoldboy.oldboy a.sh  或 chown oldboy:oldboy a.sh等价于 chgrp oldboy a.sh

chown .oldboya.sh   或 chown :oldboy a.sh

chown -Roldboy:oldboy wddg/

6四、umask:默认权限分配

语法 :

umask(选项)(参数)

选项:

-p:输出的权限掩码可直接做为指令来执行;

-S:大写S,以符号方式输出权限掩码。

实例 :

umask u=, g=w,o=rwx (等同于umask 027)

umask

umask 022

umask –p

umask 0333

umask –S

u=r,g=r,o=r

6五、id:显示用户id和组id信息

语法

id[-gGnru][–help][–version][用户名称]

选项

-a 打印用户名、UID 和该用户所属的全部组

-g或–group  显示用户所属群组的ID。

-G或–groups 显示用户所属附加群组的ID。

-n或–name  显示用户,所属群组或附加群组的名称。

-r或–real  显示实际ID。

-u或–user  显示用户ID。

–help   显示帮助。

–version   显示版本信息。

实例

id

uid=0(root) gid=0(root) groups=0(root)

id -gn

root

id -un

root

6六、chattr:改变文件属性(ext二、ext三、ext4)

语法

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录…]

选项

a:让文件或目录仅供附加用途。

b:不更新文件或目录的最后存取时间。

c:将文件或目录压缩后存放。

d:将文件或目录排除在倾倒操做以外。

i:不得任意更动文件或目录。

s:保密性删除文件或目录。

S:即时更新文件或目录。

u:预防之外删除。

-R  递归处理,将指定目录下的全部文件及子目录一并处理。

-v<版本编号>  设置文件或目录版本。

-V  显示指令执行过程。

+<属性>  开启文件或目录的该项属性。

-<属性>  关闭文件或目录的该项属性。

=<属性>  指定文件或目录的该项属性。

实例

chattr +i/etc/resolv.conf

chattr -i/etc/resolv.conf

6七、lsattr:列出文件的隐藏属性

语法

lsattr [-adlRvV][文件或目录…]

选项

-a  显示全部文件和目录,包括以".“为名称开头字符的额外内建,现行目录”.“与上层目录”…"。

-d  显示,目录名称,而非其内容。

-l  此参数目前没有任何做用。

-R  递归处理,将指定目录下的全部文件及子目录一并处理。

-v  显示文件或目录版本。

-V  显示版本信息。

实例

lsattr -Rd test/

6八、strace:诊断、调试、统计的工具

strace命令是一个集诊断、调试、统计与一体的工具,咱们可使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工做过程的目的。

strace的最简单的用法就是执行一个指定的命令,在指定的命令结束以后它也就退出了。在命令执行的过程当中,strace会记录和解析命令进程的全部系统调用以及这个进程所接收到的全部的信号值。

语法

strace [-dffhiqrtttTvxx ] [ command [ arg …] ]

strace -c [command [ arg…] ]

选项

-c 统计每一系统调用的所执行的时间,次数和出错的次数等

-d 输出strace关于标准错误的调试信息

-f 跟踪由fork调用所产生的子进程

-ff 若是提供-o filename,则全部进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号

-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪

-h 输出简要的帮助信息

-i 输出系统调用的入口指针

-q 禁止输出关于脱离的消息

-r 打印出相对时间关于,每个系统调用

-t 在输出中的每一行前加上时间信息

-tt 在输出中的每一行前加上时间信息,微秒级

-ttt 微秒级输出,以秒了表示时间

-T 显示每一调用所耗的时间

-v 输出全部的系统调用.一些调用关于环境变量,状态,输入输出等调用因为使用频繁,默认不输出

-V 输出strace的版本信息

-x 以十六进制形式输出非标准字符串 -xx 全部字符串以十六进制形式输出

-a column 设置返回值的输出位置.默认 为40

-e expr 指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]…

qualifier只能是trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否认符号.例如:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open之外的其余调用.有两个特殊的符号 all 和 none

注意有些shell使用!来执行历史记录里的命令,因此要使用\

-e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all

-e trace=file 只跟踪有关文件操做的系统调用

-e trace=process只跟踪有关进程控制的系统调用

-e trace=network跟踪与网络有关的全部系统调用

-e strace=signal跟踪全部与系统信号有关的 系统调用 -e trace=ipc 跟踪全部与进程通信有关的系统调用 -e abbrev=set 设定strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all

-e raw=set 将指定的系统调用的参数以十六进制显示

-e signal=set 指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号

-e read=set 输出从指定文件中读出 的数据.例如: -e read=3,5 -e write=set 输出写入到指定文件中的数据

-o filename 将strace的输出写入文件filename -p pid 跟踪指定的进程pid

-s strsize 指定输出的字符串的最大长度.默认为32.文件名一直所有输出

-u username 以username的UID和GID执行被跟踪的命令

实例

strace -f passwd

strace -c./test.sh

6九、crontab:定时任务命令

语法 crontab(选项)(参数)

选项

-e:编辑该用户的计时器设置(查看的文件是/var/spool/cron/<用户名称>,会进行语法检查);

-l:列出该用户的计时器设置(查看的文件是/var/spool/cron/<用户名称>);

-r:删除该用户的计时器设置;

-u <用户名称>:指定要设定计时器的用户名称。

实例

crontab -e

30 3,12 * * * /bin/sh /wddg/test.sh

crontab -l

30 */6 * * * * /bin/sh /wddg/test.sh

30 8-18/2 * * * /bin/sh /wddg/test.sh

70、groupadd:添加用户组

语法

groupadd [-g gid] [-o][-r][-f] groupname

选项

-g gid:指定用户组GID值。默认从500开始。

-r:创建系统用户组。GID值会比/etc/login.defs中定义的UID_MIN值要小

-f:新增用户组时,可强制覆盖一个已存在的用户组账号

实例

groupadd k1 -g 1000

7一、passwd:修改用户密码

语法

passwd [参数]username

选项

-k  --keep-tokens :保留即将过时的用户在期满后仍能使用

-l  --lock :锁定用户无权更改其密码,只能root才能操做

-u --unlock :解除锁定

-S --status :查看用户状态

-d --delete :删除用户密码,只能root才能操做

-f --force :强制操做,只能root才能操做

-n mindays :修改密码的最小天数,也就是mindays天内不能再次修改密码

-i inactivedays : 密码有效期

-w warndays :密码过时前warndays天警告时间

-x maximum :两次密码修改之间的天数,也就是maximum天内必须修改密码,只能root才能操做

–stdin :从stdin读入密码,不会有提示

实例

echo “123456” | passed --stdin test01

passwd test01

7二、chage:修改密码有效期

语法

chage [参数选项]username

选项

-d :指定密码最后修改日期

-E :密码到期的日期,过了这天,此帐号将不可用。0表示立刻过时,-1表示永不过时。

-h :显示帮助信息并退出

-I :密码过时后,锁定帐号的天数

-l :列出用户以及密码的有效期

-m :密码能够更改的最小天数。为零表明任什么时候候均可以更改密码。

-M :密码保持有效的最大天数。

-W :密码过时前,提早收到警告信息的天数

实例

chage -E “2018/02/03” test

chage -l test

7三、groupdel:删除用户组

语法

groupdel groupname

实例

groupdel test01

7四、usermod:修改用户信息命令

语法

usermod (选项)username

选项

-d :指定密码最后修改日期

-c<备注> :修改用户账号的备注文字

-d<登入目录> :修改用户登入时的目录

-e<有效期限> :修改账号的有效期限

-f<缓冲天数> :修改在密码过时后多少天即关闭该账号

-g<群组> :修改用户所属的群组

-G<群组> :修改用户所属的附加群组

-l<账号名称> :修改用户账号名称

-L :锁定用户密码,使密码无效

-s :修改用户登入后所使用的shell

-u :修改用户ID

-U :解除密码锁定

实例

usermod -s /bin/bash test

usermod -c “abcd” test

7五、groups:查看当前或指定用户所在组的组成员

语法

groups [username]

实例

groups :查看当前用户所在的组

groups test:查看test用户所在的组

7六、visudo:编辑sudo配置文件/etc/sudoers,有语法检查

7七、finger:查看用户信息

语法

finger [username]

实例

finger test

7八、route:路由配置

语法

route (选项)(参数)

选项

-A:设置地址类型

-C:打印将Linux核心的路由缓存

-v:详细信息模式

-n:不执行DNS反向查找,直接显示数字形式的IP地址

-e:netstat格式显示路由表

-net:到一个网络的路由表

-host:到一个主机的路由表。

参数

Add:增长指定的路由记录

Del:删除指定的路由记录

Target:目的网络或目的主机

gw:设置默认网关

mss:设置TCP的最大区块长度(MSS),单位MB

window:指定经过路由表的TCP链接的TCP窗口大小

dev:路由记录所表示的网络接口。

实例

查看网关

route

route –n

Kernel IP routing table

Destination     Gateway      Genmask         Flags Metric  Ref  Use  Iface

112.124.12.0    0.0.0.0         255.255.252.0   U       0  0   0  eth1

10.160.0.0      0.0.0.0        255.255.240.0    U       0   0   0   eth0

0.0.0.0         12.14.15.27    0.0.0.0        UG      0   0   0   eth1

其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:

U Up表示此路由当前为启动状态。

H Host,表示此网关为一主机。

G Gateway,表示此网关为一路由器。

R Reinstate Route,使用动态路由从新初始化的路由。

D Dynamically,此路由是动态性地写入。

M Modified,此路由是由路由守护程序或导向器动态修改。

! 表示此路由当前为关闭状态。

增长一条到达244.0.0.0的路由。

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

增长一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。

route add -net 224.0.0.0 netmask 240.0.0.0 reject

删除路由记录:

route del -net 224.0.0.0 netmask 240.0.0.0

route del -net 224.0.0.0 netmask 240.0.0.0 reject

删除默认网关

route del default gw 192.168.1.1

添加默认网关

route add default gw 192.168.1.1

7九、ping:测试主机之间网络的连通性

语法

ping(选项) 目标主机

选项

-d:使用Socket的SO_DEBUG功能

-c<完成次数>:设置完成要求回应的次数

-f:极限检测

-i<间隔秒数>:指定收发信息的间隔时间

-I<网络界面>:使用指定的网络界面送出数据包

-l<前置载入>:设置在送出要求信息以前,先行发出的数据包

-n:只输出数值

-p<范本样式>:设置填满数据包的范本样式

-q:不显示指令执行过程,开头和结尾的相关信息除外

-r:忽略普通的RoutingTable,直接将数据包送到远端主机上

-R:记录路由过程

-s<数据包大小>:设置数据包的大小

-t<存活数值>:设置存活数值TTL的大小

-v:详细显示指令的执行过程。 参数 目的主机:指定发送ICMP报文的目的主机。

实例

ping 10.11.12.13

ping www.baidu.com

ping –c10 –s648 –i3 www.baidu.com

80、dig:域名查询工具,能够用来测试域名系统工做是否正常

语法

dig(选项)(参数)

选项

@<服务器地址>:指定进行域名解析的域名服务器

-b:当主机具备多个IP地址,指定使用本机的哪一个IP地址向域名服务器发送域名查询请求

-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着须要批处理查询的DNS任务信息

-P:指定域名服务器所使用端口号

-t<类型>:指定要查询的DNS数据类型

-x:执行逆向域名查询

-4:使用IPv4

-6:使用IPv6

-h:显示指令帮助信息。

参数

主机:指定要查询域名主机

查询类型:指定DNS查询的类型

查询类:指定查询DNS的class

查询选项:指定查询选项。

实例

dig www.linuxde.net

;<<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.1<<>> www.linuxde.net

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2115

;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:

;www.linuxde.net. IN A

;; ANSWER SECTION:

www.linuxde.net.       0 IN    CNAME       host.1.linuxde.net.

host.1.linuxde.net. 0 IN   A           100.42.212.8

;; AUTHORITY SECTION:

linuxde.net.   8   IN NS f1g1ns2.dnspod.net.

linuxde.net.   8   IN NS f1g1ns1.dnspod.net.

;; Query time: 0 msec

;; SERVER: 202.96.104.15#53(202.96.104.15)

;; WHEN: Thu Dec 26 11:14:37 2013

;; MSG SIZE rcvd: 121

8一、nslookup:域名查询工具

语法

nslookup(选项) 域名

选项

-sil:不显示任何警告信息。

实例

nslookup www.linuxde.net

Server: 202.96.104.15

Address: 202.96.104.15#53

Non-authoritative answer: www.linuxde.net canonical name =host.1.linuxde.net.

Name: host.1.linuxde.net

Address: 100.42.212.8

8二、traceroute:路由追踪(windows下是tracert),默认发送的数据包大小是40字节

语法

traceroute (选项) 目的主机IP地址或主机名

选项

-d:使用Socket层级的排错功能

-f<存活数值>:设置第一个检测数据包的存活数值TTL的大小

-F:设置勿离断位

-g<网关>:设置来源路由网关,最多可设置8个

-i<网络界面>:使用指定的网络界面送出数据包

-I:使用ICMP回应取代UDP资料信息

-m<存活数值>:设置检测数据包的最大存活数值TTL的大小

-n:直接使用IP地址而非主机名称

-p<通讯端口>:设置UDP传输协议的通讯端口

-r:忽略普通的RoutingTable,直接将数据包送到远端主机上。

-s<来源地址>:设置本地主机送出数据包的IP地址

-t<服务类型>:设置检测数据包的TOS数值

-v:详细显示指令的执行过程

-w<超时秒数>:设置等待远端主机回报的时间

-x:开启或关闭数据包的正确性检验。

实例

traceroute www.58.com

traceroute to www.58.com (211.151.111.30), 30 hops max, 40 bytepackets

1 unknown (192.168.2.1) 3.453 ms 3.801 ms 3.937 ms

2 221.6.45.33 (221.6.45.33) 7.768 ms 7.816 ms 7.840 ms

3 221.6.0.233 (221.6.0.233) 13.784 ms 13.827 ms 221.6.9.81(221.6.9.81) 9.758 ms

11 211.151.104.6 (211.151.104.6) 39.585 ms 39.502 ms 39.598 ms

12 211.151.111.30 (211.151.111.30) 35.161 ms 35.938 ms 36.005 ms

8三、telnet:登陆远程主机

说明

telnet命令用于登陆远程主机,对远程主机进行管理。telnet由于采用明文传送报文,安全性很差,不少Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有不少别的系统可能采用了telnet方式来提供远程登陆,所以弄清楚telnet客户端的使用方式还是颇有必要的。

语法

telnet (选项) 远程主机 端口

选项

-8:容许使用8位字符资料,包括输入与输出

-a:尝试自动登入远端系统

-b<主机别名>:使用别名指定远端主机名称

-c:不读取用户专属目录里的.telnetrc文件

-d:启动排错模式

-e<脱离字符>:设置脱离字符

-E:滤除脱离字符

-f:此参数的效果和指定"-F"参数相同

-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机

-k<域名>:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名

-K:不自动登入远端主机

-l<用户名称>:指定要登入远端主机的用户名称

-L:容许输出8位字符资料

-n<记录文件>:指定文件记录相关信息

-r:使用相似rlogin指令的用户界面

-S<服务类型>:设置telnet连线所需的ip TOS信息

-x:假设主机有支持数据加密的功能,就使用它

-X<认证形态>:关闭指定的认证形态。

实例

telnet 192.168.2.10

Trying 192.168.2.10…

Connected to 192.168.2.10 (192.168.2.10).

Escape character is ‘^]’.

localhost (Linux release2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:44 EST 2012)

login: root

Password:

Login incorrect

8四、nmap:网络探测和安全审核工具

说明

nmap命令是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

语法

nmap (选项)  IP

选项

-O:激活操做探测

-P0:值进行扫描,不ping主机

-PT:是同TCP的ping

-sV:探测服务版本信息

-sP:ping扫描,仅发现目标主机是否存活

-ps:发送同步(SYN)报文

-PU:发送udp ping

-PE:强制执行直接的ICMPping

-PB:默认模式,可使用ICMPping和TCPping

-6:使用IPv6地址

-v:获得更多选项信息

-d:增长调试信息地输出

-oN:以人们可阅读的格式输出

-oX:以xml格式向指定文件输出信息

-oM:以机器可阅读的格式输出

-A:使用全部高级扫描选项

–resume:继续上次执行完的扫描

-P:指定要扫描的端口,能够是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围

-e:在多网络接口Linux系统中,指定扫描使用的网络接口

-g:将指定的端口做为源端口进行扫描

–ttl:指定发送的扫描报文的生存期

–packet-trace:显示扫描过程当中收发报文统计

–scanflags:设置在扫描报文中的TCP标志。

实例

nmap www.linuxde.net

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-12-2800:06 CST

Interesting ports on 100-42-212-8.static.webnx.com (100.42.212.8):

Not shown: 1678 filtered ports

PORT STATE service

22/tcp open ssh

80/tcp open http

Nmap finished: 1 IP address (1 host up) scanned in 45.870 seconds

8五、tcpdump:抓包命令

说明

tcpdump命令是一款sniffer工具,它能够打印全部通过网络接口的数据包的头信息,也可使用-w选项将数据包保存到文件中,方便之后分析。

若是不指定网卡,默认tcpdump只会监视第一个网络接口,通常是eth0。

若是本地网络经过网关连到了另外一网络,则另外一网络并不能算做本地网络。

语法

tcpdump (选项)

选项

-a:尝试将网络和广播地址转换成名称

-c<数据包数目>:收到指定的数据包数目后,就中止进行倾倒操做

-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出

-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出

-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出

-e:在每列倾倒资料上显示链接层级的文件头

-f:用数字显示网际网络地址

-F<表达文件>:指定内含表达方式的文件

-i<网络界面>:使用指定的网络截面送出数据包

-l:使用标准输出列的缓冲区

-n:不把主机的网络地址转换成名字

-N:不列出域名

-O:不将数据包编码最佳化

-p:不让网络界面进入混杂模式

-q :快速输出,仅列出少数的传输协议信息

-r<数据包文件>:从指定的文件读取数据包数据

-s<数据包大小>:设置每一个数据包的大小

-S:用绝对而非相对数值列出TCP关联数

-t:在每列倾倒资料上不显示时间戳记

-tt: 在每列倾倒资料上显示未经格式化的时间戳记

-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型

-v:详细显示指令执行过程

-vv:更详细显示指令执行过程

-x:用十六进制字码列出数据包资料

-w<数据包文件>:把数据包数据写入指定的文件。

实例

直接启动tcpdump将监视第一个网络接口上全部流过的数据包

tcpdump

监视指定网络接口的数据包

tcpdump -i eth1

打印全部进入或离开sundown的数据包。

tcpdump host sundown

也能够指定ip,例如截获全部210.27.48.1 的主机收到的和发出的全部的数据包

tcpdump host 210.27.48.1

打印helios 与 hot 或者与 ace 之间通讯的数据包

tcpdump host helios and hotoracehotorace
截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通讯

tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 )

打印ace与任何其余主机之间通讯的IP 数据包, 但不包括与helios之间的数据包.

tcpdump ip host ace and not helios

若是想要获取主机210.27.48.1除了和主机210.27.48.2以外全部主机通讯的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

截获主机hostname发送的全部数据

tcpdump -i eth0 src host hostname

监视全部送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

若是想要获取主机210.27.48.1接收或发出的telnet包

tcpdump tcp port 23 host 210.27.48.1

监听本机eth0网卡接收或发出的ping包

tcpdump –n icmp –i eth0

对本机的udp 123 端口进行监视 123 为ntp的服务端口

tcpdump udp port 123

打印本地主机与Berkeley网络上的主机之间的全部通讯数据包

tcpdump net ucb-ether

注意:ucb-ether此处可理解为“Berkeley网络”的网络地址,此表达式最原始的含义可表达为:打印网络地址为ucb-ether的全部数据包

打印全部经过网关snup的ftp数据包

tcpdump 'gateway snup and (port ftp or ftp-data)'

注意:表达式被单引号括起来了,这能够防止shell对其中的括号进行错误解析

打印全部源地址或目标地址是本地主机的IP数据包

tcpdump ip and not net localnet

8六、free:显示当前系统未使用的和已使用的内存数

说明

free命令能够显示当前系统未使用的和已使用的内存数目,还能够显示被内核使用的内存缓冲区。

语法

free(选项)

选项

-b:以Byte为单位显示内存使用状况

-k:以KB为单位显示内存使用状况

-m:以MB为单位显示内存使用状况

-g:以GB为单位显示内存使用状况

-o:不显示缓冲区调节列

-s<间隔秒数>:持续观察内存使用情况

-t:显示内存总和列

-V:显示版本信息。

实例

free -m

total used free shared buffers cached

Mem:                     2016   1973 42  0      163        1497

-/+ buffers/cache:               312 1703

Swap:                    4094    0       4094

第一部分Mem行解释:

total:内存总数

used:已经使用的内存数

free:空闲的内存数

shared:当前已经废弃不用

buffers Buffer:缓存内存数

cached Page:缓存内存数。

关系:total = used + free

第二部分(-/+buffers/cache)解释:

(-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached

(+buffers/cache) free内存数:第一部分Mem行中的 free + buffers + cached

根据Linux的机制,系统会将没有使的内存的当缓存用,可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是能够挪用的内存总数,也就是实际剩余的内存。

buffers和cache的区别:

buffers是写入缓冲区,系统会先写buffers,再由sync将buffers缓冲区数据写入磁盘。

cache是读出缓存,Linux将磁盘数据读出后放到cache。

二者都在内在里

第三部分是指交换分区。

8七、dd:复制文件并对原文件的内容进行转换和格式化处理

说明

dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令每每能够获得出人意料的效果。用的比较多的仍是用dd来备份裸设备。可是不推荐,若是须要备份oracle裸设备,可使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。

建议在有须要的时候使用dd 对物理磁盘操做,若是是文件系统的话仍是使用tar backup cpio等其余命令更加方便。另外,使用dd对磁盘操做时,最好使用块设备文件。

语法

dd  (选项)

选项

bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数

cbs=<字节数>:转换时,每次只转换指定的字节数

conv=<关键字>:指定文件转换的方式

count=<区块数>:仅读取指定的区块数

ibs=<字节数>:每次读取的字节数

obs=<字节数>:每次输出的字节数

if=<文件>: 表明输入文件

of=<文件>:输出到文件

seek=<区块数>:一开始输出时,跳过指定的区块数

skip=<区块数>:一开始读取时,跳过指定的区块数

–help:帮助

–version:显示版本信息。

实例

a、建立了一个1M大小的文件sun.txt

dd if=/dev/zero of=sun.txt bs=1M count=1

1+0 records in

1+0 records out

1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s

(能够看出dd命令来测试内存操做速度:172 MB/s)

du -sh sun.txt

1.1M sun.txt

b、参数解释:

if 表明输入文件。若是不指定if,默认就会从stdin中读取输入。

of 表明输出文件。若是不指定of,默认就会将stdout做为默认输出。

bs 表明字节为单位的块大小。

count 表明被复制的块数。

/dev/zero 是一个字符设备,会不断返回0值字节(\0)。

c、块大小可使用的计量单位表

单元大小
代码
字节(1B)

字节(2B)
w
 块(512B)
b
千字节(1024B)
k
兆字节(1024KB)
M
吉字节(1024MB)
G
8八、fdisk:分区命令,只能对小于2T的磁盘进行分区

说明

fdisk命令用于观察硬盘实体使用状况,也可对硬盘分区.只能对小于2T的磁盘进行分区.

语法

fdisk (选项) 设备文件(指定要进行分区或者显示分区的硬盘设备文件)

选项

-b 分区大小:指定每一个分区的大小;

-l:列出指定的外围设备的分区表情况;

-s 分区编号:将指定的分区大小输出到标准输出上,单位为区块;

-u:搭配-l参数列表,会用分区数目取代柱面数目,来表示每一个分区的起始地址;

-v:显示版本信息。

实例

a、首先选择要进行操做的磁盘:

fdisk /dev/sdb

b、输入m列出能够执行的命令:

command (m for help): m

Command action

a   toggle a bootable flag

b   edit bsd disklabel

c   toggle the dos compatibilityflag

d   delete a partition

l   list known partition types

m   print this menu

n   add a new partition

o   create a new empty DOSpartition table

p   print the partition table

q   quit without saving changes

s   create a new empty Sundisklabel

t   change a partition’s system id

u   change display/entry units

v   verify the partition table

w   write table to disk and exit

x   extra functionality (expertsonly)

c、输入p列出磁盘目前的分区状况:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280bytes

Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1           1        8001  8e  Linux LVM

/dev/sdb2               2          26      200812+ 83  Linux

d、输入d而后选择分区,删除现有分区:

Command (m for help): d

Partition number (1-4): 1

Command (m for help): d

Selected partition 2

e、查看分区状况,确认分区已经删除:

Command (m for help): print

Disk /dev/sdb: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks  Id  System

Command (m for help):

f、输入n创建新的磁盘分区,首先创建两个主磁盘分区:

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p    //创建主分区

Partition number (1-4): 1  //分区号

First cylinder (1-391, default 1): //分区起始位置

Using default value 1

last cylinder or +size or +sizeM or +sizeK (1-391, default 391):100  //分区结束位置,单位为扇区

Command (m for help): n  //再创建一个分区

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 2  //分区号为2

First cylinder (101-391, default 101):

Using default value 101

Last cylinder or +size or +sizeM or +sizeK (101-391, default 391):+200M  //分区结束位置,单位为M

g、确认分区创建成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         100      803218+ 83  Linux

/dev/sdb2             101         125      200812+ 83  Linux

h、再创建一个逻辑分区:

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

e  //选择扩展分区

Partition number (1-4): 3

First cylinder (126-391, default 126):

Using default value 126

Last cylinder or +size or +sizeM or +sizeK (126-391, default 391):

Using default value 391

i、确认扩展分区创建成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         100      803218+ 83  Linux

/dev/sdb2             101         125      200812+ 83  Linux

/dev/sdb3             126         391    2136645    5  Extended

j、在扩展分区上创建两个逻辑分区:

Command (m for help): n

Command action

l   logical (5 or over)

p   primary partition (1-4)

l //选择逻辑分区

First cylinder (126-391, default 126):

Using default value 126

Last cylinder or +size or +sizeM or +sizeK (126-391, default 391):+400M

Command (m for help): n

Command action

l   logical (5 or over)

p   primary partition (1-4)

l

First cylinder (176-391, default 176):

Using default value 176

Last cylinder or +size or +sizeM or +sizeK (176-391, default 391):

Using default value 391

k、确认逻辑分区创建成功:

Command (m for help): p

Disk /dev/sdb: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1         100      803218+ 83  Linux

/dev/sdb2             101         125      200812+ 83  Linux

/dev/sdb3             126         391    2136645    5  Extended

/dev/sdb5             126         175      401593+ 83  Linux

/dev/sdb6             176         391    1734988+  83  Linux

Command (m for help):

从上面的结果咱们能够看到,在硬盘sdb咱们创建了2个主分区(sdb1,sdb2),1个扩展分区(sdb3),2个逻辑分区(sdb5,sdb6)

注意:主分区和扩展分区的磁盘号位1-4,也就是说最多有4个主分区或者扩展分区,逻辑分区开始的磁盘号为5,所以在这个实验中试没有sdb4的。

l、最后对分区操做进行保存:

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

m、创建好分区以后咱们还须要对分区进行格式化才能在系统中使用磁盘。

在sdb1上创建ext2分区:

mkfs.ext2 /dev/sdb1

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

100576 inodes, 200804 blocks

10040 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=209715200

7 block groups

32768 blocks per group, 32768 fragments per group

14368 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

在sdb6上创建ext3分区:

mkfs.ext3 /dev/sdb6

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

217280 inodes, 433747 blocks

21687 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=444596224

14 block groups

32768 blocks per group, 32768 fragments per group

15520 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840,229376, 294912

Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

[root@localhost ~]#

n、创建两个目录/oracle和/web,将新建好的两个分区挂载到系统:

mkdir /oracle

mkdir /web

mount /dev/sdb1 /oracle

mount /dev/sdb6 /web

o、查看分区挂载状况:

df -h

文件系统              容量  已用 可用 已用% 挂载点

/dev/mapper/VolGroup00-LogVol00

6.7G  2.8G  3.6G 44% /

/dev/sda1             99M   12M   82M 13% /boot

tmpfs                125M     0  125M  0% /dev/shm

/dev/sdb1            773M  808K  733M  1% /oracle

/dev/sdb6            1.7G   35M  1.6G  3% /web

p、若是须要每次开机自动挂载则须要修改/etc/fstab文件,加入两行配置:

vim /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1

LABEL=/boot            /boot                   ext3    defaults        1 2

tmpfs                  /dev/shm                tmpfs   defaults        0 0

devpts                 /dev/pts               devpts  gid=5,mode=620  0 0

sysfs                  /sys                    sysfs   defaults        0 0

proc                   /proc                   proc    defaults        0 0

/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

/dev/sdb1              /oracle                 ext2    defaults        0 0

/dev/sdb6              /web                    ext3    defaults        0 0

8九、parted:分区命令,适合于对大于2T的磁盘进行分区,且必须将磁盘转为GPT格式

说明

parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不一样,它支持调整分区的大小。做为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,可是,它能够处理最多见的分区格式,包括:ext二、ext三、fat1六、fat3二、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

语法

parted (选项) 要执行的parted命令  指定要分区的硬盘所对应的设备文件

选项

-h:显示帮助信息;

-i:交互式模式;

-s:脚本模式,不提示用户;

-v:显示版本号。

实例

parted /dev/sdb

GNU Parted Copyright © 1998 - 2004 freeSoftware Foundation, Inc.

This program is free software, covered by the GNU General PublicLicense.

This program is distributed in the hope that it will be useful, butWITHOUT ANY

WARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A

PARTICULAR PURPOSE.  See theGNU General Public License for more details.

(parted)mklabel gpt

(parted)print

/dev/sdb的磁盘几何结构:0.000-2048.000兆字节

磁盘标签类型:gpt

Minor   起始点      终止点 文件系统   名称                 标志

(parted)mkpart primary 0 2048 <-----上面print显示的数字

(parted)print

/dev/sdb的磁盘几何结构:0.000-2048.000兆字节

磁盘标签类型:gpt

Minor   起始点      终止点 文件系统   名称                 标志

1          0.017   2047.983

(parted)quit

90、mount:用于加载文件系统到指定的加载点

说明

mount命令用于加载文件系统到指定的加载点。此命令的最经常使用于挂载cdrom,使咱们能够访问cdrom中的数据,由于你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。

语法

mount (选项) 指定要加载的文件系统对应的设备名  指定加载点目录

选项

-V:显示程序版本;

-l:显示已加载的文件系统列表;

-h:显示帮助信息并退出;

-v:冗长模式,输出指令执行的详细信息;

-n:加载没有写入文件“/etc/mtab”中的文件系统;

-r:将文件系统加载为只读模式;

-a:加载文件“/etc/fstab”中描述的全部文件系统。

-t vfstype:指定文件系统的类型,一般没必要指定。mount 会自动选择正确的类型。

经常使用类型有:

光盘或光盘镜像             :iso9660
DOS fat16文件系统         :msdos
Windows 9x fat32文件系统  :vfat
Windows NT ntfs文件系统   :ntfs
Mount Windows文件网络共享 :smbfs
UNIX(LINUX) 文件网络共享   :nfs

-o options:主要用来描述设备或档案的挂接方式。

经常使用的参数有:

loop     :用来把一个文件当成硬盘分区挂接上系统
ro       :采用只读方式挂接设备
rw       :采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集

实例

mount -t auto /dev/cdrom /mnt/cdrom

9一、umount:卸载已经加载的文件系统

说明

umount命令用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统,不过最好仍是经过挂载点卸载,以避免使用绑定挂载(一个设备,多个挂载点)时产生混乱。

语法

umount (选项) 指定要卸载的文件系统或者其对应的设备文件名

选项

-a:卸除/etc/mtab中记录的全部文件系统;

-h:显示帮助;

-n:卸除时不要将信息存入/etc/mtab文件中;

-r:若没法成功卸除,则尝试以只读的方式从新挂入文件系统;

-t<文件系统类型>:仅卸除选项中所指定的文件系统;

-f:强制卸载

-l:lazy,延迟卸载

-v:执行时显示详细的信息;

-V:显示版本信息。

实例

umount -v /dev/sda1

umount -v /mnt/mymount/

若是设备正忙,卸载即告失败。卸载失败的常见缘由是,某个打开的shell当前目录为挂载点里的某个目录:

umount -v /mnt/mymount/

umount: /mnt/mymount: device is busy

umount: /mnt/mymount: device is busy

有时,致使设备忙的缘由并很差找。碰到这种状况时,能够强制卸载,也能够用lsof列出已打开文件,而后搜索列表查找待卸载的挂载点。

能够强制卸载

umount –lf /mnt/nfs

也能够用lsof列出已打开文件,而后搜索列表查找待卸载的挂载点:

lsof | grep mymount         #查找mymount分区里打开的文件

bash   9341  francois cwd   DIR   8,1  1024    2 /mnt/mymount

从上面的输出可知,mymount分区没法卸载的缘由在于,francois运行的PID为9341的bash进程。

kill -9 9341

也能够经过fuser来kill pid

fuser -m /boot 将会显示使用这个模块的pid

fuser -mk /boot 将会直接kill那个pid

对付系统文件正忙的另外一种方法是执行延迟卸载:

umount -vl /mnt/mymount/     #执行延迟卸载

延迟卸载(lazy unmount)会当即卸载目录树里的文件系统,等到设备再也不繁忙时才清理全部相关资源。卸载可移动存储介质还能够用eject命令。下面这条命令会卸载cd并弹出CD:

eject /dev/cdrom      #卸载并弹出CD

9二、mkfs:用于在设备上(一般为硬盘)建立Linux文件系统

说明

mkfs命令用于在设备上(一般为硬盘)建立Linux文件系统。mkfs自己并不执行创建文件系统的工做,而是去调用相关的程序来执行。

语法

mkfs (选项) 指定要建立的文件系统对应的设备文件名或指定文件系统的磁盘块数

选项

fs:指定创建文件系统时的参数;

-t<文件系统类型>:指定要创建何种文件系统;

-v:显示版本信息与详细的使用方法;

-V:显示简要的使用方法;

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

实例

在/dev/hda5上建一个msdos的档案系统,同时检查是否有坏轨存在,而且将过程详细列出来:

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

mkfs -t ext3 /dev/sda6     //将sda6分区格式化为ext3格式

mkfs -t ext2 /dev/sda7     //将sda7分区格式化为ext2格式

9三、tune2fs:容许系统管理员调整“ext2/ext3”文件系统中的可该参数

说明

tune2fs命令容许系统管理员调整“ext2/ext3”文件系统中的可该参数。Windows下面若是出现意外断电死机状况,下次开机通常都会出现系统自检。Linux系统下面也有文件系统自检,并且是能够经过tune2fs命令,自行定义自检周期及方式

语法

tune2fs (选项) 指定调整的文件系统或者其对应的设备文件名

选项

-c:调整最大加载次数;

-C:设置文件系统已经被加载的次数;

-e:设置内核代码检测到错误时的行为;

-f:强制执行修改,即便发生错误;

-i:设置相邻两次文件系统检查的相隔时间;

-j:为“ext2”文件系统添加日志功能,将其转换为“ext3”文件系统;

-l:显示文件超级块内容;

-L:设置文件系统卷标;

-m:显示文件保留块的百分比;

-M:设置文件系统最后被加载到的目录;

-o:设置或清除文件系统加载的特性或选项;

-O:设置或清除文件系统的特性或选项;

-r:设置文件系统保留块的大小;

-T:设置文件系统上次被检查的时间;

-u:设置可使用文件系统保留块的用户;

-U:设置文件系统的UUID。

实例

tune2fs -c 30 /dev/hda1      设置强制检查前文件系统能够挂载的次数

tune2fs -c -l /dev/hda1      关闭强制检查挂载次数限制。

tune2fs -i 10 /dev/hda1     10天后检查

tune2fs -i 1d /dev/hda1      1天后检查

tune2fs -i 3w /dev/hda1      3周后检查

tune2fs -i 6m /dev/hda1      半年后检查

tune2fs -i 0 /dev/hda1       禁用时间检查

tune2fs -j /dev/hda1         添加日志功能,将ext2转换成ext3文件系统

tune2fs -r 40000 /dev/hda1   调整/dev/hda1分区的保留空间为40000个磁盘块

tune2fs -o acl,user_xattr /dev/hda1    设置/dev/hda1挂载选项,启用Posix Access Control Lists和用户指定的扩展属性

9四、dumpe2fs:用于打印“ext2/ext3”文件系统的超级块和快组信息

说明

用于打印“ext2/ext3”文件系统的超级块和快组信息

语法

dumpe2fs (选项) 指定要查看信息的文件系统

选项

-b:打印文件系统中预留的块信息;

-ob<超级块>:指定检查文件系统时使用的超级块;

-OB<块大小>:检查文件系统时使用的指定的块大小;

-h:仅显示超级块信息;

-i:从指定的文件系统映像文件中读取文件系统信息;

-x:以16进制格式打印信息块成员。

实例

dumpe2fs /dev/hda1

dumpe2fs 1.39 (29-May-2006)

Filesystem volume name:   /

last mounted on:         

Filesystem UUID:         845ccd40-1f3b-4729-a63d-cb80f51b082a

Filesystem magic number: 0xEF53

Filesystem revision #:    1(dynamic)

Filesystem features:     has_journal ext_attr resize_inode dir_index filetype needs_recoverysparse_super large_file

Default mount options:   user_xattr acl

Filesystem state:        clean

Errors behavior:         Continue

Filesystem OS type:       Linux

Inode count:             5242880

Block count:             5241817

Reserved block count:     262090

free blocks:             4434157

Free inodes:             5170836

First block:              0

Block size:               4096

Fragment size:            4096

Reserved GDT blocks:      1022

Blocks per group:        32768

Fragments per group:     32768

Inodes per group:        32768

Inode blocks per group:   1024

Filesystem created:       SunMar 24 02:09:14 2013

Last mount time:          ThuAug  1 16:42:07 2013

Last write time:          ThuAug  1 16:42:07 2013

Mount count:              10

Maximum mount count:      -1

Last checked:             Sun Mar 24 02:09:14 2013

Check interval:           0()

Reserved blocks uid:      0(user root)

Reserved blocks gid:      0(group root)

First inode:              11

Inode size:               128

Journal inode:            8

First orphan inode:       3735559

Default directory hash:   tea

Directory Hash Seed:     e3f7162e-1194-4161-805d-763db89dbc69

Journal backup:          inode blocks

Journal size:             128M

Group 0: (Blocks 0-32767)

Primary superblock at0, Group descriptors at 1-2

Reserved GDT blocks at3-1024

Block bitmap at 1025(+1025), Inode bitmap at 1026 (+1026)

Inode table at 1027-2050(+1027)

0 free blocks, 32757 freeinodes, 2 directories

Free blocks:

Free inodes: 12-32768

9五、showmount:查询mountd守护进程,以显示NFS服务器加载的信息。

说明

showmount命令用于查询mountd守护进程,以显示NFS服务器加载共享目录的相关信息

语法

showmount (选项) 指定NFS服务器的ip

选项

-d:仅显示已被NFS客户端加载的目录;

-e:显示NFS服务器上全部的共享目录。

-a:以IP:/dir格式显示NFS服务器的IP地址和可被挂载的目录

实例

showmount –e 192.168.1.8

showmount –d 192.168.1.8

showmount –a 192.168.1.8

9六、exportfs:用来管理当前NFS共享的文件系统列表

说明

exportfs命令是NFS服务的管理命令。能够加载NFS配置生效和,还能够直接配置NFS共享目录,也就是无需配置/etc/exports实现共享(但重启后失效)

语法

exportfs (选项)

选项

-a:打开或取消全部目录共享。

-o:options,…指定一列共享选项,与 exports(5) 中讲到的相似。

-i:忽略 /etc/exports 文件,从而只使用默认的和命令行指定的选项。

-r:从新共享全部目录。它使/var/lib/nfs/xtab 和/etc/exports 同步。 它将 /etc/exports 中已删除的条目从 /var/lib/nfs/xtab 中删除,将内核共享表中任何再也不有效的条目移除。

-u:取消一个或多个目录的共享。

-f:在“新”模式下,刷新内核共享表以外的任何东西。 任何活动的客户程序将在它们的下次请求中获得 mountd添加的新的共享条目。

-v:输出详细信息。当共享或者取消共享时,显示在作什么。 显示当前共享列表的时候,同时显示共享的选项。

实例

exportfs -rv :加载配置生效,等价于/etc/init.d/nfs reload

exportfs –o rw,sync,all_squash,anonuid=555,anongid=555192.126.1.0/24:/data

9七、rpcinfo:查看rpc中注册的服务

说明

rpcinfo命令用于显示那些使用rpc/portmap注册的程序的信息,并向程序进行RPC调用,检查它们是否正常运行。

语法

rpcinfo -p [host]

rpcinfo [-n port] -u |- t host program [version]

rpcinfo -b | -d program version

选项

-p (probe,探测) 列出全部在host用portmap注册的RPC程序,若是没有指定host,就查找本机上的RPC程序。

-n (port number,端口号) 根据-t或者-u,使用编号为port的端口,而不是由portmap指定的端口号。

-u (UDP) UDP RPC调用host上程序program的version版本(若是指定的话),并报告是否接收到响应。

-t (TCP) TCP RPC调用host上程序program的version版本(若是指定的话),并报告是否接收到响应。

-b (broadcast,广播) 向程序program的version版本进行RPC广播,并列出响应的主机。

-d (delete,删除) 将程序program的version版本从本机的RPC注册表中删除。只有具备root特权的用户才可使用这个选项。

实例

rpcinfo –p localhost

9八、ssh:远程登陆命令

说明

ssh命令是openssh套件中的客户端链接工具,能够给予ssh加密协议实现安全的远程登陆服务器。

语法

ssh (选项) 要链接的远程ssh服务器

选项

-1:强制使用ssh协议版本1;

-2:强制使用ssh协议版本2;

-4:强制使用IPv4地址;

-6:强制使用IPv6地址;

-A:开启认证代理链接转发功能;

-a:关闭认证代理链接转发功能;

-b:使用本机指定地址做为对应链接的源

-C:请求压缩全部数据;

-F:指定ssh指令的配置文件;

-f:后台执行ssh指令;

-g:容许远程主机链接主机的转发端口;

-i:指定身份文件;

-l:指定链接远程服务器登陆用户名;

-N:不执行远程指令;

-o:指定配置选项;

-p:指定远程服务器上的端口;

-q:静默模式;

-v:调试模式

-X:开启X11转发功能;

-x:关闭X11转发功能;

-y:开启信任X11转发功能。

实例

ssh -p28888 root@192.168.58.238

ssh root@192.168.58.238 /sbin/ifconfig

9九、scp:远程拷贝文件命令

说明

scp命令用于在Linux下进行远程拷贝文件的命令

语法

scp (选项)  要复制的源文件  目标文件

选项

-1:使用协议版本1;

-2:使用ssh协议版本2;

-4:使用ipv4;

-6:使用ipv6;

-B:以批处理模式运行;

-C:使用压缩;

-F:指定ssh配置文件;

-l:指定宽带限制;

-o:指定使用的ssh选项;

-P:指定远程主机的端口号;

-p:保留文件的最后修改时间,最后访问时间和权限模式;

-q:不显示复制进度;

-r:以递归方式复制。

实例

scp test.txt root@192.168.1.8:/tmp #将文件发送到远程服务器

scp root@192.168.1.8:/tmp/test.txt /wddg  #将文件从远程服务器拷贝回来

100、rsync:远程数据同步工具

说明

rsync命令是一个远程数据同步工具,可经过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不一样部分,而不是每次都整份传送,所以速度至关快。

语法

rsync [OPTION]… SRC DEST

rsync [OPTION]… SRC [USER@]host:DEST

rsync [OPTION]… [USER@]HOST:SRC DEST

rsync [OPTION]… [USER@]HOST::SRC DEST

rsync [OPTION]… SRC [USER@]HOST::DEST

rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]

选项

-v, --verbose 详细模式输出。

-q, --quiet 精简输出模式。

-c, --checksum 打开校验开关,强制对文件传输进行校验。

-a, --archive 归档模式,表示以递归方式传输文件,并保持全部文件属性,等于-rlptgoD。

-r, --recursive 对子目录以递归模式处理。

-R, --relative 使用相对路径信息。

-b, --backup 建立备份,也就是对于目的已经存在有一样的文件名时,将老的文件从新命名为~filename。可使用–suffix选项来指定不一样的备份文件前缀。

–backup-dir 将备份文件(如~filename)存放在在目录下。

-suffix=SUFFIX 定义备份文件前缀。

-u, --update 仅仅进行更新,也就是跳过全部已经存在于DST,而且文件时间晚于要备份的文件,不覆盖更新的文件。

-l, --links 保留软链结。

-L, --copy-links 想对待常规文件同样处理软链结。

–copy-unsafe-links 仅仅拷贝指向SRC路径目录树之外的链结。

–safe-links 忽略指向SRC路径目录树之外的链结。

-H, --hard-links 保留硬链结。

-p, --perms 保持文件权限。

-o, --owner 保持文件属主信息。

-g, --group 保持文件属组信息。

-D, --devices 保持设备文件信息。

-t, --times 保持文件时间信息。

-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间。

-n, --dry-run现实哪些文件将被传输。

-w, --whole-file 拷贝文件,不进行增量检测。

-x, --one-file-system 不要跨越文件系统边界。

-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。

-e, --rsh=command 指定使用rsh、ssh方式进行数据同步。

–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息。

-C, --cvs-exclude 使用和CVS同样的方法自动忽略文件,用来排除那些不但愿传输的文件。

–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新建立的文件。

–delete 删除那些DST中SRC没有的文件。

–delete-excluded 一样删除接收端那些被该选项指定排除的文件。

–delete-after 传输结束之后再删除。

–ignore-errors 及时出现IO错误也进行删除。

–max-delete=NUM 最多删除NUM个文件。

–partial 保留那些因故没有彻底传输的文件,以是加快随后的再次传输。

–force 强制删除目录,即便不为空。

–numeric-ids 不将数字的用户和组id匹配为用户名和组名。

–timeout=time ip超时时间,单位为秒。

-I, --ignore-times 不跳过那些有一样的时间和长度的文件。

–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间。

–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0。

-T --temp-dir=DIR 在DIR中建立临时文件。

–compare-dest=DIR 一样比较DIR中的文件来决定是否须要备份。

-P 等同于 --partial。

–progress 显示备份过程。

-z, --compress 对备份的文件在传输时进行压缩处理。

–exclude=PATTERN 指定排除不须要传输的文件模式。

–include=PATTERN 指定不排除而须要传输的文件模式。

–exclude-from=FILE 排除FILE中指定模式的文件。

–include-from=FILE 不排除FILE指定模式匹配的文件。

–version 打印版本信息。

–address 绑定到特定的地址。

–config=FILE 指定其余的配置文件,不使用默认的rsyncd.conf文件。

–port=PORT 指定其余的rsync服务端口。

–blocking-io 对远程shell使用阻塞IO。

-stats 给出某些文件的传输状态。

–progress 在传输时现实传输过程。

–log-format=formAT 指定日志文件格式。

–password-file=FILE 从FILE中获得密码。

–bwlimit=KBPS 限制I/O带宽,KBytes per second。

-h, --help 显示帮助信息。

实例

对应于以上六种命令格式,rsync有六种不一样的工做模式:

(1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工做模式。

如:rsync -a /data /backup

(2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。

如:rsync -avz *.c foo:src

(3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。

如:rsync -avz foo:src/bar /data

(4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。

如:rsync -av root@192.168.78.192::www/databack

(5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。

如:rsync -av /databackroot@192.168.78.192::www

(6)列远程机的文件列表。这相似于rsync传输,不过只要在命令中省略掉本地机信息便可。

如:rsync -v rsync://192.168.78.192/www

10一、paste :将多个文件按列队列合并

说明

paste命令用于将多个文件按照列队列进行合并

语法

paste (选项) 指定须要合并的文件列表

选项

-d<间隔字符>或–delimiters=<间隔字符>:用指定的间隔字符取代跳格字符;

-s或–serial串列进行而非平行处理。

实例

paste inotify_client_100.log inotify_server_100.10g

paste inotify_client_100.log inotify_server_100.10g  > inotify_100.log

10二、split:分割任意大小的文件

说明

split命令能够将一个大文件分割成不少个小文件,有时须要将文件分割成更小的片断,好比为提升可读性,生成日志等。

语法

split (选项) 文件名

选项

-b:值为每一输出档案的大小,单位为byte。

-C:每一输出档中,单行的最大 byte数。

-d:使用数字做为后缀。

-a length:来指定后缀的长度

-l:值为每一输出档的列数大小。

实例

(1)使用split命令将date.file文件分割成大小为10KB的小文件

split -b 10k date.file

(2)文件被分割成多个带有字母的后缀文件,若是想用数字后缀可以使用-d参数,同时使用-a来指定后缀的长度

split -b 10k date.file -d -a 3

(3)为分割后的文件指定文件名的前缀

split -b 10k date.file -d -a 3 split_file

(4)文件分割成每一个包含10行的小文件

split -l 10 date.file

10三、uniq:去重,报告或忽略文件中的重复行

说明

uniq命令用于报告或忽略文件中的重复行,通常与sort命令结合使用。

uniq命令只是去掉连续出现的重复记录,如查不链接的重复记录是不会排除的。

sort -u则能够去掉全部重复记录

语法

uniq(选项)(参数)

选项

-c或–count:在每列旁边显示该行重复出现的次数;

-d或–repeated:仅显示重复出现的行列;

-f<栏位>或–skip-fields=<栏位>:忽略比较指定的栏位;

-s<字符位置>或–skip-chars=<字符位置>:忽略比较指定的字符;

-u或–unique:仅显示出一次的行列;

-w<字符位置>或–check-chars=<字符位置>:指定要比较的字符。

参数

输入文件:指定要去除的重复行文件。若是不指定此项,则从标准读取数据;

输出文件:指定要去除重复行后的内容要写入的输出文件。若是不指定此选项,则将内容显示到标准输出设备(显

示终端)。

实例

(1)删除重复行

uniq file.txt

sort file.txt | uniq

sort -u file.txt

(2)只显示单一行

uniq -u file.txt

sort file.txt | uniq -u

(3)统计各行在文件中出现的次数

sort file.txt | uniq -c

(4)在文件中找出重复的行

sort file.txt | uniq -d

(5)uniq与sort -u的对比

a、样表a.log

cat a.log

aa

aa

bb

aa

b、uniq去重

uniq a.log

aa

bb

aa

c、sort -u去重

sort -u a.log

aa

bb

d、sort和uniq组合去重

sort a.log | uniq

aa

bb

10四、sort:排序

说明

sort命令是在Linux里很是有用,它将文件进行排序,并将排序结果标准输出。sort命令既能够从特定的文件,也能够从stdin中获取输入。sort将文件/文本的每一行做为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

语法

sort  (选项) 指定待排序的文件列表

选项

-b:忽略每行前面开始出的空格字符;

-c:检查文件是否已经按照顺序排序;

-d:排序时,处理英文字母、数字及空格字符外,忽略其余的字符;

-f:排序时,将小写字母视为大写字母;

-i:排序时,除了040至176之间的ASCII字符外,忽略其余的字符;

-m:将几个排序号的文件进行合并;

-M:将前面3个字母依照月份的缩写进行排序;

-n:依照数值的大小排序;

-o<输出文件>:将排序后的结果存入制定的文件;

-r:以相反的顺序来排序;

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

-k:按指定列排序 +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。点号“。”表示链接的是字符,逗号“,”表示链接的是字段。

如:k3,3:表示从第3个字段开始排序,到第3个字段结束

k3,5:表示从第3个字段开始排序,到第5个字段结束

k4.1,4.3:表示从第4个字段的第1个字符开始排序,到第4个字段的第3个字符结束

实例

(1)样表

cat sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

bbb:20:2.2

eee:50:5.5

eee:50:5.5

(2)无参数排序

sort sort.txt

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

eee:50:5.5

(3)忽略相同行排序:使用-u选项或者uniq

sort -u sort.txt

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

或者

uniq sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

bbb:20:2.2

eee:50:5.5

(4)sort的-n、-r、-k、-t选项的使用:

-n是按照数字大小排序

-r是以相反顺序

-k是指定须要爱排序的栏位

-t指定栏位分隔符为冒号

a、样表

cat sort.txt

AAA:BB:CC

aaa:30:1.6

ccc:50:3.3

ddd:20:4.2

bbb:10:2.5

eee:40:5.4

eee:60:5.1

b、将BB列按照数字从小到大顺序排列:

sort -nk 2 -t: sort.txt

AAA:BB:CC

bbb:10:2.5

ddd:20:4.2

aaa:30:1.6

eee:40:5.4

ccc:50:3.3

eee:60:5.1

c、将CC列数字从大到小顺序排列:

sort -nrk 3 -t: sort.txt

eee:40:5.4

eee:60:5.1

ddd:20:4.2

ccc:50:3.3

bbb:10:2.5

aaa:30:1.6

AAA:BB:CC

(5)将样表先按IP第3列排序,再按第4列排序

a、样表

cat sort.txt

192.168.3.1

192.168.3.2

192.168.3.3

192.168.2.20

192.168.2.21

192.168.2.22

192.168.0.151

192.168.0.152

192.168.0.153

192.168.1.10

192.168.1.11

192.168.1.12

192.168.1.1

192.168.2.2

192.168.3.3

192.168.1.21

192.168.2.22

192.168.0.151

b、解答

sort -t “.” -n -k3 -k4.1,4.3 sort.txt

sort -t “.” -n -k3 -k4,4.3 sort.txt

10五、rename:用字符串替换的方式批量改变文件名

说明

rename命令用字符串替换的方式批量改变文件名。

语法

rename from to file

选项

from:原字符串,将文件名须要替换的字符串。也就是要改的内容

to:目标字符串,将文件名中含有的原字符替换成目标字符串。也就是改成什么

file:文件,指定要改变文件名的文件列表。也就是要改的文件

rename支持正则表达式和通配符:

?  可替代单个字符

*  可替代多个字符

[charset]  可替代charset集中的任意单个字符

实例

示例:文件夹中有这些文件foo1, …, foo9, foo10, …,foo278

(1)将main1.c重命名为main.c

rename main1.c main.c main1.c

(2)把foo1到foo9的文件重命名为foo01到foo09(重命名的文件只是有4个字符长度名称的文件)

rename foo foo0 foo?

(3)foo01到foo99的全部文件都被重命名为foo001到foo099,只重命名5个字符长度名称的文件

rename foo foo0 foo??

(4)foo001到foo278的全部文件都被重命名为foo0001到foo0278,

rename foo foo0 foo*。

(5)从foo0200到foo0278的全部文件都被重命名为foo200到foo278

rename foo0 foo foo0[2]*

(6)把文件名中的AA替换成aa

rename s/AA/aa/ *

(7)把.html 后缀的改为 .php后缀

rename s//.html//./ *

(9)把全部的文件名都以txt结尾

rename s/$//.txt/ *

(10)把全部以.txt结尾的文件名的.txt删掉

rename s//.txt// *

10六、zip:能够用来压缩文件,或者对文件进行打包操做

说明

zip命令能够用来解压缩文件,或者对文件进行打包操做。zip是个使用普遍的压缩程序,文件经它压缩后会另外产生具备“.zip”扩展名的压缩文件。

语法

zip  (选项) 指定要建立的zip压缩包 指定要压缩的文件列表

选项

-A:调整可执行的自动解压缩文件;

-b<工做目录>:指定暂时存放文件的目录;

-c:替每一个被压缩的文件加上注释;

-d:从压缩文件内删除指定的文件;

-D:压缩文件内不创建目录名称;

-f:此参数的效果和指定“-u”参数相似,但不只更新既有文件,若是某些文件本来不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;

-F:尝试修复已损坏的压缩文件;

-g:将文件压缩后附加在已有的压缩文件以后,而非另行创建新的压缩文件;

-h:在线帮助;

-i<范本样式>:只压缩符合条件的文件;

-j:只保存文件名称及其内容,而不存听任何目录名称;

-J:删除压缩文件前面没必要要的数据;

-k:使用MS-DOS兼容格式的文件名称;

-l:压缩文件时,把LF字符置换成LF+CR字符;

-ll:压缩文件时,把LF+cp字符置换成LF字符;

-L:显示版权信息;

-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;

-n<字尾字符串>:不压缩具备特定字尾字符串的文件;

-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;

-q:不显示指令执行过程;

-r:递归处理,将指定目录下的全部文件和子目录一并处理;

-S:包含系统和隐藏文件;

-t<日期时间>:把压缩文件的日期设成指定的日期;

-T:检查备份文件内的每一个文件是否正确无误;

-u:更换较新的文件到压缩文件内;

-v:显示指令执行过程或显示版本信息;

-V:保存VMS操做系统的文件属性;

-w:在文件名称里假如版本编号,本参数仅在VMS操做系统下有效;

-x<范本样式>:压缩时排除符合条件的文件;

-X:不保存额外的文件属性;

-y:直接保存符号链接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效;

-z:替压缩文件加上注释;

-$:保存第一个被压缩文件所在磁盘的卷册名称;

-<压缩效率>:压缩效率是一个介于1~9的数值。

实例

将/home/Blinux/html/这个目录下全部文件和文件夹打包为当前目录下的html.zip:

zip -q -r html.zip /home/Blinux/html或zip -q -r html.zip html

(2)在html目录下压缩:

zip -q -r html.zip *

10七、unzip:用于解压缩由zip命令压缩的“.zip”压缩包

说明

用于解压缩由zip命令压缩的“.zip”压缩包

语法

unzip   (选项)   指定要解压的“.zip”压缩包

选项

-c:将解压缩的结果显示到屏幕上,并对字符作适当的转换;

-f:更新现有的文件;

-l:显示压缩文件内所包含的文件;

-p:与-c参数相似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;

-t:检查压缩文件是否正确;

-u:与-f参数相似,可是除了更新现有的文件外,也会将压缩文件中的其余文件解压缩到目录中;

-v:执行时显示详细的信息;

-z:仅显示压缩文件的备注文字;

-a:对文本文件进行必要的字符转换;

-b:不要对文本文件进行字符转换;

-C:压缩文件中的文件名称区分大小写;

-j:不处理压缩文件中原有的目录路径;

-L:将压缩文件中的所有文件名改成小写;

-M:将输出结果送到more程序处理;

-n:解压缩时不要覆盖原有的文件;

-o:没必要先询问用户,unzip执行后覆盖原有的文件;

-P<密码>:使用zip的密码选项;

-q:执行时不显示任何信息;

-s:将文件名中的空白字符转换为底线字符;

-V:保留VMS的文件版本信息;

-X:解压缩时同时回存文件原来的UID/GID;

-d<目录>:指定文件解压缩后所要存储的目录;

-x<文件>:指定不要处理.zip压缩文件中的哪些文件;

-Z:unzip-Z等于执行zipinfo指令;

实例

(1)将压缩文件text.zip在当前目录下解压缩

unzip test.zip

(2)将压缩文件text.zip在指定目录/tmp下解压缩,若有相同的文件存在,要求不覆盖原先的文件

unzip -n test.zip -d /tmp

(3)查看压缩文件目录,但不解压

unzip -v test.zip

(4)将压缩文件test.zip在指定目录/tmp下解压缩,若有相同的文件存在,要求覆盖原先的文件

unzip -o test.zip -d tmp/

10八、kill:经过进程号来杀死进程

说明

kill命令用来删除执行中的程序或工做。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍没法终止该程序,可以使用SIGKILL(9)信息尝试强制删除程序。程序或工做的编号可利用ps指令或job指令查看。

语法

kill  (选项) 进程号

选项

-a:当处理当前进程时,不限制命令名和进程号的对应关系

-l <信息编号>:若不加<信息编号>选项,则-l参数会列出所有的信息名称

-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号

-s <信息名称或编号>:指定要送出的信息

-u:指定用户。

实例

(1)列出全部信号名称:

kill -l

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL

5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE

9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2

  1. SIGPIPE     14)SIGALRM     15) SIGTERM     16) SIGSTKFLT

  2. SIGCHLD     18)SIGCONT     19) SIGSTOP     20) SIGTSTP

  3. SIGTTIN     22)SIGTTOU     23) SIGURG      24) SIGXCPU

  4. SIGXFSZ     26)SIGVTALRM   27) SIGPROF     28) SIGWINCH

  5. SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN

  6. SIGRTMIN+1  36)SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4

  7. SIGRTMIN+5  40)SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8

  8. SIGRTMIN+9  44)SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12

  9. SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14

  10. SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10

  11. SIGRTMAX-9  56)SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6

  12. SIGRTMAX-5  60)SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2

  13. SIGRTMAX-1  64) SIGRTMAX

只有第9种信号(SIGKILL)才能够无条件终止进程,其余信号进程都有权利忽略。

(2)经常使用的信号:

HUP     1    终端断线

INT     2    中断(同 Ctrl + C)

QUIT    3    退出(同 Ctrl + \)

TERM   15    终止

KILL    9    强制终止

CONT   18    继续(与STOP相反,fg/bg)

STOP   19    暂停(同 Ctrl + Z)

(3)用kill直接杀掉

kill 11234

kill -9 11234

(4)经过ps查出进程号再用kill杀掉

ps –ef | grep php-fpm | awk ‘{print $2}’ | xargs kill

10九、killall:经过进程的名称来杀死进程

说明

killall命令使用进程的名称来杀死进程,使用此指令能够杀死一组同名进程。咱们可使用kill命令杀死指定进程PID的进程,若是要找到咱们须要杀死的进程,咱们还须要在以前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

语法

killall  (选项) 进程名称

选项

-e:对长名称进行精确匹配

-l:忽略大小写的不一样

-p:杀死进程所属的进程组

-i:交互式杀死进程,杀死进程前须要进行确认

-l:打印全部已知信号列表

-q:若是没有进程被杀死。则不输出任何信息

-r:使用正规表达式匹配要杀死的进程名称

-s:用指定的进程号代替默认信号“SIGTERM”

-u:杀死指定用户的进程。

实例

(1)杀死全部同名进程

killall php-fpm

1十、pkill:经过进程的名称来杀死进程

说明

能够按照进程名杀死进程。pkill和killall应用方法差很少,也是直接杀死运行中的程序;若是您想杀掉单个进程,请用kill来杀掉。

语法

pkill  (选项) 进程名称

选项

-o:仅向找到的最小(起始)进程号发送信号

-n:仅向找到的最大(结束)进程号发送信号

-P:指定父进程号发送信号

-g:指定进程组

-t:指定开启进程的终端。

实例

(1)杀死全部同名进程

pkill php-fpm

1十一、ulimit:限制系统用户对shell资源的访问

说明

ulimit命令用来限制系统用户对shell资源的访问。实际应用的环境各方面的资源都是很是紧缺的,对于开启文件描述符的数量,分配堆栈的大小,CPU 时间,虚拟内存大小,等等,都有很是严格的要求。资源的合理限制和分配,不只仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联系。这时,ulimit 能够起到很大的做用,它是一种简单而且有效的实现资源限制的方式。 ulimit 用于限制 shell 启动进程所占用的资源,支持如下各类类型的限制:所建立的内核文件的大小、进程数据块的大小、Shell 进程建立文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。 做为临时限制,ulimit 能够做用于经过使用其命令登陆的 shell 会话,在会话终止时便结束限制,并不影响于其余 shell 会话。而对于长期的固定限制,ulimit 命令语句又能够被添加到由登陆 shell 读取的文件中,做用于特定的 shell 用户。

语法

ulimit  (选项)

选项

-a:显示目前资源限制的设定

-c :设定core文件的最大值,单位为区块

-d <数据节区大小>:程序数据节区的最大值,单位为KB

-f <文件大小>:shell所能创建的最大文件,单位为区块

-H:设定资源的硬性限制,也就是管理员所设下的限制

-m <内存大小>:指定可以使用内存的上限,单位为KB

-n <文件数目>:指定同一时间最多可开启的文件数

-p <缓冲区大小>:指定管道缓冲区的大小,单位512字节

-s <堆叠大小>:指定堆叠的上限,单位为KB

-S:设定资源的弹性限制

-t :指定CPU使用时间的上限,单位为秒

-u <程序数目>:用户最多可开启的程序数目

-v <虚拟内存大小>:指定可以使用的虚拟内存上限,单位为KB

实例

(1)显示目前资源限制的设定

ulimit -a

core file size         (blocks, -c) 0           #core文件的最大值为100 blocks。

data seg size          (kbytes, -d) unlimited   #进程的数据段能够任意大。

scheduling priority            (-e) 0

file size              (blocks, -f) unlimited   #文件能够任意大。

pending signals                (-i) 98304       #最多有98304个待处理的信号。

max locked memory      (kbytes, -l) 32          #一个任务锁住的物理内存的最大值为32KB。

max memory size        (kbytes, -m) unlimited   #一个任务的常驻物理内存的最大值。

open files                     (-n) 1024        #一个任务最多能够同时打开1024的文件。

pipe size            (512bytes, -p) 8           #管道的最大空间为4096字节。

POSIX message queues    (bytes, -q) 819200      #POSIX的消息队列的最大值为819200字节。

real-time priority             (-r) 0

stack size             (kbytes, -s) 10240       #进程的栈的最大值为10240字节。

cpu time              (seconds, -t) unlimited   #进程使用的CPU时间。

max user processes           (-u) 98304  #当前用户同时打开的进程(包括线程)的最大个数为98304。

virtual memory         (kbytes, -v) unlimited   #没有限制进程的最大地址空间。

file locks                     (-x) unlimited   #所能锁住的文件的最大个数没有限制

(2)临时设置链接数为Linux容许的最大值65535

ulimit -SHn 65535

1十二、dirname:去除文件名中的非目录部分,仅显示与目录有关的内容。

说明

dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其余部分,并写结果到标准输出。若是最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的全部字符。dirname 和basename 一般在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差别的输出文件名。

语法

dirname(选项)(参数)

选项

–help:显示帮助;

–version:显示版本号。

实例

dirname //

结果为 /

dirname /a/b/

结果为:/a

dirname a

结果为 .

dirname a/b

结果为路径名 a

11三、basename:用于打印目录或者文件的基本名称。

说明

basename命令用于打印目录或者文件的基本名称。basename和dirname命令一般用于shell脚本中的命令替换来指定和指定的输入文件名称有所差别的输出文件名称。

语法

dirname(选项)(参数)

选项

–help:显示帮助;

–version:显示版本号。

参数

文件:带路径信息的文件;

后缀:可选参数,指定要去除的文件后缀字符串。

实例

basename /home/jim/program.c

结果:program.c

11四、iptables:Linux上经常使用的防火墙软件

说明

iptables命令是Linux上经常使用的防火墙软件,是netfilter项目的一部分。能够直接配置,也能够经过许多前端和图形界面配置。

语法

iptables(选项)(参数)

选项

-t表:指定要操纵的表;

-A:向规则链中添加条目;

-D:从规则链中删除条目;

-I:向规则链中插入条目;

-R:替换规则链中的条目;

-L:显示规则链中已有的条目;

-F:清楚规则链中已有的条目;

-Z:清空规则链中的数据包计算器和字节计数器;

-N:建立新的用户自定义规则链;

-P:定义规则链中的默认目标;

-h:显示帮助信息;

-p:指定要匹配的数据包协议类型;

-s:指定要匹配的数据包源ip地址;

-j目标:指定要跳转的目标;

-i网络接口:指定数据包进入本机的网络接口;

-o网络接口:指定数据包要离开本机所使用的网络接口。

实例

(1)iptables命令选项输入顺序

iptables -t 表名-A/I/D/R 规则链名 [规则号] -i/o 网卡名 -p 协议名 -s 源IP/源子网 --sport 源端口-d 目标IP/目标子网 --dport 目标端口 -j 动做

表名包括:

raw:高级功能,如:网址过滤。

mangle:数据包修改(QOS),用于实现服务质量。

net:地址转换,用于网关路由器。

filter:包过滤,用于防火墙规则。

规则链名包括:

INPUT链:处理输入数据包。

OUTPUT链:处理输出数据包。

PORWARD链:处理转发数据包。

PREROUTING链:用于目标地址转换(DNAT)。

POSTOUTING链:用于源地址转换(SNAT)。

动做包括:

accept:接收数据包。

DROP:丢弃数据包。

REDIRECT:重定向、映射、透明代理。

SNAT:源地址转换。

DNAT:目标地址转换。

MASQUERADE:IP假装(NAT),用于ADSL。

LOG:日志记录。

(2)清除已有iptables规则

iptables -F

iptables -X

iptables -Z

(3)开放指定的端口

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT    #容许本地回环接口(即运行本机访问本机)

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#容许已创建的或相关连的通行

iptables -A OUTPUT -j ACCEPT        #容许全部本机向外的访问

iptables -A INPUT -p tcp --dport 22 -j ACCEPT    #容许访问22端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT    #容许访问80端口

iptables -A INPUT -p tcp --dport 21 -j ACCEPT    #容许ftp服务的21端口

iptables -A INPUT -p tcp --dport 20 -j ACCEPT    #容许FTP服务的20端口

iptables -A INPUT -j reject      #禁止其余未容许的规则访问

iptables -A FORWARD -j REJECT    #禁止其余未容许的规则访问

(4)屏蔽IP

iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令

iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段从123.0.0.1到123.255.255.254的命令

iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段从123.45.0.1到123.45.255.254的命令

iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段从123.45.6.1到123.45.6.254的命令

(5)查看已添加的iptables规则

iptables -L -n -v

(6)删除已添加的iptables规则

iptables -L -n --line-numbers

(7)删除INPUT里序号为8的规则

iptables -D INPUT 8

11五、test命令:是shell环境中测试条件表达式的实用工具。

说明

test命令是shell环境中测试条件表达式的实用工具

语法

test (选项)

选项

-b<文件>:若是文件为一个块特殊文件,则为真;

-c<文件>:若是文件为一个字符特殊文件,则为真;

-d<文件>:若是文件为一个目录,则为真;

-e<文件>:若是文件存在,则为真; 广义的文件,目录也算文件

-f<文件>:若是文件为一个普通文件,则为真;

-g<文件>:若是设置了文件的SGID位,则为真;

-G<文件>:若是文件存在且归该组全部,则为真;

-k<文件>:若是设置了文件的粘着位,则为真;

-O<文件>:若是文件存在而且归该用户全部,则为真;

-p<文件>:若是文件为一个命名管道,则为真;

-r<文件>:若是文件可读,则为真;

-s<文件>:若是文件的长度不为零,则为真;

-S<文件>:若是文件为一个套接字特殊文件,则为真;

-u<文件>:若是设置了文件的SUID位,则为真;

-w<文件>:若是文件可写,则为真;

-x<文件>:若是文件可执行,则为真。

实例

(1)判断表达式

if test     #表达式为真

if test !   #表达式为假

test 表达式1 -a 表达式2    #and,两个表达式都为真

test 表达式1 -o 表达式2    #or,两个表达式有一个为真

test 表达式1 ! 表达式2       #not,条件求反

(2)判断字符串

test -n 字符串    #字符串的长度非零

test -z 字符串    #字符串的长度是否为零

test 字符串1=字符串2       #字符串是否相等,若相等返回true

test 字符串1!=字符串2      #字符串是否不等,若不等反悔false

(3)判断整数

test 整数1 -eq 整数2   #整数相等

test 整数1 -ge 整数2   #整数1大于等于整数2

test 整数1 -gt 整数2   #整数1大于整数2

test 整数1 -le 整数2   #整数1小于等于整数2

test 整数1 -lt 整数2   #整数1小于整数2

test 整数1 -ne 整数2   #整数1不等于整数2

(4)判断文件

test File1 -ef File2    两个文件是否为同一个文件,可用于硬链接。主要判断两个文件是否指向同一个inode。

test File1 -nt File2    判断文件1是否比文件2新

test File1 -ot File2    判断文件1比是否文件2旧

test -b File   #文件是否块设备文件

test -c File   #文件而且是字符设备文件

test -d File   #文件而且是目录

test -e File   #文件是否存在 (经常使用)

test -f File   #文件是否为正规文件 (经常使用)

test -g File   #文件是不是设置了组id

test -G File   #文件属于的有效组ID

test -h File   #文件是不是一个符号连接(同-L)

test -k File   #文件是否设置了Sticky bit位

test -b File   #文件存在而且是块设备文件

test -L File   #文件是不是一个符号连接(同-h)

test -o File   #文件的属于有效用户ID

test -p File   #文件是一个命名管道

test -r File   #文件是否可读

test -s File   #文件是不是非空白文件

test -t FD     #文件描述符是在一个终端打开的

test -u File   #文件存在而且设置了它的set-user-id位

test -w File   #文件是否存在并可写

test -x File   #文件属否存在并可执行

原文:https://blog.csdn.net/rumengjian/article/details/76377278

相关文章
相关标签/搜索