Linux是一套免费使用和自由传播的类Unix操作系统,时下很多服务器都部署在Linux系统上,所以作为一名Java后端程序员必须了解基本的Linux知识。这篇博客就当作是我学习Linux的一个记录吧。
一.从认识操作系统开始
1.1-操作系统简介
什么是操作系统,主要有以下四点:
- 操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;
- 操作系统本质上是运行在计算机上的应用程序;
- 为用户提供一个与系统交互的操作界面;
- 操作系统分内核与外壳(可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)
1.2-操作系统简单分类
1.Windows:目前最流行的个人桌面操作系统;
2.Unix:最早的多用户、多任务操作系统。按照操作系统的分类,属于分时操作系统。Unix大多被用在服务器、工作站,现在也有用在个人计算机上。它在创建互联网、计算机网络或客户端/服务器模型方面发挥着非常重要的作用。
3.Linux:Linux是一套免费使用和自由传播的类Unix操作系统。Linux存在着许多不同的版本,但他们都是用了Linux内核。Linux可以安装在各种计算机硬件设备中,比如手机、平板、路由器、视频游戏控制台、台式机、超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
二.初探Linux
2.1-Linux简介
Linux的三点特性:
- 类Unix系统:Linux是一种自由、开放源码的类似Unix的操作系统;
- Linux内核:严格来说,Linux这个词本身只表示Linux内核;
- Linux之父:一个编程领域的传奇式人物。他是Linux内核的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师与项目协调者,是当今世界最著名的电脑程序员、黑客之一。他还发起了Git这个开源项目,并为主要的开发者——Linus Torvalds
2.2-Linux诞生简介
- 1991年,芬兰的业余计算机爱好者Linus Torvalds编写了一款类似Minix的系统(基于微内核架构的类Unix操作系统)被ftp管理员命名为Linux,并加入到自由软件基金的GNU计划中;
- Linux以一只可爱的企鹅作为标志,象征着敢作敢为、热爱生活
2.2-Linux的分类
1.内核版本:Linux不是一个操作系统,严格来讲,Linux只是一个操作系统中的内核。内核是什么?内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等;
2.发行版本:一些组织或公司在内核版基础上进行二次开发而重新发行的版本。Linux发行版本有很多(ubuntu和CentOS用的都很多,初学建议选择CentOS),如下图:
三.Linux文件系统概览
3.1-Linux文件系统简介
在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。
也就是说在Linux系统中有一个重要的概念:一切都是文件。其实这是Unix哲学的一个体现,而Linux是重写Unix而来,所以这个概念也就传承了下来。在Unix系统中,把一切资源都看作是文件,包括硬件设备。Unix系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
3.2-文件类型与目录结构
Linux支持5种文件类型:
文件类型 | 描述 | 示例 |
普通文件 | 用来在辅助存储设备(如磁盘)上存储信息和数据 | 包含程序源代码(用C、C++、Java等语言所编写)、可执行程序、图片、声音等 |
目录文件 | 用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名 | /root、/home |
链接文件 | 用于不同目录下文件的共享 | 当创建一个已存在文件的符号链接时,系统就创建一个链接文件,这个链接文件指向已存在的文件 |
设备文件 | 用来访问硬件设备 | 包括键盘、硬盘、光驱、打印机等 |
命名管道(FIFO) | 是一种特殊类型的文件,Linux系统下,进程之间通信可以通过该文件完成 |
Linux的目录结构如下:
Linux文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录。
常见目录说明:
- /bin:存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;
- /etc:存放系统管理和配置文件;
- /home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
- /usr:用于存放系统应用程序;
- /opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
- /proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
- /root:超级用户(系统管理员)的主目录(特级权限);
- /sbin:存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
- /dev:用于存放设备文件;
- /mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
- /boot:存放用于系统引导时使用的各种文件;
- /lib:存放着系统运行相关的库文件;
- /tmp:用于存放各种临时文件,是公用的临时文件存储点;
- /var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志)等;
- /lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫.chk)就在这里。
四.Linux基本命令
下面只是给出了一些比较常用的命令。大家可以到这个Linux命令快查网站查询Linux命令。
4.1-目录切换命令
- cd usr:切换到该目录下usr目录;
- cd ..(或cd../):切换到上一层目录;
- cd /:切换到系统根目录;
- cd ~:切换到用户主目录;
- cd -:切换到上一个所在目录
4.2-目录的操作命令(增删改查)
1. mkdir 目录名称:增加目录
2. ls或ll(ll是ls -l的缩写,ll命令用于查看该目录下的所有目录和文件的详细信息):查看目录信息
3. find 目录 参数:寻找目录(查),示例:
- 列出当前目录及子目录下所有文件和文件夹:find .
- 在/home目录下查找以.txt结尾的文件名:find /home -name "*.txt"
- 同上,但忽略大小写:find /home -iname "*.txt"
- 当前目录及子目录下查找所有以.txt和.pdf结尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)或find . -name "*.txt" -o -name "*.pdf"
4. mv 目录名称 新目录名称:修改目录的名称(改)
注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行重命名的操作。mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
5. mv 目录名称 目录的新位置:移动目录的位置-剪切(改)
注意:mv的语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
6. cp -r 目录名称 目录拷贝的目标位置:拷贝目录(改),-r代表递归拷贝
注意:cp命令不仅可以拷贝目录,还可以拷贝文件和压缩包,拷贝文件和压缩包时不用写-r递归
7. rm [-rf] 目录:删除目录(删)
注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆,无论删除任何目录或文件,都直接使用rm -rf目录/文件/压缩包
4.3-文件的操作命令(增删改查)
1. touch 文件名称:文件的创建(增)
2. cat/more/less/tail 文件名称:文件的查看(查)
- cat:只能显示最后一屏内容
- more:可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看
- less:可以使用键盘上的PgUp和PgDn向上和向下翻页,q结束查看
- tail-10:查看文件的后10行,Ctrl+C结束
注意:命令tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件,随着程序的运行,日志会变化,可以使用 tail -f catalina-2018-07-11.log监控文件的变化
3. vim 文件:修改文件的内容(改)
vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需过多研究,使用vim编辑修改文件的方式基本会用就可以了。在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:
vim 文件---->进入文件---->命令模式---->按i进入编辑模式---->编辑文件---->按Esc进入底行模式---->输入:wq/q!(输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存)
4. rm -rf 文件:删除文件(删),
同目录删除,数据rm -rf 文件 即可
4.4-压缩文件的操作命令
1. 打包并压缩文件:
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般为.tar.gz
命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
其中:
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
比如:加入test目录下有三个文件分别是:aaa.txt、bbb.txt、ccc.txt,如果我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz,可以使用命令:
tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt
或
tar -zcvf test.tar.gz /test/
2. 解压压缩包
命令:tar [-xvf] 压缩文件
其中:x 代表解压
示例:
- 将/test下的test.tar.gz解压到当前目录下:tar -xvf test.tar.gz
- 将/test下的test.tar.gz解压到根目录/usr下:tar -xvf test.tar.gz -C /usr(-C代表解压到指定位置)
4.5-Linux的权限命令
操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable)三组。分别对应文件的属主(owner)、属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。通过 ls -l 命令可以查看某个目录下的文件或者目录的权限
示例:在随意某个目录下 ls -l:
第一列的被容的信息解释如下:
下面详细讲解文件的类型、Linux中权限以及文件所有者、所有组、其他组具体含义。
4.5.1-文件的类型
- d:代表目录
- -:代表文件
- l:代表链接(可以认为是windows中的快捷方式)
4.5.2-Linux中的权限分类
- r:代表权限是可读,r也可以用数字4表示
- w:代表权限是可写,w也可以用数字2表示
- x:代表权限是可执行,x也可以用数字1表示
4.5.3-文件和目录权限的区别
对文件和目录而言,读写执行表示不同的意义。
对于文件:
权限名称 | 可执行操作 |
r | 可以使用cat查看文件的内容 |
w | 可以修改文件的内容 |
x | 可以将其运行为二进制文件 |
对于目录:
权限名称 | 可执行操作 |
r | 可以查看目录下列表 |
w | 可以创建和删除目录下文件 |
x | 可以使用cs进入目录 |
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念。
- 所有者:一般为文件的创建者,用ls -ahl命令可以看到文件的所有者,也可以使用 chown 用户名 文件名 来修改文件的所有者
- 文件所在组:当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组,用ls -ahl命令可以看到文件的所在组,也可以使用 chgrp 组名 文件名 来修改文件所在的组
- 其他组:除开文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
4.5.4-修改文件/目录的权限
修改文件/目录的权限的命令:chmod
示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,其他用户只有读的权限:chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以用数字表示:chmod 764 aaa.txt
补充:加入我们装了一个zookeeper,我们每次开机要求其自动启动该怎么办?
1. 新建一个脚本zookeeper
2. 为新建的脚本zookeeper添加可执行权限,命令是:chmod +x zookeeper
3. 把zookeeper这个脚本添加到开机启动项里面,命令是:chkconfig --add zookeeper
4. 如果想看看是否添加成功,命令是:chkconfig --list
4.6-Linux用户管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
Linux用户管理相关命令:
- useradd 选项 用户名:添加用户帐号
- userdel 选项 用户名:删除用户帐号
- usermod 选项 用户名:修改用户帐号
- passwd 用户名:更改或创建用户的密码
- passwd -S 用户名:显示用户帐号密码信息
- passws -d 用户名:清除用户密码
useradd命令用于Linux中创建新的系统用户。useradd可用来建立用户帐号,帐号建好之后,再用passwd设定帐号的密码,也可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理员则能用他管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
4.7-Linux系统用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上是对/etc/group文件的更新。
Linux系统用户组的管理相关命令:
- groupadd 选项 用户组:增加一个新的用户组
- groupdel 用户组:删除一个已有的用户组
- groupmod 选项 用户组:修改用户组的属性
4.8-Linux中的其他常用命令
- pwd:显示当前所在位置
- grep 要搜索的字符串 要搜索的文件 --color:搜索命令,--color代表高亮显示
- ps -ef 或 ps aux:这两个命令都是查看当前系统正在运行的进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的命令:ps aux|grep redis(查看包括redis字符串的进程)。注意:如果直接用ps((Process Status))命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态
- kill -9 进程的pid:杀死进程(-9表示强制终止),先用ps查找进程,然后用kill杀掉
- ifconfig:查看当前系统的网卡信息
- ping:查看与某台机器的连接情况
- netstat -an:查看当前系统的端口使用
- shutdown:shutdown -h now:指定现在立即关机;shutdown +5 "System will shutdown after 5 minutes":指定5分钟后关机,同时送出警告信息
- reboot:reboot:重开机。reboot -w:做个重开机的模拟(只有记录并不会真的重开机)
参考文章:https://zhuanlan.zhihu.com/p/39157806