【linux】linux常用知识点

1、linux目录结构

如下图:

/bin:二进制目录,主要存放许多用户级的GUN工具,比如/bin/bash
/ect:系统配置文件目录,比如前面讲的/passwd就是记录用户的shell的
/home:主目录,Linux在这里创建用户目录,比如/home/wcy
/tmp:临时目录,可以存放临时文件
/usr:用户二进制目录,大量用户级的GUN工具和数据文件都存放在这里

2、bash shell命令

2.1、cd命令:

绝对路径 带/
相对路径不带/
有CLI提示符(CLI提示符就是~)代表在当前用户的主目录
单点符(.):代表当前目录
双点符(..):代表上一级目录

2.2、ls命令:

-F:在可执行文件后面加上 / 
-R:用多了就会发现,这个参数基本都是和子目录有关,这里就是显示目录的子目录
-a:显示所有文件,包括隐藏文件
-i:显示每个文件的索引编号
-l:显示更多的目录信息,已长列表的形式
-l [过滤条件]:显示满足过滤条件的文件,过滤条件可以使用?*做通配符,甚至可以使用[!a](排除a),[ab],[a-c]
注:这个过滤条件不一定要放到-l后面,直接用也可以的

2.3、ls查询出的文件信息分析:

信息分别是: 文件类型 文件权限信息 硬链接数量 属主用户名 属主的组名 文件大小 上次修改时间 文件名或者目录名

2.4、复制-cp命令:

-i:提醒是否会替代
-n:不覆盖
-R:复制整个目录的时候用
-f:如果有已存在的目标文件切无法打开,将其删除后重试
-s:只创建符号链接而不是复制文件

2.5、链接文件 - ln命令:

硬链接:可以理解为一个文件有两个路径,一般用于重要文件备份,防止误删
软链接:可以理解为windows里的快捷方式,源文件删除就失效了

ln  #硬链接—它和源文件根本上是一个文件
ln -s #符号链接,也叫软链接,与源文件的innode不一致(innode可以通过ls -i 查看)

2.6、移动文件(重命名)- mv命令:

-f:不提醒直接覆盖
-i:提醒是否会替代
-t:移动文件夹

2.7、删除文件 - rm命令:

-f:不提醒直接删除
-i:提醒是否要删除
-r/-R: 递归删除目录文件
-d:删除空目录
 所以rm -rf 是删库跑路哈哈,要是不确定就是加个 -i

创建文件夹 - mkdir命令

删除空文件夹 - rmdir命令

2.8、查看文件

file命令:查看文件类型

cat命令:查看文件具体内容
-n:加行号
-b:只给有文本的加行号
-T:不让制表符出现

more命令:cat命令文本会一晃而过,所以有more命令
less命令:比more更强大,支持上下翻页
tail命令:指定后面多少行查看 eg:tail -5
head命令:指定前面多少行查看 eg: head -5

3、更多的bash shell命令

3.1、ps命令

-a: 显示所有进程
-u:以用户的信息显示进程
-x:显示后台运行进程的参数
-l:长格式输出信息
-ef:可以查看父类进程信息
--forest:查看显示父线程和子线程之间的关系
pstree -pu :以树机构查看进程关系
# 显示所有进程的前五个
[root@localhost ~]# ps -aux | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 194240  7388 ?        Ss   6月07   2:25 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    6月07   0:01 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   6月07   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    6月07   0:04 [ksoftirqd/0]
# 以cpu占比排序
[root@localhost ~]# ps -aux --sort=%cpu | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 194240  7388 ?        Ss   6月07   2:25 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    6月07   0:01 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   6月07   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    6月07   0:04 [ksoftirqd/0]
# 以cpu占比正排序,内存逆排序
[root@localhost ~]# ps -aux --sort=%cpu,-%mem | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1732  0.0  0.5 1279228 89232 ?       Ssl  6月09  19:10 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       830  0.0  0.1 359140 29900 ?        Ssl  6月07   0:11 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root      1162  0.0  0.1 1007312 18632 ?       Ssl  6月07   0:01 /usr/sbin/libvirtd
root      1158  0.0  0.1 574284 17504 ?        Ssl  6月07  12:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P

3.2、top命令

常用参数:

-d + 秒数  :设置刷新时间
-b         : 以字段批次显示
top -n 3 -b > /tmp/top.tmp (3s将top信息转存到临时文件)
-p + 进程号: 指定进程

top显示的页面命令

P:以CPU的使用资源排序显示
M:以内存的使用资源排序显示
N:以pid排序显示
T:由进程使用的时间累计排序显示
k:给某一个pid一个信号。可以用来杀死进程
r:给某个pid重新定制一个nice值(即优先级)
q:退出top(用ctrl+c也可以退出top)。

top信息介绍

PID:线程名称
USER:进程属主名称
PR:优先级
NI:谦让度值
VIRT:占用虚拟内存的值
RES:占用物理内存的值
S:进程状态(虚拟机里那个版本好像表头不显示这个S)
%CPU:CPU占比
%MEN:占可用内存的总量

3.3、kill命令

结束线程的前提是线程的属主或者root权限
通过 kill pid 来杀死进程 例如:kill 2356

#也可以指定别的处理方式:
1  HUP 挂起
2  INT  中断
3  QUIT 结束运行
例:kill -s 1 2356 或者 kill -s HUP 2356、kill -9 pid(表示强制结束)

3.4、 vmstat命令

用于查看和监控整个服务器的内存和CPU占用情况

命令格式:vmstat [options] [delay [count]]

FIELD DESCRIPTION FOR VM MODE
   Procs
       r: The number of runnable processes (running or waiting for run time).
       b: The number of processes blocked waiting for I/O to complete.

   Memory
       These are affected by the --unit option.
       swpd: the amount of swap memory used.
       free: the amount of idle(闲置) memory.
       buff: the amount of memory used as buffers(缓冲).
       cache: the amount of memory used as cache.
       inact: the amount of inactive memory.  (-a option)
       active: the amount of active memory.  (-a option)

   Swap
       These are affected by the --unit option.
       si: Amount of memory swapped in from disk (/s).
       so: Amount of memory swapped to disk (/s).

   IO
       bi: Blocks received from a block device (blocks/s). (这里的块设备指的是所有磁盘和其他块设备)
       bo: Blocks sent to a block device (blocks/s).

   System
       in: The number of interrupts per second, including the clock.
       cs: The number of context switches per second.

   CPU
       These are percentages of total CPU time.
       us: Time spent running non-kernel code.  (user time, including nice time)
       sy: Time spent running kernel code.  (system time)
       id: Time spent idle(闲置的).  Prior to Linux 2.5.41, this includes IO-wait time.
       wa: Time spent waiting for IO.  Prior to Linux 2.5.41, included in idle.
       st: Time stolen from a virtual machine.  Prior to Linux 2.6.11, unknown.

常用参数:

-a, --active           active/inactive memory
-f, --forks            number of forks since boot
-m, --slabs            slabinfo
-n, --one-header       do not redisplay header
-s, --stats            event counter statistics
-d, --disk             disk statistics
-D, --disk-sum         summarize disk statistics
-p, --partition <dev>  partition specific statistics
-S, --unit <char>      define display unit //have param like "k, K , m , M"
-w, --wide             wide output
-t, --timestamp        show timestamp

-h, --help     显示此帮助然后离开
-V, --version  显示程序版本然后离开

3.5 挂载

  • mount命令:挂载设备
基本用法 mount - t type device directory
这里的type指定磁盘被格式化的文件系统类型,一般用的多的就是 vfat(Windows系统)

-O:可以选择挂载方式,有ro(只读)、rw(读写)等等
  • umount命令:卸载设备
用法:
umount [-hV]
umount -a [选项]
umount [选项] <源> | <目录>

值得注意的是和windows一样,有任何程序在使用该设备都不能拔出。

3.6 监控磁盘空间、

  • df命令:查看磁盘空间
-h:以用户易读的形式显示
  • du命令:显示特定目录的磁盘空间(默认是当前目录)
-c:显示当前目录下的总用量
-h:以用户易读的形式显示
-s:显示每个输出参数的统计

3.7 处理数据文件

  • cat命令:略

  • sort命令:

-b:忽略起始的空白
-n:按值排序
-M:排序
-k:--key=pos1[,pos2]从指定位置排序
-t: 指定分健位置的字符 
-r:反序
以 ":" 为分隔符的第三个为排序字符,以值大小排序
sort -t ':' -k 3 -n /etc/passwd
  • grep命令:管道命令
非常强大,命令行格式如下:
-grep [option] pattern [file]
-v: 不匹配的
-n: 加行号
-c:只输出有多少行匹配
-e:匹配多个模式 如:grep -e 1 -e 2 filename
 
pattern还可以使用正则,[ef]是e或f,[1-3]是1-3
  • zip命令:压缩数据
zip option 目标文件 源文件
-q :不显示压缩进度状态
-r :子目录子文件全部压缩为zip  //不然的话只有"zipfile list''文件夹被压缩,里面内容没有被压缩进去
-e :压缩文件需要加密,终端会提示你输入密码的 //zip -r -P test password.zip "zipfile list'' 直接用'test'来加密password.zip 。
-m :压缩完删除原文件
-o :设置所有被压缩文件的最后修改时间为当前压缩时间
eg:zip test/temp.zip temp
  • unzip
uzip option 源文件 目标文件 
eg:uzip test.zip -d test (解压缩到指定目录)
  • tar命令:归档数据
这里记住官方给的三个例子就好了:
Examples:
  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.
  tar -tvf archive.tar         # List all files in archive.tar verbosely.
  tar -xf archive.tar          # Extract all files from archive.tar.

小窍门:基本使用的就是压缩和解压,-cf就是压缩,-xf就是解压,-v就是显示要不要都行

-c:切换到指定目录
-f:输出结果到文件或目录
-p:保留文件权限
-v:处理时显示文件
-r:追加文件到以后文件末尾
-z:输出重定向给gzip命令来压缩内容

4、环境变量

4.1、全局变量和局部变量

这里的全局变量和局部变量和程序语言中的一致。

printenv 变量名 #查看全局变量
env $变量名  #查看全局变量 
my_vara=123 #设置局部变量
set : #查看局部变量
export 变量名 #局部变量变全局变量,子shell的全局变量在父shell中不管用,父shell导出的变量子shell是可以继承的
unset #删除全局变量

4.2、默认的shell环境变量

PATH 环境变量:定义了用于进行命令和程序查询的目录。

不同的目录用:隔开

一般程序员添加PATH环境变量

PATH=$PATH:.

4.3、环境变量持久化

全局的环境变量

将新的或者修改过的环境变量 创建一个.sh文件 放到 /etc/profile.d 这个目录下
注意:如果直接放到/etc/profile中升级了发行版,这个文件也会更新的,就丢了

如果要创建个人账户的全局变量:

将变量放到$HOME/.bashrc 文件中,因为$HOME是个人目录嘛  #最后记得,保存后要重启终端才能用
posted @ 2022-05-23 14:16  吴承勇  阅读(224)  评论(0编辑  收藏  举报