文件处理命令:ls 功能描述:显示目录文件 命令英文原意:list
命令所在路径:/bin/ls 执行权限:所有用户
语法: ls 选项[-ald] [文件或目录]
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 查看目录属性
$ ls –a > dir.txt //将ls –a命令执行结果输出到dir.txt文件。
$ ls –a >> dir.txt //将ls –a命令执行结果附加到dir.txt文件之后。
文件处理命令:cd 功能描述:切换目录 命令英文原意:change directory
命令所在路径:shell内置命令 执行权限:所有用户
语法:cd [目录]
范例: $ cd / 切换到根目录
$ cd .. 回到上一级目录
文件处理命令:pwd 功能描述:显示当前所在的工作目录 命令英文原意:print working directory
命令所在路径:/bin/pwd 执行权限:所有用户
语法:pwd
文件处理命令:touch 功能描述:创建空文件 命令名称:touch
命令所在路径:/bin/touch 执行权限:所有用户
语法:touch [文件名]
范例:$ touch newfile
文件处理命令:mkdir 功能描述:创建新目录 命令英文原意:make directories
命令所在路径:/bin/mkdir 执行权限:所有用户
语法:mkdir [目录名]
范例:$ mkdir newdir
文件处理命令:cp 功能描述:复制文件或目录 命令英文原意:copy
命令所在路径:/bin/cp 执行权限:所有用户
语法: cp -R [源文件或目录] [目的目录]
-R 复制目录<递归>
范例: $ cp file1 file2 dir1 //将文件file1、file2复制到目录dir1
$ cp -R dir1 dir2 //将dir1下的所有文件及子目录复制到dir2
文件处理命令:mv 功能描述:移动文件、更名 命令英文原意:move
命令所在路径:/bin/mv 执行权限:所有用户
语法:mv [源文件或目录] [目的目录]
范例: $ mv file1 file3 //将当前目录下文件file1更名为file3
$ mv file2 dir2 //将文件file2移动到目录dir2下
文件处理命令:rm 功能描述:删除文件 命令英文原意:remove
命令所在路径:/bin/rm 执行权限:所有用户
语法:rm -r [文件或目录]
-r 删除目录
范例: $ rm file3 //删除文件file3
$ rm -r dir1 //删除目录dir1
文件处理命令:cat
功能描述:显示文件内容
命令英文原意:concatenate and display files
命令所在路径:/bin/cat
执行权限:所有用户
语法:cat [文件名]
范例: $ cat /etc/issue
$ cat /etc/services
$ cat preface.txt more //逐页显示preface.txt的内容;
$ cat preface.txt >> outline.txt //将preface.txt 附加到outline.txt文件之后;
$cat new.txt info.txt >readme.txt //将new.txt和info.txt合并成readme.txt文件;
文件处理命令:more 命令所在路径:/bin/more 执行权限:所有用户
语法:more [文件名]
(空格) 或f 显示下一页
(Enter) 显示下一行
q或Q 退出
文件处理指令:head 功能描述:查看文件的前几行 指令所在路径:/bin/head
执行权限:All User
语法: head -num [文件名]
-num 显示文件的前num行
范例:$ head -20 /etc/services
文件处理指令:tail 功能描述:查看文件的后几行 指令所在路径:/bin/tail
执行权限:All User
语法: tail -num [文件名]
-num 显示文件的后num行
-f 动态显示文件内容
范例:$ tail -30 /etc/services
文件处理命令:ln 功能描述:产生链接文件 命令英文原意:link
命令所在路径:/bin/ln 执行权限:所有用户
语法: ln -s [源文件] [目标文件]
-s 创建软链接
范例: $ ln -s /etc/issue /issue.soft //创建文件/etc/issue的软链接/issue.soft
$ ln /etc/issue /issue.hard //创建文件/etc/issue的硬链接/issue.hard
权限管理命令:chmod 功能描述:改变文件或目录权限
命令英文原意:change the permissions mode of a file
命令所在路径:/bin/chmod 执行权限:所有用户
语法:chmod [{ugo}{+-=}{rwx}] [文件或目录]
[mode=421 ] [文件或目录]
范例: $ chmod g+w file1 //赋予文件file1所属组写权限
$ chmod 777 dir1 //设定目录dir1为所有用户具有全部权限
# Permission rwx
7 read, write and execute rwx
6 read and write rw-
5 read and execute r-x
4 read only r--
3 write and execute -wx
2 write only -w-
1 execute only --x
0 none ---
chown –R <username>.<groupname> file //更改属主
-R :表示递归更改
chown –R testuser.newgroup testpath
上面的命令将 testpath 路径下的所有文件的拥有者都改为 testuser ,拥有组都改为 newgroup 。
权限管理命令:chown 功能描述:改变文件或目录的所有者 命令英文原意:change file ownership
命令所在路径:/bin/chown 执行权限:所有用户
语法:chown [用户] [文件或目录]
范例: $ chown nobody file1 //改变文件file1的所有者为nobody
权限管理命令:chgrp 功能描述:改变文件或目录的所属组
命令英文原意:change file group ownership
命令所在路径:/bin/chgrp 执行权限:所有用户
语法:chgrp [用户组] [文件或目录]
范例: $ chgrp adm file1 //改变文件file1的所属组为adm
权限管理命令:umask 功能描述:显示、设置文件的缺省权限 命令所在路径:/bin/umask
执行权限:所有用户
语法: umask [-S]
-S 以rwx形式显示新建文件或目录缺省权限
范例: $ umask
$ umask -S
文件搜索命令:which 功能描述:显示系统命令所在目录 命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which [命令名称]
范例:$ which ls
文件搜索命令:find 功能描述:查找文件或目录 命令所在路径:/usr/bin/find
执行权限:所有用户
语法:find [搜索路径] [搜寻关键字]
范例: $ find /etc -name init //在目录/etc中查找文件init
$ find / -size +204800 //在根目录下查找大于100MB的文件
$ find / -user sam //在根目录下查找所有者为sam的文件
$ find /etc -ctime -1 //在/etc下查找24小时内被修改过属性的文件和目录
$ find /etc -size +163840 -a -size -204800 //在/etc下查找大于80MB小于100MB的文件
$ find /etc -name inittab -exec ls -l {} \; //在/etc下查找inittab文件并显示其详细信息
find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command‘ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find . -name .svn | xargs rm -rf
====================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-prune #忽略某个目录
=====================================================
$find ~ -name "*.txt" -print #在$HOME中查.txt文件并显示
$find . -name "*.txt" -print
$find . -name "[A-Z]*" -print #查以大写字母开头的文件
$find /etc -name "host*" -print #查以host开头的文件
$find . -name "[a-z][a-z][0–9][0–9].txt" -print #查以两个小写字母和两个数字开头的txt文件
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print
$find . ! -type d -print
$find . -type l -print
$find . -size +1000000c -print #查长度大于1Mb的文件
$find . -size 100c -print # 查长度为100c的文件
$find . -size +10 -print #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name "passwd*" -exec grep "cnscn" {} \; #看是否存在cnscn用户
$find . -name "yao*" | xargs file
$find . -name "yao*" | xargs echo "" > /tmp/core.log
$find . -name "yao*" | xargs chmod o-w
======================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被存取过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
查当前目录下的所有普通文件
# find . -type f -exec ls -l {} \;
查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出
=================================================
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec -ok rm {} \;
=================================================
查询当天修改过的文件
[[email protected] class]# find ./ -mtime -1 -type f -exec ls -l {} \;
=================================================
查询文件并询问是否要显示
[[email protected] class]# find ./ -mtime -1 -type f -ok ls -l {} \;
=================================================
查询并交给awk去处理
[[email protected] class]# who | awk ’{print $1"\t"$2}’
[[email protected] class]# df -k | awk ‘{print $1}’ | grep -v ’none’ | sed s"/\/dev\///g"
[[email protected] class]# df -k | awk ‘{print $1}’ | grep -v ’none’
1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名
A) find /tmp -name "*.h" | xargs -n50 grep SYSCALL_VECTOR
B) grep SYSCALL_VECTOR /tmp/*.h | cut -d’:‘ -f1| uniq > filename
C) find /tmp -name "*.h" -exec grep "SYSCALL_VECTOR" {} \; -print
2)find / -name filename -exec rm -rf {} \;
find / -name filename -ok rm -rf {} \;
3)比如要查找磁盘中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;
4)将find出来的东西拷到另一个地方
find *.c -exec cp ‘{}’ /tmp ‘;’
如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir
6)查找2004-11-30 16:36:37时更改过的文件
# A=`find ./ -name "*php"` | ls -l –full-time $A 2>/dev/null | grep "2004-11-30 16:36:37
文件搜索指令:locate 功能描述:寻找文件或目录 指令英文原义:list files in databases
指令所在路径:/usr/bin/locate 执行权限:All User
语法:locate [搜索关键字]
范例: $ locate file //列出所有跟file相关的文件
文件搜索指令:updatedb 功能描述:建立整个系统目录文件的数据库
指令英文原义:update the slocate database 指令所在路径:/usr/bin/updatedb
执行权限:root
语法:updatedb
范例:# updatedb
文件搜索命令:grep 功能描述:在文件中搜寻字串匹配的行并输出
命令所在路径:/bin/grep 执行权限:所有用户
语法:grep [指定字串] [源文件]
范例:# grep ftp /etc/services
$ grep text *.conf //当前目录中扩展名为.conf且包含“text”字符串得文件。
$ grep:amd.conf: //拒绝不符权限得操作
$ grep:diskcheck.conf: //拒绝不符权限得操作
$ grep:grub.conf //拒绝不符权限得操作
$ grep –s text *.conf //拒绝不符权限的操作之类的错误信息
grep正则表达式元字符集:
^ 锚定行的开始 如:‘^grep‘匹配所有以grep开头的行。
$ 锚定行的结束 如:‘grep$‘匹配所有以grep结尾的行。
. 匹配一个非换行符的字符 如:‘gr.p‘匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符 如:‘*grep‘匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
[] 匹配一个指定范围内的字符,如‘[Gg]rep‘匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:‘[^A-FH-Z]rep‘匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) 标记匹配字符,如‘\(love\)‘,love被标记为1。
\ 锚定单词的开始,如:‘\匹配包含以grep开头的单词的行。
\> 锚定单词的结束,如‘grep\>‘匹配包含以grep结尾的单词的行。
x\{m\} 重复字符x,m次,如:‘0\{5\}‘匹配包含5个o的行。
x\{m,\} 重复字符x,至少m次,如:‘o\{5,\}‘匹配至少有5个o的行。
x\{m,n\}重复字符x,至少m次,不多于n次,如:‘o\{5,10\}‘匹配5--10个o的行。
\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:‘G\w*p‘匹配以G后跟零个或多个文字或数字字符,然后是p。
\b 单词锁定符,如: ‘\bgrep\b‘只匹配grep。
常用的 grep 选项有:
-c 只输出匹配行的个数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
-V 显示软件版本信息
使用grep匹配时最好用双引号引起来,防止被系统误认为参数或者特殊命令,也可以匹配多个单词。
关于匹配的实例:
grep -c "48" test.txt 统计所有以“48”字符开头的行有多少
grep -i "May" test.txt 不区分大小写查找“May”所有的行)
grep -n "48" test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
grep -v "48" test.txt 显示输出没有字符“48”所有的行)
grep "471" test.txt 显示输出字符“471”所在的行)
grep "48;" test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
grep "48[34]" test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
grep "^[^48]" test.txt 显示输出行首不是字符“48”的行)
grep "[Mm]ay" test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行
grep "K…D" test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行
grep "[A-Z][9]D" test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
grep "[35]..1998" test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
grep "4\{2,\}" test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
grep "9\{3,\}" test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
grep "9\{2,3\}" test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
grep -n "^$" test.txt 显示输出空行的行号
ls -l |grep "^d" 如果要查询目录列表中的目录 同:ls -d *
ls -l |grep "^d[d]" 在一个目录中查询不包含目录的所有文件
ls -l |grpe "^d…..x..x" 查询其他用户和用户组成员有可执行权限的目录集合
帮助命令:man 功能描述:获得帮助信息 命令英文原意:manual
命令所在路径:/usr/bin/man 执行权限:所有用户
语法:man [命令或配置文件]
范例: $ man ls //查看ls命令的帮助信息
$ man services //查看配置文件services的帮助信息
帮助指令:info 功能描述:获得帮助信息 指令英文原义:information
指令所在路径:/usr/bin/info 执行权限:All User
语法:info [任何关键字]
范例: $ info ls //查看ls指令的帮助信息
帮助指令:whatis 功能描述:获得索引的简短说明信息
指令名称:whatis apropos makewhatis 指令英文原义:search the whatis database for strings
指令所在路径:/usr/bin/whatis 执行权限:All User,All User,root
语法:whatis apropos [任何关键字]
范例: $ whatis ls
$ apropos fstab 相当于man -k
# makewhatis
建立whatis和apropos搜索使用的数据库,当使用这两个命令发生错误时,就是whatis database 没有建立
压缩解压命令:gzip 功能描述:压缩文件 命令所在路径:/bin/gzip
执行权限:所有用户 语法:gzip 选项[文件]
压缩后文件格式:.gz
压缩解压命令:gunzip 功能描述:解压缩.gz的压缩文件 命令所在路径:/bin/gunzip
执行权限:所有用户
语法:gunzip 选项[压缩文件]
范例:$ gunzip file1.gz
压缩解压命令:tar 功能描述:打包目录 命令所在路径:/bin/tar
执行权限:所有用户
语法:tar 选项[cvf] [目录]
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
压缩后文件格式:.tar.gz
范例: $ tar -zcvf dir1.tar.gz dir1 //将目录dir1压缩成一个打包并压缩的文件
tar命令解压缩语法:
-x 解包.tar文件
-v 显示详细信息
-f 指定解压文件
-z 解压缩
范例:$ tar -zxvf dir1.tar.gz
压缩解压命令:zip 功能描述:压缩文件或目录 命令所在路径:/usr/bin/zip
执行权限:所有用户
语法: zip 选项[-r] [压缩后文件名称] [文件或目录]
-r 压缩目录
压缩后文件格式:.zip
范例: $ zip services.zip /etc/services //压缩文件
$ zip -r test.zip /test //压缩目录
压缩解压命令:unzip 功能描述:解压.zip的压缩文件 命令所在路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip [压缩文件]
范例:$ unzip test.zip
压缩解压命令:bzip2 功能描述:解压缩 命令所在路径:/usr/bin/bzip2
执行权限:所有用户
语法: bzip2 选项[-k] [文件]
-k 产生压缩文件后保留原文件
功能描述:压缩文件
压缩后文件格式:.bz2
范例:$ bzip2 -k file1
命令所在路径:/usr/bin/bunzip2 执行权限:所有用户
语法:bunzip2 选项[-k] [压缩文件]
-k 解压缩后保留原文件
范例:$ bunzip2 -k file1.bz2
网络通信指令:write 功能描述:向另外一个用户发信息,以Ctrl+D作为结束
指令所在路径:/usr/bin/write 执行权限:All User
语法:write <用户名>
范例: $ write webmaster
网络通信指令:wall 功能描述:向所有用户广播信息
指令所在路径:/usr/bin/wall 执行权限:All User
语法:wall [message] [文件名]
范例: $ wall Happy New Year!
系统关机命令:shutdown 功能描述:关机
命令所在路径:/usr/sbin/shutdown 执行权限:root
语法:shutdown
范例:# shutdown -h now //立即关闭系统
# shutdown -h 12:00 & //在12点关机,并后台不影响操作
# shutdown -r +2 //两分钟后重启系统
# ctrl+c 或 shutdown -c //取消shutdown命令
# shutdown -k now "The Server will shutdown now" //向所有用户发出消息
系统关机命令:reboot
功能描述:重启系统等同于 shutdown -r now
删除调度工作任务:crontab
范例: $ crontab –r ←删除任务调度中的工作
$ crontab -1 ←再查看一次任务调度中的工作
用户使用过的历史命令:history
groupadd //添加用户组
groupdel //删除用户组
groupmod //修改用户组
newgrp <groupname> //切换用户组
如果一个用户同时属于多个用户组,可以用 newgrp 命令切换至目的组,以便能够拥有该组的权限。
cat /etc/group | awk -F: ‘{print $1}‘ //所有组其实就是 /etc/group 文件的内容做一些过滤
groups <username> //查看用户所在组
useradd <username> -d <path> -m -g –G –p //添加用户
常用的就是上面几个参数,意思分别为:
-d :指定用户主目录。如果此目录不存在,同时使用 -m 就会创建此目录。
-m :创建用户主目录
-g :用户所属组 ID
-G :用户所属组名
-p :登录密码。注意这个登录密码不是明文,是指加密后的密码。
useradd testuser –m –G mygroup
将会创建一个 testuser 的用户,并自动创建 /home/testuser 的用户主目录,并将用户添加至 mygroup 组中。
userdel –f –r <username> // 删除用户
-r :删除用户主目录以及邮箱中的邮件
-f :强行删除文件,即使属主不是该用户
usermod <username> -d <path> -m -g –G –p //修改用户
passwd <username> :修改密码
passwd –d <username> :命令将用户的密码删除,即下次登录无须密码。
passwd –l <username> :锁定用户,使其无法登录
umask [a1 a2 a3 ] //设置文件掩码
用户可以使用 umask 命令设置文件默认的生成掩码。默认的生成掩码告诉系统创建一个文件或目录不应该赋予哪些权限。如果用户将 umask 命令放在环境文件 .bash_profile 中,就可以控制所有新建的文件和目录的访问权限。
a1 表示的是不允许属主的权限, a2 表示的是不允许同组人的权限, a3 代表不允许其他人的权限。
umask 022 : 表示设置不允许同组用户和其他用户有写的权限。
umask : 显示当前的默认生成掩码。
su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但环境仍然是普通用户的;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。
whoami //确认自己身份,显示你自已登陆的用户名
id //打印出自己的UID以及GID
!! //执行最近一次的命令
rm -rf <文件名或目录名> //删除目录下所有文件包括子目录
cat /proc/cpuinfo //CPU信息
cat /proc/interrupts //中断
cat /proc/ioports //设备IO端口
cat /proc/meminfo //内存信息(i.e. mem used, free, swap size)
cat /proc/partitions //所有设备的所有分区
cat /proc/pci //PCI设备的信息
cat /proc/swaps //所有Swap分区的信息
cat /proc/version //Linux的版本号 相当于 uname -r
cat /etc/redhat-release //适用centos、redhat
rpm -q redhat-release //适用centos、redhat
uname -a //看系统内核等信息
lsb_release -a //查看系统版本
yum provides */lsb_release //查找提供命令的软件包
这个命令适用于所有遵守LSB规范的的linux,包括Redhat、SuSE、Debian、Ubuntu、Centos等发行版。
接下来的命令虽不能查看当前系统名和版本,但可以显示系统核心信息。
cat /etc/issue //版本信息
date //显示系统时间
mkdir `date +%Y%m%d` //创建以当前时间为文件名的
tar cvf ./htdocs`date +%Y%m%d`.tar ./* //备份以时间做为文件名的
date -d "last month" "+%Y-%m-%d %H-%M-%S %a" //格式化输出
date -d "-1 week" "+%Y%m%d %A" //上个星期
date -d "-2 day" "+%Y%m%d %A" //前天
date -d "+1 day" "+%Y%m%d %A" //明天
date +%s //可以得到UNIX的时间戳
date -d "2010-07-20 10:25:30" +%s //显示指定时间的时间戳
date -s ‘2015-10-28 11:27:00‘ //修改系统时间
date -d "@1279592730" //时间戳转换为标准时间
hwclock --show //查看硬件时钟
clock -w //写入硬件时间
getconf LONG_BIT //获取系统位数,多少位系统(32、64)
uname -a //查看内核/操作系统/CPU信息
head -n 1 /etc/issue //查看操作系统版本
lspci -tv //列出所有PCI设备
lsusb -tv //列出所有USB设备
lsmod //列出加载的内核模块
lscpu //列出CPU信息
env //查看环境变量
free <-b,-k,-m,-g show output in bytes, KB, MB, or GB> //查看内存使用量和交换区使用量
df <-h,-T> //查看各分区使用情况,类型
du -sh <目录名> //查看指定目录的大小
uptime //查看系统运行时间、用户数、负载
cat /proc/loadavg //查看系统负载
mount | column -t //查看挂接的分区状态
mount -t cifs -o username=andy,gid=48,uid=48,password=123,rwx,dir_mode=0777,file_mode=
0777 //172.22.2.11/Http /var/www/html
//挂载windows磁盘NTFS,uid gid分给指定用户,centos7不支持的参数
fdisk -l //查看所有分区
dmesg | grep IDE //查看启动时设备检测状况
直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;要想永久保存,有如下方法:
1.在/etc/rc.local里添加
2.在/etc/sysconfig/network里添加到末尾
route -nee //查看路由表详细信息
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 //指定网络的路由规则
route add -net 10.0.0.0 netmask 255.0.0.0 reject
设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。
route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
netstat -a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
-i 显示网络接口列表
-ie 类似与 ifconfig
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
kill命令
用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。
命令格式: kill[参数][进程号]
命令功能: 发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
3.命令参数:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
注意:
1、kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:
kill -2 123 //它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。
2、kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。
3、可以向多个进程发信号或终止它们。
4、当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。
5、应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。
列出所有信号名称: kill -l
[[email protected] test6]# 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
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
说明:只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
得到指定信号的数值
[[email protected] test6]# kill -l KILL
9[[email protected] test6]# kill -l SIGKILL
9[[email protected] test6]# kill -l TERM
15[[email protected] test6]# kill -l SIGTERM
15[[email protected] test6]#
说明:
init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的!
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]" //查看zombie程序
kill -9 <pid>/<uid> //强制结束进程
ps -A -o stat,ppid,pid,cmd | grep -e ‘^[Zz]‘ | awk ‘{print $2}‘ | xargs kill -9 //一次性脚本
ps -ef //查看所有进程
ps aux //显示所有包含其他使用者的行程
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有进程。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
USER 用户名
UID 用户ID(User ID)
PID 进程ID(Process ID)
PPID 父进程的进程ID(Parent Process id)
SID 会话ID(Session id)
%CPU 进程的cpu占用率
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小(Virtual Size)
RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY 与进程关联的终端(tty)
STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)
R 运行 Runnable (on run queue) 正在运行或在运行队列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
I 空闲 Idle
Z 僵死 Zombie(a defunct process)进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
T 终止 Terminate进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
P 等待交换页
W 无驻留页 has no resident pages 没有足够的记忆体分页可分配。
X 死掉的进程
< 高优先级进程 高优先序的进程
N 低优先 级进程 低优先序的进程
L 内存锁页 Lock 有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+ 位于后台的进程组
START 进程启动时间和日期
TIME 进程使用的总cpu时间
COMMAND 正在执行的命令行命令
NI 优先级(Nice)
PRI 进程优先级编号(Priority)
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS 与进程相关的数字标识
最经典应用模式: somecommand |xargs -item command
不带command ,默认的使用echo 输出
-n NN //NN是限制每次传递进来参数的个数
ls | xargs -n 8 echo //以每行8列的形式列出当前目录下的所有文件
ls | xargs -p -l gzip //使用gzips压缩当前目录下的每个文件,一次压缩一个, 并且在每次压缩前都提示用户
find . -name "*.txt " |xargs -I {} cp {} /tmp //可以使用{}代替传递过来的参数, 建议使用-I
ls -l |xargs -t -L 2 //-t 参数,打开调试功能,显示每次所组的命令,-L 参数控制每次输入的行数
ls |xargs -t -n 2 file //-n num 控制每次输入的参数个数
xargs -a t.txt -E - //-E EOF 指定输入结束符
ls |grep Tata |xargs -t -r //-r 默认是空参数comand也要执行一次,如使用-r参数遇到空参数则直接退出
iptables -L //查看防火墙设置,等同于 service iptables status
w //显示目前登入系统的用户信息
//其中Load average值要提高警惕
0.7 < load < 1 //此时是不错的状态,如果进来更多的汽车,你的马路仍然可以应付。
load = 1 //你的马路即将拥堵,而且没有更多的资源额外的任务,赶紧看看发生了什么吧。
load > 5 //非常严重拥堵,我们的马路非常繁忙,每辆车都无法很快的运行
top //实时的对系统处理器的状态监控
vmstat //一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。
r //表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
b //表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
swpd //虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free //空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
buff //Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M
cache //cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)
si //每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
so //每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi //块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
bo //块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in //每秒CPU的中断次数,包括时间中断
cs //每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us //用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
sy //系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id //空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt //等待IO CPU时间
bash -n tijian.sh //-n 检查脚本语法错误
bash -x tijian.sh //-x 跟踪脚本执行情况
time for i in {1..5..1};do echo baidu;sleep 3;done //统计程序执行时间15s
多线程的实现:
time `for i in {1..5..1}; do { sleep 3; echo baidu; } & done;wait;echo;` //实际用时3s,wait来控制进程
nohup 你的shell命令 & //使Shell 命令脱离终端在后台运行
wc //(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
nmblookup -A 192.168.101 //解析windows wins记录
echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参 数: -n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
例如:
echo -e "a\tb\tc\nd\te\tf"
echo -e "\141\011\142\011\143\012\144\011\145\011\146"
echo -e "\x61\x09\x62\x09\x63\x0a\x64\x09\x65\x09\x66"
echo -ne "a\tb\tc\nd\te\bf\a"
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
1.命令格式:
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
2.命令功能:
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
3.命令参数:
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
4.常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
1.命令格式:
less [参数] 文件
2.命令功能:
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
3.命令参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
常用操作命令:
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。
-f 会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
-c 会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
-C 会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
column -t //对齐
-c 字符数指定显示的列宽
-s“ 分隔符 “ 使用-t选项时,指定分隔符(允许指定多个分隔符)
-t 判断输入行的列数来创建一个表。分隔符是使用在-s中指定的字符。如果没有指定分隔符,默认是空格
-x 更改排列顺序(左→右)。默认的顺序为(上→下)
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
tr指令从标准输入获取文本流数据,因此常备用在管道的后端进行字符过滤处理,用来转换或删除文本流的中的指定的字符(集)。
常用选项:
-c 取后边SET1字符集合的补集
-d 删除出文本中出现的包含在SET1字符集中的字符
-s 压缩字符,若文本流中某个字符出现在SET1中且连续多次,则压缩成一个字符,即把多个重复字符变成一个字符
-t 先将文本中出现的包含在SET1中的字符序列截断到字符集SET2的长度,然后进行一一对应的转换
所谓字符集,就是一组字符的集合,对于tr指令而言,更精确地说字符集就是一个字符串。字符集的表示方式如下:
CHAR1-CHAR2 从字符CHAR1到CHAR2的所有字符
[CHAR*] 出现在SET2中,表示重复CHAR字符,直到SET2字符集的长度与SET1长度相同
[CHAR*REPEAT] 重复CHAR字符REPEAT次,这里REPEAT可以十进制或者八进制(以0开始)数字
[:alnum:] 表示所有的字母和数字组成的字符集
[:alpha:] 表示所有字母组成的字符集
[:lower:] 表示所有小写字母组成的字符集
[:upper:] 表示所有大写字母组成的字符集
[:print:] 表示所有可打印的字符组成的字符集,包括空白字符
[:blank:] 表示所有水平空白字符集合
[:cntrl:] 表示所有的控制字符
[:space:] 表示所有的空白字符(包括水平空白字符和垂直空白字符)
这里CHAR表示一个字符,可以是一般可表示的字符,如大小写字母或者数字,也可以是转义字符。转义字符的定义类似于C语言中的转义字符,常用的几个如下:
\n 换行符
\r 回车符
\t 水平制表符
uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次!
参 数:
-c: 在每列旁边显示该行重复出现的次数。
-d: 仅显示重复出现的行列。
-f: 忽略比较指定的栏位。
-s: 忽略比较指定的字符。
-u: 仅显示出一次的行列。
-w: 指定要比较的字符。
-n:前n个字段和每个字段前的空白一起被忽略
+n:前n个字符被忽略
lsb_release可以查看系统工具,但是很多系统都没装这个命令。其实我也不建议用
lsb_release 来查看系统版本,因为有更好的方法。之所以我不推荐,是有原因的,见下
面解决:-bash: lsb_release: command not found办法:
-bash: lsb_release: command not found 就是 lsb_release命令没有安装。所以我们用
yum命令安装下就行了。
ifconfig
可以用来配置网络接口的IP地址、掩码、网关、物理地址等;值得一说的是用ifconfig
为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。如果您想把网络接口的IP地址固定下来,目前有三个方法:一是通过各个
发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig
指令来指定网卡的IP地址,比如在redhat或Fedora中,把ifconfig 的语名写入/etc/rc.d/rc.local文件中;
ifconfig eth0 172.30.10.101 netmask 255.255.255.0 broadcast 172.30.10.255
route add default gw 172.30.10.1
ifconfig eth0 down //关闭网卡等同于 ifdown eth0
ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 //设置ip地址
ifconfig eth0 up //启动网卡
ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 up //直接启动
ifconfig eth1 192.168.1.252 hw ether 04:64:03:00:12:51 netmask 255.255.255.0 broadcast 192.168.1.255 up //其中 hw 后面所接的是网络接口类型, ether表示乙太网, 同时也支持 ax25 、ARCnet、netrom等,详情请查看 man ifconfig ;
虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的 eth0:0 、 eth0:1、eth0:2 ..... eth1N。当然您为eth1 指定多个IP地址,也就是 eth1:0、eth1:1、eth1:2 ......以此类推;
其实用ifconfig 为一个网卡配置多个IP地址,就用前面我们所说的ifconfig的用法,这个比较简单;看下面的例子;
ifconfig eth1:0 192.168.1.251 hw ether 04:64:03:00:12:51 netmask 255.255.255.0 broadcast 192.168.1.255 up
//在 Redhat/Fedora 或与Redhat/Fedora类似的系统,您可以把配置网络IP地址、广播地址、掩码地址、物理地址以及激活网络接口同时放在一个句子中,写入/etc/rc.d/rc.local中。比如下面的例子;
ifconfig eth1:0 192.168.1.250 hw ether 00:11:00:33:11:44 netmask 255.255.255.0 broadcast 192.168.1.255 up
ifconfig eth1:1 192.168.1.249 hw ether 00:11:00:33:11:55 netmask 255.255.255.0 broadcast 192.168.1.255 up
开启内核ip转发:
sysctl net.ipv4.ip_forward //查看是否开启0为关闭
cat /proc/sys/net/ipv4/ip_forward //同上
sysctl -w net.ipv4.ip_forward=1 //开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward //同上#可能需要重启生效
sysctl -p /etc/sysctl.conf //使更改立即生效
service network restart //redhat、centos系统需重启网络生效
判断ip是否在线:
for i in {1..254..1};do res=`ping 172.22.2.$i -c 1 -W 1|grep packet|cut -b 36-37`;if [ $res = "0%" ];then echo "ping 172.22.2.$i success";else echo "ping 172.22.2.$i fail";fi;done
或者
for i in {1..10..1};do res=`ping 192.168.101.$i -w 1 -c 1|grep packet|awk ‘{print $6}‘`;if [ $res = "0%" ];then echo "success of 192.168.101.$i";else echo "fail of 192.168.101.$i";fi;done
shell语法:
sh -n /home/test.sh //测试脚本是否有语法错误
sh -vx /home/test.sh //执行脚本并追踪显示详细执行过程
执行结果重定向:
sh /home/test.sh >> /dev/null 2>&1 //将标准输出和标准出错输出到null里面
systemctl命令
任务 旧指令 新指令
使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service
systemctl is-active httpd.service
加入自定义服务 chkconfig --add test systemctl load test.service
删除服务 chkconfig --del xxx 停掉应用,删除相应的配置文件
显示所有已启动的服务 chkconfig --list systemctl list-units --type=service
查看所有服务状态 service --status-all systemctl list-unit-files
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service
1 下载axel插件的rpm包
下载地址 http://pkgs.repoforge.org/axel/
如果为centos 5 64位系统的话 使用http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.x86_64.rpm
如果为centos 6 64位系统 使用 http://pkgs.repoforge.org/axel/axel-2.4-1.el6.rf.x86_64.rpm
2 安装rpm 包 rpm -ivh http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.x86_64.rpm
3 下载配置文件axelget.conf与axelget.py到yum里:
cd /etc/yum/pluginconf.d/
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.conf
cd /usr/lib/yum-plugins/
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.py
最后确认 /etc/yum.conf中plugins=1
4 测试并安装yum-fastestmirror插件:
yum install -y yum-fastestmirror
注:axel插件也可以当独立下载工具来使用。当成独立下载工具使用时,适用于绝大部分Linux发行版。
使用参数如下:
一般使用:axel url(下载文件地址);
限速使用:加上 -s 参数,如 -s 10240,即每秒下载的字节数,这里是 10 Kb;
限制连接数:加上 -n 参数,如 -n 5,即打开 5 个连接。
wget http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.x86_64.rpm
rpm -ivh axel-2.4-1.el5.rf.x86_64.rpm
cd /etc/yum/pluginconf.d/
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.conf
cd /usr/lib/yum-plugins/
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.py
watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。
直接在 watch 后面接你想运行的命令,watch 就会帮你重复运行,并把每次的结果都更新在屏幕上。
默认 watch 会以 2s 的间隔重复运行命令,你也可以用 -n 参数指定时间间隔~
还有一个实用的参数是 -d,这样 watch 会帮你高亮显示变化的区域,这样更加一目了然了~
Ctrl+c 就可以退出~
你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了~
==============================================================================
FreeBSD和Linux下watch命令的不同
在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。
-d, –differences[=cumulative] 高亮显示变动
-n, –interval=<seconds> 周期(秒)
如:watch -n 1 -d netstat -ant
而在FreeBSD下的watch命令是查看其它用户的正在运行的操作,watch允许你偷看其它terminal正在做什么,该命令只能让超级用户使用。
如何运行watch:
[[email protected] conf]# who
root ttyp0 Oct 2 21:48 (192.168.x.x)
root ttyp1 Oct 2 22:25 (192.168.x.x)
xxhui ttyp3 Oct 2 23:48 (192.168.x.x)
[[email protected] conf]# watch ttyp3