在Linux文件系统中有两个特殊的目录:
. :代表当前的目录,也可以使用 ./ 来表示;
.. :代表上一层目录,也可以 ../来代表。
- bin (binaries)存放的是二进制的可执行文件
- sbin (super user binaries)存放二进制可执行文件,只有root才能访问
- etc (etcetera)存放系统配置文件
- usr (unix shared resources)用于存放共享的系统资源,系统应用程序,软件的默认安装目录
- home 存放用户文件的根目录,每个用户在该目录下都有一个与用户名同名的目录
- root 超级用户目录
- dev (devices) 用于存放系统中所有的设备文件
- lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
- mnt (mount)系统管理员安装临时文件系统的安装点{挂载}
- boot存放用于系统引导时使用的各种文件
- tmp (temporary)用于存放各种临时文件
- var (variable)用于存放运行时需要改变数据的文件
- 配置目录etc:软件安装后配置文件选择放入的地址。
- 软件安装目录:usr/local
- 安装应用程序目录:opt,部署的API程序一般放在这个目录。部署的API放入用户的目录:/home/用户名
注意:Linux系统的文件系统是以斜杠“/” - [根目录]开始,不是windows中的盘符概念。
用户账户一般非为两大类:超级管理员和普通用户。
- 超级管理员:用root表示,root用户在系统中拥有最高权限。
- 普通用户:除了root之外的用户。例如我们之前创建的gch用户,就是普通用户。
在真实的企业开发当中,我们很少使用root用户的权限,我们一般都是普通用户。
#语法 cat /etc/passwd
- root:用户名
- x :密码 :已经加密 ,密码存放在 [vi/vim] /etc/shadow 密码文件
- 0 :账号id ,userId
- 0 : 组id ,group id
我们一般自定义的用户,id都在1000及以上。
# 创建一个用户
#语法:useradd 选项 用户名
#选项:-c comment 表示指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
- 由于我们在企业开发当中一般都是普通用户,因此这些可选选项我们不用过多关注!
#案例1:
useradd lina02
进入到密码文件当中来看看,输入:[vi / vim] /ect/shadow
退出vi编辑器,输入:q,接着按回车即可!
# 删除一个用户
#语法:userdel 选项 用户名 其中 -r 是常用的选项,表示将用户的主目录一起删除。
#案例:
userdel -r lina02
用户口令的管理其实就是用户密码的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的命令是passwd。
超级用户 - root可以为自己和其他用户指定口令;普通用户只能用它修改自己的口令。
# 用户口令的管理
#语法:passwd 选项 用户名
可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
PS:Linux操作系统中密码部分不予显示,所以看起来是空白的,实际已经输入了密码。
如果是超级用户,可以用下列形式指定任何用户的口令:
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
PS:如果当前用户正在被使用,则无法删除!
语法:su [-] [用户名]
Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
- 绝对路径:由根目录 / 写起,例如: /usr/share/doc 这个目录。
- 相对路径:不是由根目录 / 写起,例如由 /usr/share/doc(本身已经就在doc目录下) 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
Linux系统当中, ls 命令可能是最常被运行的。
ls语法:
- ls :查看当前路径下的文件名称
- ls -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
- ls -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- ls -l :以列表的形式展示内容,长数据串列出,包含文件的属性与权限等等数据; (常用)
- ll: 等价于ls -l
- ls -al :目录下的所有文件列出来(含属性与隐藏档)
补充:ls --help:查看帮助文档!
cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
cd [相对路径或绝对路径]
如果不写参数。直接输入cd命令,则默认切换到当前登陆用户的HOME目录
每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录:
#使用绝对路径切换到 local 目录
cd /usr/local/
# 表示回到自己的家目录,亦即是 /root 这个目录
cd ~
# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
cd ..
PS:/root <==> ~
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
语法:pwd
mkdir (make directory)用来创建新的目录。
语法:mkdir [-mp] 目录名称
-m :配置文件的权限喔!直接配置,不需要看默认权限的脸色
-p :直接将所需要的目录(包含上一级目录)递归创建起来!
示例:/tmp底下尝试创建新目录看看:
mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 没办法直接创建此目录啊!
mkdir -p test1/test2/test3/test4
加了这个 -p 的选项,可以自行帮你创建多层目录!
rmdir 命令用来删除空的目录。
语法: rmdir [-p] 目录名称
find命令 - 用于查找指定的文件
wc命令做文件的行数-l、单词数量-w统计
在 more 这个程序的运行过程中,你有几个按键可以按的:
more命令同样可以查看文件内容,同cat命令不同的是:
例子:Linux系统内容比较多的文件:/etc/man_db.conf /etc/services
....(中间省略)....
: <== 这里可以等待你输入命令!
less运行时可以输入的命令有:
echo配置重定向符使用:两个特殊符号,重定向符:>和>>
语法:mv 参数1-源文件 参数2-目标文件
举例:移动myself文件夹到NewMyself文件夹中
如果目标文件不存在,则还起到改名的效果,移动源文件后还要进行源文件的改名,修改源文件的名称并移动到目标文件。
如果目标文件存在,则会询问你是否要覆盖目标文件的内容:
如果不想询问,可以:mv -f 参数1 参数2,强制覆盖,但这种方式不推荐!
语法: rm [-fir] 文件或目录1.....文件或目录N
-f :就是 force 的意思,强制删除,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录(文件夹)的删除了!这是非常危险的选项!!!
删除文件夹必须加-r选项,表示递归!
rm命令来自英文单词:remove
如果不想让提示,直接rm -rf /文件路径:
为了便于传输或节省存储空间,有时候文件是以压缩包的形式存在,因此就需要了解压缩与解压缩相关的命令。
一般Linux 上常用的压缩方式是选用 tar打包命令 将多个文件打包成一个文件,再以 gzip压缩命令压缩成xxx.tar.gz(或者xxx.tgz)的文件。
常用参数:
打包:tar -cvf + xxx.tar + 要打包的文件或目录的列表,用空格隔开
打包并且压缩为指定文件:tar + -zcvf + xxx.tar.gz + 要打包的文件或目录的列表,用空格隔开
拆包指定文件到指定位置:tar + -xvf + xx.tar + -C + /路径
解压指定文件到指定位置:tar + -zxvf + /xx.tar.gz + -C + /路径
PS:如果在Linux命令行不小心输错命令,可以使用Ctrl + C组合键来中断当前命令的执行!
语法:grep [-n] "关键字" 文件路径
作用:通过grep命令,从文件中通过关键字的过滤找出匹配的行并输出!
任务都以进程或线程的形式存在,因此需要随时关注系统的进程,查看是否有异常进程以及各进程占用系统资源的情况并使用不同的进程管理命令对进程管理和控制。
功能描述:查看系统中所有进程
参数:
ps :ps -axu <==> ps -ef 都是显示全部进程,显示当前进程的快照
每一项 | 含义 |
---|---|
USER | 所属用户,进程是由哪个用户产生的 |
PID | 进程ID |
%CPU | CPU使用率,该进程占用CPU的百分比,占用越高,进程越耗费资源 |
%MEM | 内存使用率,该进程占用内存的百分比,占用越高,进程越耗费资源 |
VSZ | 占用虚拟内存的大小,单位KB |
RSS | 占用实际物理内存的大小,单位KB |
TTY | 终端设备,表示该进程在哪个终端中运行,tty1-tty7代表本地控制台终端(tty1-tty6是本地的字符界面终端,tty7是图形终端),pts/0-255代表虚拟终端 |
STAT | 进程状态,常用状态有:R(运行)、S(睡眠)、T(停止状态)、s(包含子进程)、+(位于后台) |
START | 进程启动时间 |
TIME | 累计使用CPU的运算时间,进程执行时间,即占用cpu的运算时间,不是系统时间 |
COMMAND / CMD | 产生此进程的命令名,命令行 |
查看Java进程:ps - axu | grep java
查看MySQL进程 ps - axu | grep mysql
vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
vim 是 vi 的加强版本,兼容 vi 的所有指令!
如果需要通过vi / vim编辑器编辑文件,请通过如下命令:
- vi / vim 文件路径
PS:如果文件路径表示的文件不存在,那么此时会创建一个新的文件供编辑使用;如果文件路径表示的文件存在,那么就直接编辑已有文件。
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
- 比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 冒号切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- w - write保存文件
- q - quit退出vim编辑器
- wq 保存文件并退出vim编辑器,哪怕 / 即使文件内容没有发生修改,也会强制更新文件的修改时间!
- :x 也是保存文件并退出Vim编辑器,当且仅当文件被修改时才更新文件的修改时间!
推荐使用:x,因为使用:wq会强制更新文件的修改时间,让整个项目误认为文件被修改过了,然后就得重新编译链接生成可执行文件,这可能会产生让人误解的后果,当热也产生了不必要的系统资源花销!
- :q! 强制退出 / 不保存退出
按ESC键可随时退出底线命令模式。
命令模式:
输入模式:
Linux操作系统中对权限的管理很严格。Linux系统中不仅是对用户与组,根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用它来确定谁能通过何种方式对文件和目录进行访问和操作。
Linux下权限的粒度有【拥有者/当前用户 、用户组 、其它组】三种,类似于你自己、你的好朋友、陌生人这三种;每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。
1. Linux文件一共有三种身份:
2. 对于每个身份,又有四种权限:
权限共有10个字符,我们将它分为4大部分来理解:
- --- --- --- 总共四部分
第1部分,第一个字符:表示文件的类型
第2部分,第2,3,4个字符:当前用户具有的对该文件的权限(user 属主,缩写u,文件的拥有者)
第3部分,第5,6,7个字符:当前组内其他用户具有的对该文件的权限 (group 属组,缩写g)
第4部分,第8,9,10个字符:其他组的用户具有的对该文件的权限 (other 其他,缩写o)
PS:针对目录才加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
对于文件和目录来说,r,w,x有着不同的作用和含义:
针对文件:
- r:读取文件内容
- w:修改文件内容
- x:执行权限对除二进制程序以外的文件没什么意义
针对目录:目录本质可看做是存放文件列表、节点号等内容的文件
- r: 查看目录下的文件列表
- w:删除和创建目录下的文件
- x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
PS:root用户虽然不受文件权限的读写限制,但是root用户仍然受到可执行权限的限制!!!
以数字形式表示权限:
- 读取权限:r 或者4
- 写入权限:w或者2
- 执行权限:x或者1
- 可读写可执行:rwx = 4 + 2 + 1 = 7
- 可读写不可执行:rw- = 4 + 2 = 6
- 可读不可写可执行:r-x = 4 +1 = 5
常见权限形式
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
chown 是change owner的意思,主要作用就是修改/改变文件或者目录的拥有者User,即用户.
-R | 处理指定目录以及其子目录下的所有文件 |
chown 修改文件和文件夹的用户和用户组属性,使用权限为root
将当前前目录下的所有文件与子目录的所有文件的拥有者设为 itnanls,群体的使用者 ydl:
将Vim.txt的拥有者设置为gch:
语法:chmod who opt per file
语法:chmod XXX file
0无权限;x = 1表示可执行权限;w = 2表示可写权限;r = 4表可读权限
查看/显示主机名:hostname
查看虚拟机的IP地址:ip addr / ifconfig
由于VMware默认的网络模式是NAT地址转换模式,使用NAT连接方式,DHCP服务器会自动分配IP地址,导致IP地址有可能会发生变化,这样一来我们每次使用远程工具连接时都要查询IP地址,因此我们可以直接给虚拟机绑定一个静态IP。
修改IP地址:进入/etc/sysconfig/network-scripts/,Vim编辑器进入修改ifcfg-ensxx:
重启网络服务:service network restart
Linux系统上很多软件均支持使用systemctl命令控制:
语法:systemctl start | stop | status | restart | enable | disable 服务名
- start启动、stop关闭、status查看状态、restart重启、enable开启开机时自启动、disable关闭开机时自启。
- 能够被systemctl管理的软件,一般也称之为:服务!
系统内置的服务比较多,比如:
- NetworkManager:主网络服务
- network,副网络服务
- firewalld,防火墙服务
- ssh服务(使用第三方远程连接工具登录Linux使用的就是这个服务,端口号为22)
查看网络服务状态:systemctl status network
启动网络服务:systemctl start network
停止网络服务:systemctl stop network (不建议)
重启网络服务:systemctl restart network / service network restart
设置开机启动网络服务:systemctl enable network
查看防火墙状态: systemctl status firewalld
启动防火墙: systemctl start firewalld
关闭防火墙: systemctl stop firewalld
查询防火墙服务是否开机启动:systemctl is-enabled firewalld
开机时启用防火墙服务:systemctl enable firewalld
开机时禁用防火墙服务:systemctl disable firewalld
- 查询已经启动的服务列表:systemctl list-unit-files|grep enabled
- 查询启动失败的服务列表:systemctl --failed
语法:ping [-c num] ip或主机名/域名
语法:ln -s 参数1-被链接的文件或文件夹 参数2-要链接去的目的地
下载JDK 的Linux 版本 https://www.oracle.com/java/technologies/downloads/#java8-linux
把下载好的JDK上传到Linux虚拟机上:
上传文件的方式一:使用MobaXterm上传文件方式二:使用Xftp完成上传
PS:若使用MobaXtrem,则默认上传到当前用户的HOME目录下!
将自己所下载好的位于根目录下的JDK移动到刚才所创建的目录:
解压Linux版本的JDK8的压缩包:文件后缀为tar.gz
查看JDK的版本,验证是否安装成功:
编辑profile文件,在profie文件中添加JAVA_HOME变量:
使配置生效:source /etc/profile
查看变量是否更新成功:echo $PATH
验证:JDK环境变量若配置好了,就可以在任意目录下查看java -version了!