linux:基础知识整理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/m0_38084243/article/details/102775160

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

猜你喜欢

转载自blog.csdn.net/m0_38084243/article/details/102775160