Linux基础知识

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:查看当前系统的端口使用
    • shutdownshutdown -h now:指定现在立即关机;shutdown +5 "System will shutdown after 5 minutes":指定5分钟后关机,同时送出警告信息
    • rebootreboot:重开机。reboot -w:做个重开机的模拟(只有记录并不会真的重开机)


参考文章:https://zhuanlan.zhihu.com/p/39157806


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值