Linux系统
Linux系统
1、简介
- Linux操作系统是由芬兰人李纳斯·托瓦兹(Linus Torvalds)编写的
- Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2、特征
- 一切皆文件:是指系统中所有都由文件构成,包括硬件,命令,操作系统,进程等等。
- 完全免费: Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。
- 完全兼容POSIX1.0标准:在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。
- 多用户、多任务:Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。
- 良好的界面:Linux同时具有字符界面和图形界面。
3、常用的Linux版本
1、ReadHat
介绍:1999年IBM与红帽公司建立了合作伙伴关系,以确保Redhat在IBM及其上正确运行。这也是第一款收费版本的Linux,另外红帽公司的Redhat的Linux认证在业界也是非常有名的
2、CentOS
介绍:一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。所以说CentOS是Redhat孪生兄弟也不为过,如果你想体验Redhat的企业级服务,又不想付费,可以考虑实施CentOS。
3、Ubuntu
介绍:Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在个人市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。
4、目录结构
目录 | 描述 |
---|---|
/sbin | 存放系统管理员使用的系统管理程序 |
/home[常用] | 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一个该目录名以用户的账号命名 |
/root[常用] | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
/lib[常用] | 这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库 |
/lost+found | 当系统非法关机后,存放一些文件 |
/etc[常用] | 所有系统管理所需要的配置文件和子目录my.conf |
/usr[常用] | 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下面的program files目录 |
/boot[常用] | 存放的始启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件 |
/proc | 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息 |
/srv | service缩写 这目录存放一些服务启动之后需要提取的数据 |
/sys | 这是linux2.6内核的一个恒大的变化。该目录下面安装了2.6内核中新出现的一个文件系统sysfs【别动】 |
/tmp | 这个目录是用来存放一些临时文件的 |
/dev | 类似与windows的设备管理器,把所有的硬件用文件的形式存储 |
/media[常用] | linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂在到这个目录下 |
/mnt[常用] | 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以把外部的存储挂载/mnt/上然后加入该目录就可以查看里的尼尔; |
/opt | 这是主句额外安装软件所摆放的目录,如安装ORACLE数据库就可放到该目录下,默认为空 |
/usr/local[常用] | 这是另一个主机额外安装软件所安装的目。一般是通过编译源码方式安装的程序 |
/var[常用] | 这个目录存放不断扩充的对象,习惯将坚持被修改的目录放在这个目录下。包括各种日志文件 |
/selinux | SELinux 是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可自行设置 |
5、系统指令
命令 | 操作 |
---|---|
shutdown –h now | 立刻关机 |
shutdown –r now | 立刻重启 |
reboot | 立刻重启 |
logout | 注销 |
clear | 清屏 |
whoami | 输出当前登录的用户 |
su 用户名 | 切换到另一个用户 |
6、链接指令
链接分为软链接跟硬链接,硬链接表示一个文件有多个名称,软链接类似于windows的快捷方式
软链接语法:in -s 文件 新文件名
硬链接语法:in 文件 新文件名 硬链接的文件不能是目录
7、帮助指令
- 由于Linux命令太多,有些时候容易忘记Linux的命令,可以调用Linux的帮助来查看命令的语法。
- 帮助命令有以下几种:
- man 命令:显示详细的命令帮助信息。
- help 命令:显示命令帮助信息。
- which 命令:显示命令所在的目录。
- where 命令:显示命令的指令文件所在的位置。
8、目录指令
1、ls查看目录
查看目录的命令有俩个,一个ls,一个ll,ls以list查看,ll以查看详情显示
ls常见的参数:
- -a 显示所有文件包括隐藏文件 例:ls -a
- -l 以查看详情方式显示文件,类似ll 例:ls -l
- -r 以倒序显示,默认的查询方式为以文件名升序排序 例:ls -r
- -t 以时间顺序显示 例:ls -t
- -lh 将文件大小的单位进行换算
- 参数可以搭配使用
ls可以查看指定的目录,也支持模糊查询
- ls -l /bin :以详情方式查看bin目录下的文件
- ls -l /bin/a* :以详情的方式查看bin下面是有以a开头的文件
- ll /bin/*.txt :以详情的方式查看bin下面是有以txt结尾的文件
2、目录操作指令
- pwd :显示当前所在的目录
- cd 相对路径/绝对路径 例:cd /bin 进入bin目录
- cd .. :返回上一级
- cd - :返回上一次所在的目录
- cd /:返回根目录
- cd ~ :返回家目录
3、mkdir创建目录
语法:mkdir 目录名称 只能创建一层目录
参数:
- -p :可以一次性创建多级目录 例:mkdir -p a/b/c/d
4、rmdir删除空目录
语法:rmdir 目录名称 删除一层空目录
参数:
- -p:一次性删除多层空目录 例:rmdir a/b/c
5、rm删除文件或目录
语法:rm 文件或子目录 不能删除目录
参数:
- -f : 强制删除 也不能删除目录
- -i :互动模式,在删除的时候会询问是否删除,是y,否n
- -r:递归删除 ,可以删除目录文件
rm -rf / Linux自杀命令,初学者可以尝试
6、cp复制文件
语法:cp 文件或子目录 不能直接拷贝目录
参数:
- -r 如果拷贝的是目录,则复制该目录下的所有文件
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
7、mv移动或重命名
语法根据 | 运行结果 | 例 |
---|---|---|
mv 文件名 文件名 | 重命名 | mv 1.txt 2.txt |
mv 文件名 目录名 | 移动文件(类似于剪切) | mv a /tmp |
mv 目录名 目录名 | 移动目录 | mv /text /tmp |
mv 目录名 文件名 | 出错 | mv /text 1.txt |
9、文件指令
1、cat和tac
cat为从第一行开始显示文件内容
tac为从最后一行开始显示文件内容
语法一模一样
语法:cat 文件
参数:
- -A :列出文件内容,特殊字符不以空白显示; 例: cat -A 1.txt
- -b :列出行号,空白行不标行号! 例:cat -b 1.txt
- -E :将结尾的断行字节 $ 显示出来; 例:cat -E 1.txt
- -n :列印出行号,连同空白行也会有行号; 例:cat -n 1.txt
- -T :将 [tab] 按键以 I 显示出来 ; 例:cat -T 1.txt
2、more
more以分页形式显示
语法:more 文件名
查看时可以按以下键:
- 回车:下一行
- 空格:下一页
- /字符串:向下搜索
- q:退出more
- b:往回翻页
3、less
翻页浏览
语法:less 文件名
在程序运行时,可以可以按一下几个键:
- 空格键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
4、head/tail
head取出文件前面几行,tail取出后面几行,语法一致
语法:head 文件 默认取10行
参数:-n 取的行数 例:head -3 1.text
5、历史记录history
history:显示所有的历史记录。
history 10 :只显示最近10条历史命令!10:倒叙显示10条。
6、>和>>
1、>
例:ls -l > a.txt
如果a.txt存在则覆盖里面的内容,如果文件不存在会创建该文件
2、>>
例:ls -l >> a.txt
查询的结果追加到a.txt文件末尾。如果文件不存在会创建该文件
7、时间date
命令 | 内容 |
---|---|
date +%Y | 显示当前年份 |
date +%m | 显示当前月份 |
date +%d | 显示当前是哪一天 |
date “+%Y-%m-%d %H:%M:%S” | 显示年月日时分秒 |
date -s “2020-10-10 10:20:30” | 设置时间 |
8、日历cal
cal 显示当前月份日历cal 2020显示2020年的日历
10、文件权限
1、文件基本属性
使用ll命令或者ls -l浏览文件信息时,会显示文件详情。
文件类型
0位确定文件类型
- 当为[ d ]则是目录。
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
文件权限
r代表可读(read),w代表可写(write),x代表可执行(execute),如果没有权限则会显示-
- 1-3为文件拥有者对该文件的权限
- 4-6为文件应用这组的用户对该文件的权限
- 7-9为其他用户对该文件的权限
对于root用户没有作用,因为root用户的权限不受控制
2、修改文件权限
chmod修改文件的权限,有俩种方式,一种是数字,一种是字母
语法:chmod 方式 文件
参数:-R 如果该文件下面还有文件,则递归将该文件下的所有文件更改为一样的权限
1、数字方式(推荐)
r:4,w:2,x:1 利用他们三个相加来判断拥有哪些权限
例:chmod 750 1.txt
结果
2、字母方式
字母方式则是rwx,设置为
a=r:所有人拥有读权限
o=rwx:文件拥有者拥有读写执行权限
g=rw:文件拥有者组拥有读写权限
o=r:其他用户应用读权限
例:chmod o=rwx,g=rw,o=r 1.txt
结果为
3、修改文件所属组
语法:charp 组名 文件
参数:-R 如果该文件下面还有文件,则将该文件下的所有文件的组修改
例:charp text 1.txt
4、修改文件拥有者
语法:chown 用户名 文件名
参数:-R 如果该文件下面还有文件,则将该文件下的所有文件的所有者修改
例:chown text1 1.txt
11、vi/vim编辑器
Linux中内建了一个vim文本编辑器,通过这个编辑器,可以在Linux中编辑文件
语法:vi/vim 文件
vim有三种模式:命令模式,输入模式,底部命令模式
1、命令模式
刚刚vim进入文件则是命令模式
命令模式常见的命令:
命令 | 作用 |
---|---|
i | 切换为输入模式 |
x | 删除当前光标所在的字符 |
: | 切换为底部命令模式 |
dw | 删除光标所在的一行 |
dd | 删除光标所在的一行 |
yy | 复制光标所在的一行 |
pp | 粘贴 |
gg | 快速回到第一行 |
u | 撤回上一次操作 |
2、输入模式
输入模式则为编辑模式,用于编辑文本
输入模式常见的命令:
命令 | 作用 |
---|---|
回车 | 换行 |
上下左右 | 移动光标 |
home/end | 移动光标到一行的首/尾 |
pgup/pgdn | 上一页/下一页 |
esc | 退出输入模式,进入命令模式 |
3、底部命令模式
在命令模式输入英文冒号,则进入底部命令模式,大多数用于保存数据退出
底部命令模式常用指令
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 |
:wq | 保存退出 |
:q! | 强制退出,不保存 |
12、文件命令搜索
在Linux中文件搜索有三种方式 locate、find、grep
1、locate
按文件名搜索,速度快,但是最新添加的数据不会搜索出来,然后我们则需要手动输入updatedb来更新
语法:locate 文件名
例:locate *.txt 搜索所有的txt文件
2、find
find比起locate执行速度慢,但功能强大,使用find的时候,需要避免大范围搜索,否则效率太低
语法:find 搜索范围 参数 文件名
参数:
- -name 按照名称搜索
- -iname 不区分大小写按名称搜索
- -user 查询该文件名的目录
例:
- find /etc -name *.conf 在/etc目录下搜索以.conf结尾的文件。
- find -user zhengcheng 查找属于zhengcheng的文件
- find –type d/f 根据文件类型查找,f普通文件,d目录。
- find –mtime -1/+1 查找1天以前或之后更新的文件。
- find –ctime -1/+1 查找1小时以前或之后创建的文件。
- find / -size 1M 全系统搜索大小为1MB的文件
3、grep
大多数跟其他搜索一起使用
例:find / -size 1M | grep aaa 全系统搜索大小为1MB并且包含aaa的文件
4、locate和find的区别
- 效率:find相对于locate会更慢,因为find扫描硬盘进行文件搜索。
- 功能:find功能更加强大,可以添加其他的参数,locate只能根据文件名进行搜索,都支持通配符搜索
- 即时性:find搜索的数据是即时的,locate不是。
- 模糊匹配:find默认是精确搜索,locate是模糊搜索。
5、查看端口
1 | netstat -ntlp |
13、用户和用户组
Linux是一个多用户多任务的系统,管理员可以添加多个用户分组管理
1、用户指令
1、添加用户
语法:useradd 用户名
参数:
- -d 指定用户的主目录,如果目录不存在,则同时使用-m创建
- -u:用户号 指定用户的用户号
例:
useradd –u user1 # 添加新用户 user1
useradd -d /home/userText -u 1011 user2 # 添加新用户,并指定用户家目录
2、设置/修改密码
语法:passwd 用户名
例:passwd user
3、修改用户名
语法:usermod 参数 新用户名(或组名) 旧用户名
参数:
- -l 修改用户名
- -g 修改用户组
例:usermod -l newUser user2 修改user2的用户名为newUser
4、查询用户信息
语法:id 用户名
5、切换用户
语法:su-用户名注:权限高点的用户切换权限低的不需要密码,
反之需要返回原来的用户是,用exit/logout
6、查看当前用户
语法:whoami/who am I
7、删除用户
语法:userdel 参数 用户名
参数:-r 将用户目录一起删除
例:userdel -r user
2、用户组
1、添加用户组
添加用户时,如果不指定用户组,会创建和用户名相同的一个用户组。
语法:groupadd 组名
2、删除用户组
语法:groupdel 用户组
3、找回root密码
1、开机界面按e进入编辑界面找到utf-8
2、输入init=/bin/sh 然后ctrl +x
3、输入mount -o remount,rw/ 回车
4、输入passwd 回车然后输入俩次密码然后输入touch /.autorelabel (注意有个空格)
5、输入exec /sbin/init(执行时间比较长)结束后会自动重启,然后密码生效
14、压缩和解压缩
1、tar
语法:tar 参数 要解压的tar包
tar czvf 压缩后名字 压缩的文件
参数:
- -c: 建立压缩档案
- -x:解压
- t:查看内容
- -r:向压缩归档文件末尾追加文件
- -u:更新原压缩包中的文件
例:tar –zxvf jdk-8u151-linux-i586.tar.gz
2、gunzip和gzip
语法:gzip 要压缩的文件
gunzip 要解压缩的文件
3、zip/unzip命令
语法:zip 压缩文件
unzip 需要压缩的文件
参数:-r 将压缩文件内的所有文件都压缩
15、防火墙
查看版本: firewall-cmd –version
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
更新防火墙规则: firewall-cmd –reload
添加规则:firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效)
查看所有打开的端口: firewall-cmd –list-ports
查看某个端口:firewall-cmd –zone= public –query-port=80/tcp
删除:firewall-cmd –zone= public –remove-port=80/tcp –permanent
临时关闭防火墙:systemctl stop firewalld.service
16、安装软件
首先,我们如果是用yum下载,则需要更改的地址,因为默认为国外地址,下载可能过于慢
1、首先我们备份一份CentOS-Base.repo
1 | mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup |
2、下载对应版本的CentOS-Base.repo, 放入/etc/yum.repos.d/
1 | CentOS 5 |
3、清除缓存
1 | yum makecache |
1、安装JDK
下载地址:Java
1、利用共享文件夹去cp文件
2、通过 cd /mnt/hgfs 进入找到您的共享文件夹
3、然后 cp java包到/usr/local目录(推荐这个目录,你也可以不再这个目录)
4、解压 tar –zxvf java包 例: tar –zxvf jdk-8u151-linux-i586.tar.gz
5、进入 vim /etc/profile 配置环境变量
6、进入添加
1 | export JAVA_HOME=/usr/local/java |
7、java为你安装的java的目录 保存后退出
也可以通过 设置软链接来设置快捷方式 例:ln -s jdk1.8.0_281 java(需要在进入之前设置)
8、重新编译环境变量:source /etc/profile
9、通过 java -version 查看当前java版本是否是你安装的版本
2、Tomcat
下载地址:Tomcat
1、可以在外面解压后导入,也可以导入tar.zp包 ,到里面解压
2、拷贝到 /usr/local
3、进入tomcat /bin目录
4、输入 ./startup.sh 启动tomcat
5、输入 ../logs 进入日志文件
6、输入tail -f catalina.out 查看是否报错
7、若没报错则完成,去浏览器访问虚拟机ip:8080进入tomcat则完成
8、如果进不去则需要关闭防火墙 systemctl stop firewalld.service
3、MySQL
1、安装编译源码所需的工具和库
1 | yum install make cmake gcc gcc-c++ bison-devel ncurses-devel autoconf automake |
2、新增mysql用户和用户组
1 | groupadd mysql |
3、新建mysql安装目录与数据文件目录
1 | mkdir -p /usr/local/mysql |
4、下载mysql资源包,
解压(如果有mysql资源包则不需要下载,直接解压即可)
1 | wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.39.tar.gz |
5、编译安装MySQL
1 | cmake \ |
6、编译源码与安装
1 | make |
7、修改mysql安装目录的所有者和组
1 | cd /usr/local/mysql |
8、修改mysql数据库文件目录所有者和组
1 | cd /data/mysqldb |
9、初始化mysql数据库
1 | cd /usr/local/mysql |
10、复制mysql服务启动配置文件
1 | cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf |
11、复制mysql服务启动脚本
1 | cp support-files/mysql.server /etc/init.d/mysqld |
12、配置mysql环境
进入vim /etc/profile 配置
1 | PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH |
更新环境
1 | source /etc/profile |
13、启动mysql服务
1 | service mysqld start |
出现Starting MySQL.. SUCCESS!则表示成功了
14、检查mysql服务是否启动
1 | netstat -tnl | grep 3306 |
15、进入数据库
1 | mysql -u root -p |
密码为空,登录成功则安装成功
16、设置密码
1 | mysqladmin -u root password '123456' |
这个一直报错,但是又可以123456进入
17、设置mysql远程登录
1 | GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456"; |
123456则是你远程连接这个数据库的密码
18、创建指定权限的用户
1 | grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; |
19、分配指定权限给指定用户访问数据库
1 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES, REFERENCES ON `databaseName`.* TO 'user'@'192.168.41.21'; |
20、刷新权限
1 | FLUSH PRIVILEGES; |
21、如果远程连接失败则需要关闭防火墙
1 | systemctl stop firewalld.service |
4、Maven
依旧是在/usr/local目录操作
1、下载maven安装包
下载地址:Maven
2、解压安装包
我用的是tar包则用tar包解压方式
1 | tar -zxvf apache-maven-3.8.1-bin.tar.gz |
3、创建一个软链接
1 | ln -s apache-maven-3.8.1 maven |
4、配置环境
1 | vim /etc/profile |
添加
1 | export MAVEN_HOME=/usr/local/maven |
如果你安装了java,则在bin后面:$PATH前面添加即可
1 | :$MAVEN_HOME/bin |
5、重新编译环境
1 | source /etc/profile |
6、查看版本
1 | mvn --version |
是你安装的版本则安装成功
7、修改下载地址
为了下载架包速度快,我们还需要配置
进入root目录
1 | cd /root |
- 创建.m2目录,并且导入settings.xml
1 | mkdir .m2 |
settings.xml可以通过共享文件夹方式导入然后cp过来
- 9、创建目录用于装jar包
1 | mkdir repository |
- 进入repository目录
获取目录地址,然后修改settings.xml的地址为
1 | <localRepository>/root/.m2/repository</localRepository> |
5、Nginx
1、安装依赖
1 | yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel |
2、下载解压安装包
进入 usr/local目录
1 | cd /usr/local |
创建nginx空目录,并且进入
1 | mkdir nginx |
下载架包并且解压(如果有架包,可以不需要下载,直接解压即可)
1 | wget http://nginx.org/download/nginx-1.13.7.tar.gz |
3、安装nginx
进入nginx目录
1 | cd /usr/local/nginx/nginx-1.13.7 |
执行命令
1 | ./configure |
执行make命令
1 | make |
执行make install命令
1 | make install |
4、启动nginx
1 | /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf |
5、如果端口被占用则需要配置nginx.conf
1 | vi /usr/local/nginx/conf/nginx.conf |
进入后修改端口
6、然后重新编译
1 | /usr/local/nginx/sbin/nginx -s reload |
然后启动即可
7、查看nginx进程
1 | ps -ef | grep nginx |
8、如果需要在主机上访问则需要关闭防火墙
1 | systemctl stop firewalld.service |
9、nginx的常用命令
进入nginx的sbin目录中
1 | cd /usr/local/nginx/sbin |
启动
1 | ./nginx |
关闭
1 | ./nginx -s stop |
重启
1 | ./nginx -s reload |
6、zookeeper
下载地址:https://downloads.apache.org/zookeeper/
建议安装在/usr/local
1、解压安装包
1 | tar -zxvf zookeeper-3.4.13.tar.gz |
2、进入zookeeper的conf目录
1 | cd /usr/local/zookeeper-3.4.13/conf |
3、复制
1 | cp zoo_sample.cfg zoo.cfg |
4、修改zoo.cfg
dataDir是你日志存放的地址,自定义也可以不改
1 | dataDir=../data |
5、zookeeper命令
进入zookeeper目录下的bin
启动
1 | ./zkServer.sh start |
检查启动情况
1 | ./zkServer.sh status |
使用客户端连接zookeeper
1 | ./zkCli.sh |
查看进程
1 | ps -ef | grep zookeeper |