Linux系统学习笔记
Linux系统重要目录说明
- bin:binaries 存放二进制可执行文件
- sbin: super user binaries 存放二进制的可执行文件,只有root才能访问
- etc:etcetera 存放系统配置文件
- usr:unix shared resources:存放共享的系统资源【相当于Windows的program】
- home:存放用户文件的根目录 (如:/home/wange、/home/xxx)
- root:超级用户目录
- dev:devices 存放设备文件
- lib:library 存放文件系统中程序运行所需要的共享库或内核模块,相当于Windows中的system32下的dll文件
- mnt:mount 外挂设备
- boot:存放系统引导时所使用的各种文件,系统内核/开关机的文件
- tmp:temporary 存放各种临时文件,重启后会删除该文件夹下的内容,重要的数据一定不要放在该目录下
- var:variable 存放系统在运行过程中的一些用户数据,建议该目录的磁盘空间多留点
常用指令
如何查看帮助文档:
1) man 命令 (man ls)
2) 命令 --help
- ls:list 显示当前目录下的内容
[root@localhost ~]# ls -l
第一组 二 三 四 五 六 七
-rw-r--r-- 1 root root 80784656 Nov 23 17:03 cashloan-credit-0.0.1-SNAPSHOT.jar
drwxr-xr-x 2 root root 4096 Nov 28 14:58 credit
-rw------- 1 root root 128082 Nov 30 14:59 nohup.out
-rw-r--r-- 1 root root 59753461 Nov 22 13:16 springboot-netty-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 31093897 Dec 9 09:25 weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar
第一组
-:文件
d:文件夹
第二组:所拥有的文件的数量,1表示文件
第三组和第四组:目录的拥有者和所属的组
第五组:文件/目录的大小,单位是字节
第六组:文件/目录的创建时间或者是最后修改时间
第七组:文件/目录的名称
[root@localhost ~]# ls -lh(显示文件大小并且是带单位的)
-rw-r--r-- 1 root root 78M Nov 23 17:03 cashloan-credit-0.0.1-SNAPSHOT.jar
drwxr-xr-x 2 root root 4.0K Nov 28 14:58 credit
-rw------- 1 root root 126K Nov 30 14:59 nohup.out
-rw-r--r-- 1 root root 57M Nov 22 13:16 springboot-netty-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 30M Dec 9 09:25 weixin-java-miniapp-demo-1.0.0-SNAPSHOT.jar
[root@localhost ~]# ls -a(显示隐藏文件【以 . 开头的文件或者文件夹】)
[root@localhost ~]# ls -la(显示隐藏和非隐藏文件)
[root@localhost ~]# ls -lt(按文件的时间降序排列)
- pwd:查看当前目录
[root@localhost ~]# pwd(print working directory 查看当前目录)
- clear:清屏
[root@localhost ~]# clear(清屏,快捷键:CTRL + l )
- cd:切换目录
[root@localhost ~]# cd(change directory 切换目录)
[root@localhost ~]# cd .(当前目录)
[root@localhost ~]# cd ..(返回当前目录的上一层)
Linux文件系统的一些特性:
1)Linux文件系统具有层级性
2)文件或者目录都起始于根目录(/),成为树状结构
3)最顶层由 / 开始,并不像Windows中有C、D盘
4)各层级之间采用 / 分割
5)… 表示上层目录 . 表示当前目录
6)隐藏目录或者文件以 . 开头
Linux文件命名规则
1)名称不能超过255个字符
2)区分大小写
3)除了 / 外,所有字符都合法,但是要注意特殊字符(特殊字符:空格、制表符、@#$%[])的使用
4)名称尽可能有意义
Linux文件管理
- mkdir:make directory 创建目录
只能创建单层目录,如果想一次性创建多层目录:通过-p指令【p:parents】
- touch:创建文件
- cp:copy 复制
相同目录下拷贝单个文件:cp a.txt a_cp.txt 是更改文件的时间戳的
相同目录下拷贝单个文件:cp -p a.txt a_cp2.txt 复制成功后时间戳一致
拷贝多个文件:cp a.txt b.txt 1【cp 文件 … 目标文件夹】
拷贝目录:cp -r sub_dir 1 【-r 表示递归操作】
- mv:move
重命名(例:mv b.txt b_mv.txt)
移动(例:mv b_mv.txt sub_dir)
- rm:remove 删除
默认rm只能删除文件,并不能删除文件夹
删除文件夹:rm -r 目录名/文件名 【递归删除】
rm -f 文件名(f:force 强制 )
rm -rf 目录名/文件名 生产上一定要慎用,很容易导致血案的发生
- echo:echo “xxx” > 文件名(注意>和>>的区别)
>:该符号表示覆盖
>>:该符号表示追加
- cat:查看文件内容
其他查看文件内容的命令:
more:可以按住空格键查看信息,ctrl+c退出
less:可以按住键盘的上下箭头键查看信息,用q退出
tail:tail -?f 文件名(?:表示行数)
head:head -n ? 文件名(?:表示行数)
- ln:link 链接,类似于Windows的快捷方式
ln a.txt c 建立硬链接,相当于拷贝
ln -s a.txt d 建立软链接,相当于快捷方式
两者的区别:如果删除源文件,那么硬链接还能使用(因为硬链接其实就是一个拷贝),但是软链接就没法使用了
文件/目录常用操作“综合案例”:
~~~~~~~~~~~~
其他常用操作
- wc:word count 统计文本的行数、字数、字节数
-m 字节数
-w 字数
-l 行数
- find:find . -name ‘a*’【.:表示当前目录、-name:根据文件名查找】
- grep:grep 所查找文本的内容 文件名
查找文件内容(还可以在其他命令基础之上进行再查询,例如:ls -l | grep a.txt;ps -ef | grep java)
- free:显示当前内存和交换空间的使用情况
- df:显示文件系统磁盘空间的使用情况
- du:显示指定的文件/目录已使用的磁盘情况
-h 文件大小以K/M/G等为单位显示
-s 只显示当前文件/目录的占用磁盘大小的综合
-sh 配合显示文件大小并且是带单位
- top:显示当前系统中耗费资源最多的进程
- ps:显示瞬间的进程情况
-e 显示所有进程
-f 全格式
ps+top+grep的组合使用:先通过top获取进程ID、名称,然后再通过ps -ef|grep xxx
- kill:杀死一个进程
kill pid
kill -9 pid 强制杀死
- ifconfig:网卡网络相关信息
- ping:测试网卡的连通性
vim/vi是Unix/Linux上最常用的文本编辑器而且功能非常强大
- i:在光标前插入(重点记忆)
- :set nu 显示光标行数(重点记忆)
- :set nonu 取消行号
- gg 到文本的第一行
- G 到文本的最后一行
- :n 到文本的第n行
- x 删除光标所在处字符,nx删除光标所在处后的n个字符
- dd 删除光标所在行,ndd删除n行(重点记忆)
- dG 删除光标所在行到末尾行的所有内容
- D 删除光标所在处到行尾的内容
- :n1,n2d 删除指定范围 的行
- :wq 保存退出(Shift + zz 保存退出,与“:wq”作用相同)(重点记忆)
:q! 不保存直接退出
压缩与解压缩
- tar
-c 建立一个压缩文件的参数指令(create)
-x 解开一个压缩文件的参数指令(extract)
-z 是否需要用 gzip 压缩
-j 是否需要用 bzip2 压缩(bzip2的压缩比高于gzip)
-v 压缩的过程中显示文件(verbose)
-f 使用档名,在f之后要立即接档名(file)
概述:
*gzip压缩(解压)文件或目录,后缀为gz
*bzip2压缩(解压)文件或目录,后缀为bz2
*tar文件/目录用于打/解包
打包:
tar -cvf log.tar *.txt 把以.txt结尾的文件打成.tar的文件,仅打包不压缩
压缩:
tar -zcvf log.tar.gz *.txt 把以.txt结尾的文件打包,并用 gzip 方式压缩
tar -jcvf log.tar.gz *.txt 把以.txt结尾的文件打包,并用 bzip2 方式压缩
解压:
tar -zxvf [已打包并压缩的文件名] 解压到当前目录
tar -zxvf [已打包并压缩的文件名] -c tmp(-c 后面指定你要解压到的其他目录)
- gzip
命令格式:gzip [选项] 压缩(解压缩)的文件名
-d 将压缩文件解压(decompress)
-l 显示压缩文件的大小,未压缩文件的大小,压缩比(list)
-v 显示文件名和压缩比(verbose)
-num 用指定的数字num调整压缩的速度,-1 或 --fast表示最快压缩方法(低压缩比),
-9 或 --best表示最慢压缩方法(高压缩比)。
系统缺省值为6
压缩命令:gzip -v -9 [已打包的文件名]
解压命令:gzip -dv [已压缩的文件名]
- bzip2
命令格式:bzip2 [-cdz] 文档名
-c 将压缩的过程产生的数据输出到屏幕上
-d 解压缩的参数(decompress)
-z 压缩的参数(compress)
-num 用指定的数字num调整压缩的速度,-1 或 --fast表示最快压缩方法(低压缩比),
-9 或 --best表示最慢压缩方法(高压缩比)。
压缩命令:bzip2 -z [已打包的文件名]
解压命令:bzip2 -d [已压缩的文件名]
用户/组管理
Linux权限概述
Linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰
Linux如何保证多个不同的用户对同一个文件进行操作时有不同的权限控制呢
1)Linux使用User和Group来控制使用者对文件的访问权限;
2)不同用户是使用不同的账号/密码进行登录到Linux;
3)每个文件都有owner,并且每个owner都归属于某个Group;
4)每个程序/文件都有自己的owner和group;
使得Linux的安全性才有严格的保障
用户/组管理
用户/组配置文件介绍
保存用户信息的文件:/etc/passwd
保存密码的文件:/etc/shadow
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow
用户配置文件:/etc/default/useradd
用户:
1)每个用户都有一个唯一的user ID,唯一性标识符
2)User的信息存储在 /etc/passwd中
root:x:0:0:root:/root:/bin/bash
每个属性之间采用:分隔
root:登录Linux系统的用户名
x:该用户需要使用密码才能登录,如果为空表示不需要密码就能登录
0:数字,表示的是uid,0(包括0)到500是系统预留的,如果是我们新增的User,那么500开始计数的
0:数字,表示的是gid
root:是账户的描述信息
/root:该用户的home路径,如果是我们自己添加的用户呢?它的home是哪里呢?
/bin/bash:登陆后执行的程序
3)/etc/shadow:存储的是用户对应的密码信息
root:$1$J5XSs/z0$z6wnchcSuGkVqbHHJ1ROE/:(15970):0:99999:7:::
root:账号的名称,和/etc/passwd中的用户名是一一对应的
$1$J5XSs/z0$z6wnchcSuGkVqbHHJ1ROE/:密码,不是明文的,经过MD5加密的
15970:最后一次修改密码的时间
0:数字,密码不能被修改的天数
99999:数字
7:数字
4)每个User都有一个对应的home目录
root:/root
xxxx:/home/xxxx
5)root用户:超级管理员账号,具有非常高的权限
用户组:
1)每个用户都属于一个Group,具有一个唯一的标识符
2)Group信息存储在/etc/group下
root:x:0:
root:组的名称
x:该组需要使用密码才能登录
0:数字,就是该组的id,gid
3)系统会为每个用户关联一个和User同名的Group、User也可以被加入到其他组,
一个User可以对应多个组
user:root group:root