狂神说Linux学习笔记整理
Linux,全称GNU/Linux,是一种免费使用和自由传播的。
1 Linux简介
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
Linux发行版
Linux的发行版说简单点就是将Linux内核与应用软件做一个打包
比较 | windows | Linux |
界面 | 界面统一,外壳程序固定所有windows程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依赖发布版本不同而不同,可能互不兼容。GNU/Linux的终端机是从UNIX传承下来,基本命令和操作方法也几乎一致 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的windows下的驱动,也会比较头疼 | 由志愿者开发,有Linux核心开发小组发布,很多硬件厂商基于版本考虑未提供驱动程序,尽管多少无需手动安装,但涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方式)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在windows下很难支持也很容易找到驱动。HP、Intel、AMD等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握 |
学习 | 系统构造复杂,变化频繁,且知识、技能淘汰快,深入学习困难 | 系统结构简单,稳定,且知识,技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能需要商业软件的支持,需要购买相应的授权 | 大部分软件都可以自由获取,同样功能的软件选择较少 |
2 走进Linux系统
开机会启动许多程序,他们在Windows叫做“服务”(service),在Linux就叫做“守护线程”(daemon)
2.1 关机指令 shutdown
sync #将数据由内存同步到硬盘中
shutdown #关机指令,你可以 man shutdown 来看一下帮助文档。列如你可以运行如下关机命令关机:
shutdown -h 10 #计算机将在10分钟后关机
shutdown -h now #立马关机
shutdown -h 20:25 #系统将在今晚20:25关机
shutdown -r now #系统立马重启
shutdown -r +10 #系统10分钟后重启
reboot #系统立马重启 等同于shutdown -r now
halt #立马关机 等同于shutdown -h now 和poweroff
2.2 系统目录结构
1一切皆文件
2 根目录/,所有的文件都挂在这个节点下
登录系统后,在当前命令窗口下输入命令:
ls /
树状目录结构:
目录解释
- /lib:这个目录存放这系统最基本的动态连接共享库,作用类似于windows里的DLL文件(不要动)
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件(存放突然关机的一些文件)
- /media:linux系统会自动识别一些设备,列如U盘,光驱等待,识别后,系统会自动把识别的社保挂到这个目录下。
- /mnt:用户临时挂载别的文件系统的,我们可以将光驱挂载/mnt上,进入该目录就可以查看光驱的内容了(后期会把一些文件目录挂载这个目录下)
- /opt:这个是给主机额外安装软件所摆放的目录。比如你安装一个oracle数据库则就可以放在这个目录下。默认是空的
- /proc:这个目录是一个虚拟的目录,他是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息(不用管)
- /root:该目录为系统管理员,也称做超级权限这的用户主目录
- /sbin:s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /srv:该目录存放有些服务启动之后需要提取的数据。
- /sys:这是Linux2.6内核的一个很大的变化。该目录下安装2.6内核中新出先的一个文件系统sysfs
- /temp:这个目录是用来存放一些临时文件的。用完即丢,安装包可以放在这个目录下
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放这个目录下,类似于windows下的program files目录。
- /usr/bin:系统用户使用的管理程序
- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:内核源代码默认的放置目录
- /var : 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删除或者清除
- /www: 存放服务器网站相关的资源,环境网站的项目
3 常用的基本命令
3.1 目录管理
绝对路径 相对路径
绝对路径的全称:C:\Users\sangfor\IdeaProjects
比如说sangfor目录下,那这个IdeaProjects文件,对应我们的相对配置就是/IdeaProjects
cd : 切换目录命令!
./ :当前目录
cd .. : 返回上一级目录
ls:列出目录
在Linux中ls 可能是最常常被使用的
-a参数 :all ,查看全部的文件,包含隐藏文件
-l参数 :列出所有的文件,包含文件的属性和权限,没有隐藏文件
所有Linux命令可以组合使用
cd 命令 切换目录
pwd显示当前目录
mkdir创建目录
rmdir 删除目录
rmdir 仅能删除空的目录,如果目录里面有文件存在,需要先删除文件;递归删除多个目录加 -p参数
cp 复制文件或者目录
cp 原文件路径 目标路径
cp -r 原文件路径 目标路径
rm 移除文件或者目录
-f 忽略不存在的文件,不会出现警告,强制删除!
-r 递归删除目录
-I 互动,删除询问是否删除
rm –rf / #系统中所有文件就被删除了,删库跑路就是这么操作
mv 移动文件或者目录
-f 强制
-u只替换已经更新过的文件
3.2 基本属性
10个字母~看懂文件属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问一个文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls –l 命令来显示一个文件的属性以及文件所属的用户和组
实例中,boot文件的第一个属性用“d”表示。“d”在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或者链接文件等等:
- 当为【d】则是目录
- 当为【-】则是文件
- 当是【l】则表示为链接(link file)
- 若为【b】则表示为装置文件里面的可供存储的接口设备(可随机存取装置)
- 若为【c】则表示为装置文件里面的串行端口设备,列如键盘、鼠标(一次性读取装置)
接下来的字符串,以三个为一组,且均为[rwx]的三个参数的组合其中,【r】代表可读(read),【w】代表可写(write)、【x】代表可执行(execute)要注意的是,这个三个权限的位置不会改变,如果没有权限,那么就会出现【-】代替。
每个文件的属性由左边第一部分的10个字符来确定
从左至右用0-9这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中:
第1、4、7位表示读权限,如果用“r”表示,有读权限,如果用“-”表示没有读权限
第2、5、8位表示写权限,如果用“w”表示,有写权限,如果用“-”表示没有写权限
第3、6、9位表示可执行权限,如果用“x”表示,有权限,如果用“-”表示没有权限
同时,在Linux中,用户是按组分类的,一个用户属于一个或者多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同文件的访问权限。
在以上实列中,boot文件是一个目录文件,属主和属组都为root.
修改文件属性
1、chgrp :更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改
2、chown:更改文件属主,也可以同时更改文集属组
chown [-R] 属主名 文件名
chown [-R] 属主名: 属组名 文件名
3、chmod:更改文件9个属性
chmod [-R] xyz 文件或者目录
Linux文件属性由两种设置方法,一种是数字(推荐),一种是符合。
Linux文件的基本权限有九个,分别是owner/group/others三种身份各有自己的read、write/execute权限。
我们可以用数字来代表各个权限,各权限的分数对照表如下
r:4 w:2 x:1
可读可写不可执行 rw- 6
可读可写可执行 rwx 7
chmod 777 filename
每种身份(owner/group/others)各自有三个权限(r/w/x)分数是需要累加的。列如当权限为:[-rwxrwx---]分数则是
Owner = rwx = 4+2+1=7
Group = rwx = 4+2+1=7
others = --- = 0+0+0=0
chmod 770 filename
文件内容查看
Linux 系统中使用以下命令来查看文件的内容:
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以查看tac是cat 倒着写
nl 显示的时候,顺道输出行号
more 一页一页的显示文件内容
分页是根据当前linux 窗口大小显示的,空格代表翻页,enter代表向下看一行,:f行号,q 退出
less 与more类似,但比more更好的是,他可以前往翻页(空格下放页,pageup,pagedn键代表翻动页面,q退出命令,查找字符串/要查找的字符串向下查询,向上查询使用?要查询的字符串,n表示继续寻找下一个,N表示向上寻找)
head 只看头几行 –n参数表示显示几行
tail 只看尾巴几行 –n参数表示显示几行
可以用man[命令]来查看各个的使用文档,如: man cp。
网络配置目录: cd /etc/sysconfig/network-scripts/
查网络配置:ifconfig
Linux连接的概念
Linux的连接分为两种:硬链接 软连接
硬链接:A~B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接在一些重要文件上,防止误删!
软链接:就是类似于windows下的快捷键,删除了源文件,快捷键也访问不了
ln 命令 创建连接
touch 命令 创建文件
echo 输入字符串
3.3 vim编辑器
vim通过一些插件可以实现和IDE一样的功能!
vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方面的功能特别丰富,在程序员中被广泛使用。尤其是在Linux中必须要会使用vim(查看内容,编辑内容,保存内容),简单来说vi的老式的处理器,不过功能已经很齐全了,但是还有可以进步的地方。
vim则可以说是程序开发者的一项很好用的工具。
所有的unix like 系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。
三种使用模式
基本上vi/vim共分为三种模式,分别是命令模式(command mode),输入模式(insert mode)和底线命令模式(last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当做了一个命令。
以下是常用的几个命令:
- i切换到输入模式,以输入字符。
- x删除当前光标所在处的字符。
- :切换到底线命令模式,以便在最底一行输入命令。
若想要编辑文本:启动vim,进入了命令模式,按下I,切换到输入模式。
命令模式只有一些最基本的命令,因此要依靠底线命令模式输入更多命令
输入模式:
在命令模式下按下i就可以进入输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及shift组合,输入字符
- Enter,回车键,换行
- Back space 退格键,删除光标前一个字符
- Del,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- Home/end,移动光标到行首/行尾
- Page up/page down,上下翻页
- Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
- Esc,退出输入模式,切换到命令模式
底线命令模式
在命令模式下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本上的命令有(已经省略了冒号):
- q退出程序
- w保存文件
按esc键可随时退出底线命令模式
简单来哦说,我们可以将三个模式想成底下的图标来表示:
完整的演示说明
新建或者编辑文件,按i进入编辑模式,编写内容;编写文按错后退出编辑模式,esc,
退出之后进入底线命令模式:wq保存退出!
除了上面的简易的i,esc,:wq之外,其实vim还有非常多的使用方式。
第一部分:一般模式可以用光标移动,复制粘贴,搜索替换等
第二部分:一般模式切换到编辑面试可使用的按钮说明
第三部分:一般模式切换到指令模式的可用的按钮说明
3.4 账号管理
简介
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须先向管理员申请一个账号,然后以这个账号的身份进入系统。
用户这个账号一方面可以帮助管理员对系统用户进行跟踪,并控制他们队系统资源的访问,另一方面可以帮助用户组织文件,并为用户提供安全性保护。
实现用户账号管理,要完成的工作主要有如下方面:
- 用户账号的添加、删除及修改
- 用户口令的管理
- 用户组的管理
用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加,修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号,用户组、主目录和登录shell等资源~属组,属主
useradd 命令 添加用户
useradd -选项用户名
-m 自动创建这个用户的主目录
理解一下本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息 /etc/passwd
删除用户userdel
Userdel -r 用户账号 删除时将他的目录一并删除掉
修改用户usermod
修改用户 usermod 对应修改的内容 修改用户账号
修改完毕之后查看配置文件即可
切换用户 su username
root用户
1切换用户的命令: su username 【username是用户账号】
2从普通用户切换到root用户,还可以使用命令sudo su
3在终端输入exit 或者logout或者使用快捷键方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行exit命令
4在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加- 列如:【su -root】
$表示普通用户
#表示超级用户,也是root用户
hostname 名称 修改主机名
用户的密码设置问题
我们一般通过root创建用户的时候,需要配置密码!
Linux上输入密码是不会显示的,正常输入就可以了。
如果是普通用户:
Passwd 用户账号
Current unix password:
New password:
Retype password:
锁定账户
比如某人离职了,就需要冻结这个账号,一旦冻结了,这个人就登录不上系统了
3.5 用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux系统对用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
创建一个用户组groupadd
创建完用户组后可以得到一个id,这个id可以指定 –g 207 ,若不指定就自增1
删除用户组groupdel
修改用户组的权限信息和名字groupmod –g –n
用户如何切换用户组
拓展:文件查看(了解即可)
/etc/passwd
用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录shell
这个文件中的每一行都代表这一个用户,我们可以从这里看出这个用户的主目录在哪里,可以看到属于哪一个组
登录口令:我们真正的加密后的用户口令存放到/etc/shadow文件中,保证我们密码的安全性
3.6 磁盘管理
df(列出文件系统整体的磁盘使用量) du(检查磁盘空间使用量)
3.7 进程管理
对我们开发人员来说,其实Linux更多的偏向于使用
基本概念
1在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号
2每一个进程都会有一个父进程
3进程可以有两种存在方式:前台!后台运行!
4一般的话服务都是后台运行的,基本上的程序都是前台运行的
ps 命令查看进程
ps 查看当前系统中正在执行的各种进程的信息!
ps –xx
-a 显示当前终端运行的所有的进程信息(当前的一个进程)
-u 以用户的信息显示进程
-x 显示后台运行进程的参数
#ps –aux 查看所有的进程
ps –aux|grep mysql
ps –aux|grep redis
# | 在Linux这个叫做管道符 A|B
# grep 查看文件中符合条件的字符串!
对于我们来说,目前只需要记住一个命令即可 ps –xx|grep 进程名字!过滤进程信息
ps –ef|grep:可以查看到父进程的信息
ps –ef|grep mysql 查看MySQL进程的父进程
#进程树 pstree –pu
pstree –pu
-p 显示父进程id
-u 显示用户组
结束进程:杀掉进程 kill -9
kill -9 进程的id #强制结束进程
3.8 防火墙
确保Linux的防火墙端口是开启的,如果是阿里云,还需要保证阿里云安全策略是开发的
#查看firewall服务状态
systemctl status firewalld
#开启、重启、关闭firewalld.service服务
#开启
service firewalld start
#重启
service firewalld restart
#关闭
service firewalld stop
#查看防火墙规则
firewall-cmd –list-all #查看全部信息
firewall-cmd –list-ports #只看端口信息
#开启端口
开启端口命令:firewall-cmd –zone=public –add-port=80/tcp –permanent
重启防火墙:systemctl restart firewalld.service
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通信协议
--permanent #永久生效,没有此参数重启后生效
4 环境安装
软件安装一般有三中方式:
rpm(JDK:在线发布一个springboot项目)、
解压缩(tomcat,启动并通过外网访问),
yum在线安装(docker直接安装运行跑起来docker就可以!!)
4.1 Jdk安装 rpm -ivh rpm包
1.下载JDK rpm,去Oracle官网下载
2.安装java环境rpm -ivh rpm包
#检查当前系统是否存在Java环境!Java -version
#如果有的话就需要卸载
#rpm -qa|grep jdk #检测jdk版本信息
#rpm -e –nodeps jd_
#卸载完毕后即可按照jdk
#rpm -ivh rpm包
如果存在 卸载
3、环境配置
环境配置变量:/etc/profile在文件的最后面增加java的配置和windows安装环境变量一样!
JAVA_HOME=/usr/java/jdk1.8.0_281-amd64
CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%jre/lib
PATH=$JAVA_HOME/bin;$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
4、确保Linux防火墙及阿里云安全策略开发
4.2 解压安装tomcat tar -zxvf tar包
1下载tomcat ,
2解压这个文件
tar –zxvf tar包
3 启动tomcat ./XXX.sh 脚本即可运行
#执行 ./startup.sh
#停止 ./shutdown.s
4确保安全组及防火墙打开
systemctl status firewalld
firewall-cmd --list-ports
firewall-cmd --zone=public --add-port=8080/tcp --permanent
systemctl restart firewalld.service
上传完毕项目直接购买自己的域名,备案解析过去即可,
域名解析后,如果端口是80-http或者443-https可以直接访问,如果是9000 8080,就需要Apache或者Nginx做一下反向代理即可,配置文件即可,十分简单,大家如果想上线自己的网站,到目前为止,已经可以了。
4.3 Yum 安装docker ~yum -y install 安装包名
我们现在是在Linux下执行,一定要联网,yum在线安装!
1检查centOS的版本信息cat /etc/redhat-release
2安装我们的准备环境
3清除以前的版本,后面根据官网安装,这儿不写了
更多推荐
所有评论(0)