【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是个人目录嘛 #最后记得,保存后要重启终端才能用