1、mkdir : 创建目录,make directorys,-p 递归创建目录
mkdir-p /a/b/c
2、ls : -l(long)d(directory)显示目录或文件,全称list
-l#列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等
-d#只查看目录
-F#会在不同类型的文件后面加上*/=>@|等符号,以便区分不同类型文件
-p#会在目录后面加上/,以便区分目录和文件
-h#人类可读模式,显示K、M、G
-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
3、cd : 切换目录层次change directory
~表示家目录,
-表示上一次的目录
cd~
cd/tep/fq
cd/root
cd- # 回到/tep/fq
4、pwd : 显示当前目录
pwd
5、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)
6、vi/vim : 记事本编辑器
:set nu 显示行号
settabstop=4 一个tab为4个空格长度
set ai 设置自动缩进
syntax on 高亮
dd 删除当前行
yy 复制当前行
p 粘贴
行号gg 定位到指定行号
G 切换到文件尾
gg 切换到文件首
^或0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
7、cat : 查看文件内容(concatenate)
cat/etc/hosts
cat-n /etc/hosts #显示行号
cat>>a.txt<<EOF #将EOF之间所所有数据追加到a.txt尾部
…
EOF
8、cp : -apr 拷贝文件或目录
cpa.txt /tmp/
cp-r a /tmp #将目录a拷贝到tmp
cp-a a /tmp #-a = -dpr
9、mv : 移动文件或目录,也可改名(rename命令)
mva.txt /tmp
mva.txt b.txt #将a.txt改为b.txt
10、rm : 删除文件
-f强制删除文件
-r递归删除文件或目录
-fr删除指定的目录和文件
rm-fr /tmp/*
11、rmdir : 删除空目录
12、head : 显示文件前几行,默认10行
-n行数
head-n 500 a.txt
head-500 a.txt
13、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不同的是,如果文件不增长,它不会去访问磁盘文件,所以省电,并减少了磁盘访问
14、alias : 显示设置的别名,ualias取消别名
可以在/etc/profile、/etc/bashrc中配置全局别名。在用户家目录.bashrc配置用户别名
alias grep=‘grep --color=auto’
15、tac : 反转内容输出(cat反写)
cata.txt | tac
16、which : 查看命令所在的路径
whichntpdate
/usr/sbin/ntpdate
17、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 {}; #查找有特殊权限的命令
18、tree : 查看目录结构
-d 显示目录
-L 要显示层级
tree/
tree-L 1 / : 只显示一层结构
19、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 : 查看当前命令行终端用户
21、w : 查看当前登陆的用户和做什么
22、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
22、sudo :让普通用户可以拥有指定的root权限功能,需root用户提前授权
sudouseradd kkk
23、rpm : 软件安装命令
rpm-ivh :安装
rpm-e :卸载
rpm-e --nodeps :不考虑依赖,强行卸载
24、whereis: locate thebinary, source, and manual page files for a command
whereis-b mkdir
mkdir:/bin/mkdir
25、uname : 查看系统版本
-a:
-r:
-m:
uname-a
26、halt:关机 (init 0)
27、reboot 重启(init 6)
28、shutdown
shutdown-r now : 重启
shutdown-h now : 关机
29、lsb_release:显示系统版本
lsb_release-a
30、lastlog : 查看用户是否登录过
31、last : 查看最后登陆过的用户列表
32、file : 查看文件类型
33、ln : 创建链接文件
硬链接:源文件与目标文件的inode号码相同,都指向同一个inode
ln 源文件 目标文件
软链接:相当于windows中的快捷方式
ln -s 源文件 目标文件
ln -s /abc/def/ghi/jk/ /tmp/jk/
可以通过readlink 软链接名,来查看软链接信息
34、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
35、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 显示版本信息
36、less : 是对文件或其它输出进行分页显示的工具(按屏显示,可以前滚(向下),也可回退(向上))
-N #显示行号
less a.txt
less -N a.txt
37、more:是对文件或其它输出进行分页显示的工具(按屏显示,可以前滚(向下),但不能回退(向上))
38、man : 查看命令及配置文件的帮助
39、touch :创建文件或修改文件时间戳
40、env : 显示当前用户的环境变量
41、source : 读取和执行配置文件
source/etc/sysconfig/i18n 或 . /etc/sysconfig/i18n
42、netstat : 查看网络状态
[–tcp|-t] [–udp|-u] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–program|-p]
netstat-lntup
netstat-an
43、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)
44、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为星期天)
45、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
46、seq:打印序列
seq-s “,” -f “t%01g” 1 5
-s :使用分隔符
“,” :分隔符为了英文逗号
-f :格式化
%01g:1位浮点数
结果 :t1,t2,t3,t4,t5
47、chkconfig
chkconfig-–list #列出所有的系统服务
chkconfig-–add httpd #增加httpd服务
chkconfig-–del httpd #删除httpd服务
chkconfig-–level httpd 2345on #设置httpd在运行级别为2、3、4、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,“各等级”包括2、3、4、5等级
48、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中所有的注释和空行
49、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个#之间不能用正则表达式。如查前面有多个小括号,则\1、\2、…\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] #删除第2、3、4、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
51、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下
52、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
一
二
三
四
53、tr:也是替换命令
echo “I am oldboy,myqq is 49000448” | tr “,”" " #将逗号替换成空格
echo ‘abc’ | tr ‘abc’ ‘xyz’ #x替换a,y替换b,z替换c
54、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
55、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
56、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文件中。
57、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
58、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’)
59、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: 显示日历
61、locate: 按名字查找文件,但只能查看updatedb库中的内容,需定期更新updatedb库
locate -n 1 cp # 查询包括cp的文件,只显示查到的第一行
62、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
63、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/
64、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
65、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
66、chattr:改变文件属性(ext2、ext3、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
67、lsattr:列出文件的隐藏属性
语法
lsattr [-adlRvV][文件或目录…]
选项
-a 显示所有文件和目录,包括以".“为名称开头字符的额外内建,现行目录”.“与上层目录”…"。
-d 显示,目录名称,而非其内容。
-l 此参数目前没有任何作用。
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v 显示文件或目录版本。
-V 显示版本信息。
实例
lsattr -Rd test/
68、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
69、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
71、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
72、chage:修改密码有效期
语法
chage [参数选项]username
选项
-d :指定密码最后修改日期
-E :密码到期的日期,过了这天,此账号将不可用。0表示马上过期,-1表示永不过期。
-h :显示帮助信息并退出
-I :密码过期后,锁定账号的天数
-l :列出用户以及密码的有效期
-m :密码可以更改的最小天数。为零代表任何时候都可以更改密码。
-M :密码保持有效的最大天数。
-W :密码过期前,提前收到警告信息的天数
实例
chage -E “2018/02/03” test
chage -l test
73、groupdel:删除用户组
语法
groupdel groupname
实例
groupdel test01
74、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
75、groups:查看当前或指定用户所在组的组成员
语法
groups [username]
实例
groups :查看当前用户所在的组
groups test:查看test用户所在的组
76、visudo:编辑sudo配置文件/etc/sudoers,有语法检查
77、finger:查看用户信息
语法
finger [username]
实例
finger test
78、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
79、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
81、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
82、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
83、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
84、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
85、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
86、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。
两者都在内在里
第三部分是指交换分区。
87、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)
c
字节(2B)
w
块(512B)
b
千字节(1024B)
k
兆字节(1024KB)
M
吉字节(1024MB)
G
88、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
89、parted:分区命令,适合于对大于2T的磁盘进行分区,且必须将磁盘转为GPT格式
说明
parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、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
91、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
92、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格式
93、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和用户指定的扩展属性
94、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
95、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
96、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
97、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
98、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 [email protected]
ssh [email protected] /sbin/ifconfig
99、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 [email protected]:/tmp #将文件发送到远程服务器
scp [email protected]:/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 [email protected]::www/databack
(5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
如:rsync -av /[email protected]::www
(6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
如:rsync -v rsync://192.168.78.192/www
101、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
102、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
103、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
104、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
105、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// *
106、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 *
107、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/
108、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
SIGPIPE 14)SIGALRM 15) SIGTERM 16) SIGSTKFLT
SIGCHLD 18)SIGCONT 19) SIGSTOP 20) SIGTSTP
SIGTTIN 22)SIGTTOU 23) SIGURG 24) SIGXCPU
SIGXFSZ 26)SIGVTALRM 27) SIGPROF 28) SIGWINCH
SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
SIGRTMIN+1 36)SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
SIGRTMIN+5 40)SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
SIGRTMIN+9 44)SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
SIGRTMAX-9 56)SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
SIGRTMAX-5 60)SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
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
109、killall:通过进程的名称来杀死进程
说明
killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
语法
killall (选项) 进程名称
选项
-e:对长名称进行精确匹配
-l:忽略大小写的不同
-p:杀死进程所属的进程组
-i:交互式杀死进程,杀死进程前需要进行确认
-l:打印所有已知信号列表
-q:如果没有进程被杀死。则不输出任何信息
-r:使用正规表达式匹配要杀死的进程名称
-s:用指定的进程号代替默认信号“SIGTERM”
-u:杀死指定用户的进程。
实例
(1)杀死所有同名进程
killall php-fpm
110、pkill:通过进程的名称来杀死进程
说明
可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。
语法
pkill (选项) 进程名称
选项
-o:仅向找到的最小(起始)进程号发送信号
-n:仅向找到的最大(结束)进程号发送信号
-P:指定父进程号发送信号
-g:指定进程组
-t:指定开启进程的终端。
实例
(1)杀死所有同名进程
pkill php-fpm
111、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
112、dirname:去除文件名中的非目录部分,仅显示与目录有关的内容。
说明
dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符。dirname 和basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。
语法
dirname(选项)(参数)
选项
–help:显示帮助;
–version:显示版本号。
实例
dirname //
结果为 /
dirname /a/b/
结果为:/a
dirname a
结果为 .
dirname a/b
结果为路径名 a
113、basename:用于打印目录或者文件的基本名称。
说明
basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。
语法
dirname(选项)(参数)
选项
–help:显示帮助;
–version:显示版本号。
参数
文件:带路径信息的文件;
后缀:可选参数,指定要去除的文件后缀字符串。
实例
basename /home/jim/program.c
结果:program.c
114、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
115、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 #文件属否存在并可执行
作者:放飞的心灵
来源:CSDN
原文:https://blog.csdn.net/rumengjian/article/details/76377278