1、linux命令
1.1 系统结构
/ ##根目录 /bin ##二进制可执行文件,系统常规命令 /boot ##启动目录,存放系统自动启动文件,内核,初始化程序 /dev ##系统设备管理文件 /etc ##大多数系统配置文件存放路径 /home/子目录 ##普通用户家目录 /lib ##函数库 /lib64 ##64位函数库 /media ##临时挂载点 /mnt ##临时挂载点 /run ##自动临时设备挂载点 /opt ##第三方软件安装路径 /proc ##系统硬件信息和系统进程信息 /root ##超级用户家目录 /sbin ##系统管理命令,通常只有root可以执行 /srv ##系统数据目录 /var ##系统数据目录 /sys ##内核相关数据 /tmp ##临时文件产生目录 /usr ##用户相关信息数据 |
1.2 常用命令
ls, list 的缩写,可以查看文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等
-a 列出目录所有文件,包含以.开始的隐藏文件 -A 列出除.及..的其它文件 -r 反序排列 -t 以文件修改时间排序 -S 以文件大小排序 -h 以易读大小显示 -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来 ls -lhrt #按易读方式按时间反序排序,并显示文件详细信息 ls -lrS #按大小反序显示文件详细信息 ls -l t* #列出当前目录中所有以"t"开头的目录的详细内容 |
cd,change Directory的缩写
cd /root/Docements # 切换到目录/root/Docements cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录 cd ../path # 切换到上层目录中的path目录中,“..”表示上一层目录 cd ~ #进入当前用户家目录,即/roo cd - #当前目录和上一次工作路径所在目录之间的切换 |
pwd ,用于查看当前工作目录路径
pwd #查看当前路径 pwd -P #查看软链接的实际路径 |
grep ,(Global Regular Expression Print) 全局正则表达式搜索
grep [option] pattern file|dir -c 计算符合样式的列数 -i 忽略大小写 -l 只列出文件内容符合指定的样式的文件名称 -f 从文件中读取关键词 -n 显示匹配内容的所在文件中行数 -R 递归查找文件夹 |
find,用于在文件树中查找文件,并作出相应的处理
-name 按照文件名查找文件 -perm 按文件权限查找文件 -user 按文件属主查找文件 -group 按照文件所属的组来查找文件。 -type 查找某一类型的文件,诸如: b - 块设备文件 d - 目录 c - 字符设备文件 l - 符号链接文件 p - 管道文件 f - 普通文件 -size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小 -amin n 查找系统中最后N分钟访问的文件 -atime n 查找系统中最后n*24小时访问的文件 -cmin n 查找系统中最后N分钟被改变文件状态的文件 -ctime n 查找系统中最后n*24小时被改变文件状态的文件 -mmin n 查找系统中最后N分钟被改变文件数据的文件 -mtime n 查找系统中最后n*24小时被改变文件数据的文件 |
cp,将源文件复制至目标文件,或将多个源文件复制至目标目录
cp -ai a.txt test #复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。 cp -s a.txt link_a.txt #为 a.txt 建议一个链接(快捷方式) cp file1 file2 file3 dir #把文件file1、file2、file3复制到目录dir中 |
mv,用于移动文件、目录或更名
-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -i :若目标文件已经存在,就会询问是否覆盖 -u :若目标文件已经存在,且比目标文件新,才会更新 mv file1 file2 file3 dir # 把文件file1、file2、file3移动到目录dir中 mv file1 file2 # 把文件file1重命名为file2 |
rm,用于删除文件或目录
-f :就是force的意思,忽略不存在的文件,不会出现警告消息 -i :互动模式,在删除前会询问用户是否操作 -r :递归删除,最常用于目录删除,它是一个非常危险的参数 rm -i file # 删除文件file,在删除之前会询问是否进行该操作 rm -fr dir # 强制删除目录dir中的所有文件 |
ps,用于将某个时间点的进程运行情况选取下来并输出
-a :不与terminal有关的所有进程 -u :有效用户的相关进程 -x :一般与a参数一起使用,可列出较完整的信息 -e :显示环境变量 -f :显示进程间的关系 -l :较长,较详细地将PID的信息列出 ps aux | grep apache # 查看系统所有的进程数据,与grep联用查找某进程 ps -ef | grep apache # 显示当前所有进程环境变量及进程间关系 |
kill,用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用
kill -signal PID #signal的常用参数 1:SIGHUP,启动被终止的进程 2:SIGINT,相当于输入ctrl+c,中断一个程序的进行 9:SIGKILL,强制中断一个进程的进行 15:SIGTERM,以正常的结束进程方式来终止进程 17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行 kill -9 $(ps -ef | grep pro1) #先使用ps查找进程pro1,然后用kill杀掉 |
file,用来探测给定文件的类型
[root@localhost ~]# file install.log install.log: UTF-8 Unicode text |
tar,用来压缩和解压文件。tar本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
-z 支持gzip压缩 / -j 支持bzip2压缩 -c 压缩 / -x 解压 / -t 查看打包文件的内容含有哪些文件名 -v 显示操作过程 -f 指定压缩文件 压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称 查询:tar -jtv -f filename.tar.bz2 解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录 |
more,一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
less, 可以随意浏览文件
more +3 text.txt #显示文件中从第3行起的内容 ls -l | more -5 #在所列出文件目录详细信息,借助管道使每次显示 5 行 ps -aux | less -N #ps 查看进程信息并通过 less 分页显示 less 1.log 2.log #查看多个文件 |
chgrp,用来改变文件或目录所属的用户组
chgrp -R mengxin /usr/meng #递归地把/usr/meng目录下中的所有文件和子目录下所有文件的用户组修改为mengxin |
chown,可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。
chown -R liu /usr/meng #将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu |
chmod,用于改变文件的权限
u User,即文件或目录的拥有者; g Group,即文件或目录的所属群组; o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围; a All,即全部的用户,包含拥有者,所属群组以及其他用户; r 读取权限,数字代号为“4”; w 写入权限,数字代号为“2”; x 执行或切换权限,数字代号为“1”; <权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置; <权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置; <权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置; chmod [-R] abc文件或目录 #其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 chmod ug=rwx,o=x file chmod 771 file |
time,用于测算一个命令(即程序)的执行时间
time ./process time ps aux 在程序或命令运行结束后,在最后输出了三个时间,它们分别是: user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和; system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和; real:实际时间,从command命令行开始执行到运行终止的消逝时间; |
2、top的内存排序
top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。 M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; H:线程查看模式切换为开或关; |
第一行,任务队列信息,同 uptime 命令的执行结果
第二行,Tasks — 任务(进程)
第三行,cpu状态信息(占用CPU的百分比)
第四行,内存状态
第五行,swap交换分区信息
第六行,空行。
第七行以下:各进程(任务)的状态监控
3、查看线程
ps -T -p <pid> top -H -p <pid> pstree <pid> 假设要查看的进程为my_process: # ps -ef | grep my_process root 10001 3322 0 14:05 ? 00:01:19 my_process # ps -T -p 10001 PID SPID TTY STAT TIME COMMAND 10001 10001 ? Sl 0:00 my_process 10001 10023 ? Sl 0:00 my_process # top -H -p 10001 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10300 root -46 0 2048420 422828 19784 S 0.3 10.4 0:01.15 my_process |
4、awk的统计和end用法
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。
awk --模式 --/正则表达式/:使用通配符的扩展集。 --关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。 --模式匹配表达式:用运算符~(匹配)和~!(不匹配)。 --BEGIN语句块、pattern语句块、END语句块 --操作 --变量或数组赋值 --输出命令 --内置函数 --控制流语句 |
一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被单引号或双引号中
awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file 注意: ①、所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0 ②、> < 可以作为字符串比较,也可以用作数值比较 ③、默认的字段定界符是空格 ④、使用if(key in array)判断数组中是否包含key键值,因为数组索引可以是数字和字符串,在awk中数组叫做关联数组(associative arrays),只要通过数组引用它的key,就会自动创建改序列。 ⑤、数组下标是从1开始 其他: ①、字段引用 $ ②、读取下一条记录 next ③、输出到一个文件 echo | awk '{printf("hello word!n") > "datafile"}' 或 echo | awk '{printf("hello word!n") >> "datafile"}' ④、length返回字符串以及数组长度,split进行分割字符串为数组,也会返回分割得到数组长度 awk 'BEGIN{info="it is a test";lens=split(info,tA," ");print length(tA),lens;}' 4 4 实例: ①、以第一列为分组,进行第二列求和,变形:s[$1" "$2] += $3 awk '{ s[$1] += $2 } END { for ( i in s ) { print i , s[i]}}' test.txt ②、求取第一列的总和 awk 'BEGIN{ sum =0 }{ sum += $1 }END{ print sum}' test.txt ③、截取第一列的最大值 awk 'BEGIN{MAX=0}{if( $1 > MAX) MAX=$1}END{print MAX}' test.txt ④、统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l ⑤、查看某一时间段的IP访问量(4-5点) grep"07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l |