Linux基础知识

2 篇文章 0 订阅
2 篇文章 0 订阅

本文参考自JavaGuide 《Java 面试突击》,侵删。

1. Unix Linux GNU/Linux MacOS

Unix是最早的多用户、多任务操作系统 。后面崛起的 Linux 在很多方面都参考了 Unix。目前这款操作系统已经逐渐逐渐退出操作系统的舞台。

Linux 是一套免费使用、开源的类 Unix 操作系统。 Linux 存在着许多不同的发行版本,但它们都使用了 Linux 内核 。在 GNU/Linux 系统中,Linux 实际就是 Linux 内核,而该系统的其余部分主要是由 GNU 工程编写和提供的程序组成。单独的 Linux 内核并不能成为一个可以正常工作的操作系统。

Mac OS是苹果的操作系统,编程体验和 Linux 相当,但是界面、软件生态以及用户体验各方面都要比 Linux 操作系统更好。

2. 什么是操作系统

操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基⽯;

操作系统本质上是运⾏在计算机上的软件程序 ;

操作系统为⽤户提供⼀个与系统交互的操作界⾯ ;

操作系统分内核与外壳(可以把外壳理解成围绕着内核的应⽤程序,⽽内核就是能操作硬件的程序,内核负责管理系统的进程、内存、设备驱动程序、⽂件和⽹络系统等等,决定着系统的性能和稳定性,是连接应⽤程序和硬件的桥梁)。

3. 系统调⽤

根据进程访问资源的特点,可以把进程在系统上的运⾏分为两个级别:

⽤户态(user mode) : ⽤户态运⾏的进程或可以直接读取⽤户程序的数据。
系统态(kernel mode): 系统态运⾏的进程⼏乎可以访问计算机的任何资源,而不受限制。

我们运⾏的程序基本都是运⾏在⽤户态,如果我们需要调⽤操作系统提供的系统态级别的⼦功能就需要系统调⽤了。也就是说在我们运⾏的⽤户程序中,凡是与系统态级别的资源有关的操作(如⽂件管理、进程控制、内存管理等),都必须通过系统调⽤⽅式向操作系统提出服务请求,并由操作系统代为完成。

这些系统调⽤按功能⼤致可分为如下⼏类:
设备管理: 完成设备的请求或释放,以及设备启动等功能。
⽂件管理: 完成⽂件的读、写、创建及删除等功能。
进程控制: 完成进程的创建、撤销、阻塞及唤醒等功能。
进程通信: 完成进程之间的消息传递或信号传递等功能。
内存管理: 完成内存的分配、回收以及获取作业占⽤内存区⼤⼩及地址等功能。

4. Unix Linux 内核 发行版本

类 Unix 系统 : Linux 是一种自由、开放源码的类似 Unix 的操作系统.

Linux 本质是指 Linux 内核 : 严格来讲,Linux 这个词本身只表示 Linux 内核,单独的 Linux 内核并不能成为一个可以正常工作的操作系统。所以,就有了各种 Linux 发行版。

Linux 的发行版本:
商业公司维护的发行版本,以著名的 Red Hat 为代表,比较典型的有 CentOS 。
社区组织维护的发行版本,以 Debian 为代表,比较典型的有 Ubuntu、Debian。
对于初学者学习 Linux ,推荐选择 CentOS 。

5. 文件系统 存储方式(block)inode

在 Linux 操作系统中,所有被操作系统管理的资源,例如打印机、输入输出设备、普通文件或是目录都被看作是一个文件。 也就是说在 Linux 系统中有一个重要的概念:一切都是文件。

存储方式(块、扇区):

硬盘的最小存储单位是扇区,块(block)由多个扇区组成。文件数据存储在块中。块的最常见的大小是 4kb,约为 8 个连续的扇区组成(每个扇区存储 512 字节)。一个文件可能会占用多个块,但是一个块只能存放一个文件。

inode 是 linux文件系统的基础。
我们将文件存储在块中,同时还需要一个空间来存储文件的元信息 metadata :比如某个文件被分成几块、每一块在的地址、文件拥有者,创建时间,权限,大小等。这种 存储文件元信息的区域就叫 inode,译为索引节点:i(index)+node。 每个文件都有一个 inode,存储文件的元信息。

使用 stat 命令可以查看文件的 inode 信息。每个 inode 都有一个号码,Linux操作系统不使用文件名来区分文件,而是使用 inode 号码区分不同的文件。

总结:
inode :记录文件的属性信息,可以使用 stat 命令查看 inode 信息。

block :实际文件的内容,如果一个文件大于一个块时候,那么将占用多个 块,但是一个块只能存放一个文件。(因为数据是由 inode 指向的,如果有两个文件的数据存放在同一个块中,就会乱套了)

6. Linux 文件类型

Linux 支持很多文件类型,其中比较重要的文件类型有: 普通文件,目录文件,链接文件,设备文件,管道文件,Socket 套接字文件等。

普通文件(-) : 用于存储信息和数据, Linux 用户可以根据访问权限对普通文件进行查看、更改和删除。比如:图片、声音、PDF、视频、源代码等等。
目录文件(d,directory file) :目录也是文件的一种,用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名。
符号链接文件(l,symbolic link) 保存了指向文件的地址而不是文件本身。
设备文件(b,block) : 用来访问块设备比如硬盘、软盘。
管道文件(p,pipe) : 一种特殊类型的文件,用于进程之间的通信。
套接字(s,socket) : 用于进程间的网络通信,也可以用于本机之间的非网络通信。

7. 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: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件就在这里。

8. 目录切换命令

cd usr 切换到该目录下 usr 目录;

cd …(或cd…/) 切换到上一层目录;

cd / 切换到系统根目录;

cd ~ 切换到用户主目录;

cd - 切换到上一个操作所在目录;

9. 目录的操作命令(增删改查)

mkdir 目录名称:增加目录。

ls/ll(ll 是 ls -l 的别名,ll 命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息。

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”。

mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中,即进行剪切操作。
mv 目录名称 新目录名称: 修改目录的名称(改)。 mv 的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作。

mv 目录名称 目录的新位置: 移动目录的位置—剪切(改)。 mv 语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。

cp -r 目录名称 目录拷贝的目标位置: 拷贝目录(改),-r 代表递归拷贝 。注意:cp 命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r 递归。

mv 与 cp 的结果不同,mv 类似文件“剪切”,文件个数并未增加。而 cp 对文件进行复制,文件个数增加了。

rm [-rf] 目录 : 删除目录(删)。rm 不仅可以删除目录,也可以删除其他文件或压缩包。

10. 文件的操作命令(增删改查)

touch 文件名称: 文件的创建(增)。

cat/more/less/tail 文件名称 :文件的查看(查) 。
命令 tail -f 文件 可以对某个文件进行动态监控,例如 tomcat 的日志文件, 会随着程序的运行,日志会变化,可以使用 tail -f catalina-2016-11-11.log 监控 文件的变化 。

vim 文件: 修改文件的内容(改)。
vim 编辑器是 Linux 中的强大组件,是 vi 编辑器的加强版,在实际开发中,使用 vim 编辑器主要作用就是修改配置文件,一般步骤为: vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入 wq 代表写入内容并退出,即保存;输入 q!代表强制退出不保存)。

rm -rf 文件: 删除文件(删)。

11. 压缩文件的操作命令 z c v f

打包并压缩文件:
Linux 中的打包文件一般是以.tar 结尾的,压缩的命令一般是以.gz 结尾的。而一般情况下打包和压缩是一起进行的,因此打包并压缩后的文件的后缀名一般为.tar.gz。

命令:tar -zcvf +打包压缩后的文件名 :执行打包压缩命令 , 其中:

z:调用 gzip 压缩命令进行压缩;
c:打包文件;
v:显示运行过程;
f:指定文件名;

假如 test 目录下有两个文件分别是:aaa.txt bbb.txt,如果我们要打包 test 目录并指定压缩后的压缩包名称为 test.tar.gz 可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt 或 tar -zcvf test.tar.gz /test/。

解压压缩包:

命令: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 代表指定解压的位置)

12. Linux 的权限命令 r w x

权限是操作系统用来限制资源访问的机制,在 Linux 中权限一般分为读**(readable)、写(writable)和执行(excutable)**。

通过 ls -l 命令可以 查看某个目录下的文件或目录的权限。

文件的类型:
d: 代表目录
-: 代表文件
l: 代表软链接(可以认为是 window 中的快捷方式)

Linux 中权限分为以下几种:
r:代表权限是可读,r 也可以用数字 4 表示
w:代表权限是可写,w 也可以用数字 2 表示
x:代表权限是可执行,x 也可以用数字 1 表示

文件和目录权限的区别:对文件和目录而言,读、写、执行权限表示不同的意义。

对于文件:
在这里插入图片描述

对于目录:
在这里插入图片描述
需要注意的是: 超级用户可以无视普通用户的权限,即使文件目录权限是 000,依旧可以访问。

修改文件/目录的权限的命令:chmod
示例:修改/test 下的 aaa.txt 的权限为文件所有者有全部权限,文件所有者所在的组有读写权限,其他用户只有读的权限。
chmod u=rwx,g=rw,o=r aaa.txt 或者 chmod 764 aaa.txt

13. 所有者、同组用户、其他用户

在 linux 中的每个用户必须属于一个组,不能独立于组外。

u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件所有者有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。

ls ‐ahl 命令可以看到文件的所有者;
chown 用户名 文件名 修改文件的所有者 。
chgrp 组名 文件名 修改文件所在的组。

14. Linux 用户管理

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

Linux 用户管理相关命令:
useradd 选项 用户名: 添加用户账号
userdel 选项 用户名: 删除用户帐号
usermod 选项 用户名: 修改帐号
passwd 用户名: 更改或创建用户的密码
passwd -S 用户名 : 显示用户账号密码信息
passwd -d 用户名: 清除用户密码

useradd 命令用于 Linux 中创建的新的系统用户,即可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码。使用useradd指令所建立的帐号,实际上是保存在 /etc/passwd文本文件中。

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

15. Linux 系统用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。比如一些Linux 系统规定:用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

Linux 系统用户组的管理相关命令:

groupadd 选项 用户组 :增加一个新的用户组
groupdel 用户组:要删除一个已有的用户组
groupmod 选项 用户组 : 修改用户组的属性

16. 网络通信命令

查看当前系统的网卡信息:ifconfig

查看与某台机器的连接情况:ping

查看当前系统的端口使用:netstat -an

立即关机 shutdown -h now (-h : 关机后停机)

指定 10 分钟后关机 shutdown -h 10

重新启动计算机 shutdown -r now

重开机 reboot

做个重开机的模拟(只有纪录并不会真的重开机)reboot -w

net-tools 和 iproute2 : net-tools起源于 BSD 的 TCP/IP 工具箱,后来成为老版本 LinuxLinux 中配置网络功能的工具。但自 2001 年起,Linux 社区已经对其停止维护。同时,一些 Linux 发行版比如 Arch Linux 和 CentOS/RHEL 7 则已经完全抛弃了 net-tools,只支持iproute2。linux ip 命令类似于 ifconfig,但功能更强大。

17. 其他常用命令

pwd: 显示当前所在位置

sudo + 其他命令:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

grep 要搜索的字符串 要搜索的文件 --color: 搜索命令,–color 代表高亮显示

ps -ef/ps -aux: 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis (查看包括 redis 字符串的进程),也可使用 pgrep redis -a。

注意:如果直接用 ps 命令,会显示所有进程的状态,通常结合 grep 命令查看某进程的状态。

kill -9 进程的pid: 杀死进程(-9 表示强制终止。)

先用 ps 查找进程,然后用 kill 杀掉

18.开机自启动设置

假如我们装了一个 zookeeper,我们每次开机到要求其自动启动该怎么办?

  1. 新建一个脚本 zookeeper
  2. 为新建的脚本 zookeeper 添加可执行权限,命令是:chmod +x zookeeper
  3. 把 zookeeper 这个脚本添加到开机启动项里面,命令是:chkconfig --add zookeeper
  4. 如果想看看是否添加成功,命令是:chkconfig --list
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值