热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux_01_基础

1.内核及发行版1)内核(kernel):运行程序和管理硬件的核心程序,提供了一个在裸设备和应用程序之间的抽象层。2)发行版:提供了人机交互界面。2.Linux的文件结构Linux

1.内核及发行版

1)内核(kernel):运行程序和管理硬件的核心程序,提供了一个在裸设备和应用程序之间的抽象层。

2)发行版:提供了人机交互界面。

技术图片

 

2.Linux的文件结构

Linux没有Windows那样的盘符概念,只有一个根目录/,所有的文件都在它下面。/下的home目录为每个用户私有。

 

3.Linux图形界面

Liunx发行版提供了图形界面。

 

4.为什么要使用终端命令?



  • 实际工作中,大量的服务器维护工作都是在远程通过SSH客户端完成,并没有图形界面。

  • 作为后端开发程序员,掌握一些常用的Linux命令是必需的。

 

5. Linux终端命令的格式

格式:command [-options] [-parameters] 

命令帮助: command --help; man command.

 

6. 文件和常用命令

6.1 查看目录内容

1)实用技巧:

自动补全:tab键

曾使用命令:上箭头和下箭头

2)ls命令说明:

 





















参数含义
-a显示指定目录下所有文件,包括隐藏文件(以.开头)
-l以列表方式显示文件详细信息
-h配合-l以人性化方式显示文件大小

 

 

 

 

 

 

 

3)ls通配符的使用





























通配符含义
* 代表任意个字符
?  代表任意1个字符
[]表示可以匹配定义字符数组中的任意1个元素
[abc]匹配abc中的任意1个
[a-f]匹配a到f范围内的任意一个字符

 

 

 

 

 

 

 

 

 

6.2 切换目录

1)cd命令的常用参数





























参数含义
cd切换到当前用户的主目录(/home/用户目录)
cd~切换到当前用户的主目录(/home/用户目录)
cd.保持当前工作目录不变
cd..切换到上级目录
cd-可以在最近两次工作目录之间来回切换

 

 

 

 

 

 

 

 

2)相对路径和绝对路径

绝对路径:在输入路径时,最前面是/或者~,表示从根目录/家目录开始的具体目录位置。

相对路径:在输入路径时,最前面不是/或者~,表示从当前目录开始。

 

6.3 创建和删除操作

1)touch::创建文件或者修改文件时间(如果文件已存在,就修改文件的末次修改时间)。

2)mkdir:添加参数 -p 就可以实现创建递归目录

注意同意目录下,文件和目录不能重名。

3)rm:使用该命令删除的文件,会直接从磁盘上消失。













-f强制删除,忽略不存在的文件
-r递归地删除目录下的内容,删除文件夹时必须加此参数

 

 

 

6.4 拷贝和移动文件





























序号命令英文作用
01tree [目录名]tree以树状图列出文件目录结构
02cp 原文件 目标文件copy复制文件或目录
03mv 源文件 目标文件move移动文件或者目录/文件或者目录重命名

 

 

 

 

 

1)tree:  树状图列出指定目录的文件目录结构
















-d只显示目录

 

 

2)cp: 复制文件或目录













-i如果发生覆盖,会提示
-r如果要复制目录就必须添加该选项。该选项可以递归地复制目录下的文件和目录。

 

 

 

3)mv:移动文件/目录;重命名文件/目录
















-i如果发生覆盖,会提示。

 

 

 

6.5 查看文件内容




















cat 文件名1 文件名2 concatenate 查看文件内容
more 文件名-    分屏展示文件内容
grep 文本内容 文件名grep搜索指定文件中的包含指定文本的行

 

 

 

 

1)cat:查看文件内容













-b给每个非空行加上编号
-n给每行加上编号

 

 

 

2)more:分屏展示文件内容

3)grep:搜索指定文件的包含指定文本的行





























-n显示行号
-v显示不包含指定文本的行
-i忽略大小写
常用的两种搜索模式 
^a搜索以a开头的行
ke$搜索以ke结尾的行

 

 

 

 

 

 

 

 

6.6 echo、重定向和管道





















echo  xxx将文字内容显示到终端,通常和重定向联用
xxx > 文件将指定文本输出到指定文件,覆盖已有内容
xxx >> 文件将指定文本追加到指定文件
|允许将一个命令的输出作为另一个命令的输入

 

 

 

 

 

1)echo:

echo  hello linux > file.txt

2)重定向<和>>:



  • Linux允许将命令的执行结果重定向到一个指定文件中(该文件不存在将新建一个)

  • 将本应显示在终端的内容输出/追加到指定文件中(该文件不存在将新建一个)

3)|:

Linux允许将一个命令的输出通过管道作为另一个命令的输入

例如: ls ~ | grep .vim

 

7. 远程管理常用命令

7.1 关机/重启 













shutdown 选项 时间关机/重启
-r重启选项

 

 

 

不指定选项和时间,默认1分钟之后关机。

远程维护服务器时,最好不要关闭系统,而应该重启系统。

实例: 

shutdown -r now 立刻重启

shutdown now 立刻关机

shutdown 20:30 系统在20:30关机

shutdown +10 系统十分钟之后关机

shutdown -c 取消关机

 

 

7.2 查看或配置网卡信息













ifconfig查看/配置计算机当前的网卡配置信息
ping ip地址检测到目标ip地址的连接是否正常

 

 

 

 

 7.3 远程登陆和复制文件



































ssh 用户名@ipsecure shell关机/重新启动
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径secure copy远程复制文件


 
  

 

 

 

 

 

 

1)ssh基础(重点)

在linux中ssh是非常常用的工具,通过ssh客户端可以远程访问运行了SSH服务器的机器。

技术图片

 

端口号:

常见服务器端口号:  



  • SSH服务器:22

  • web服务器:80

  • https:443

  • ftp服务器:21


如果是默认端口号,在连接的时候可以省略。

 

2)SSH客户端的简单使用

命令格式: ssh [-p port] user@remote

user:在远程机器上的用户名,如果不指定的话默认为当前用户

remote:远程机器的地址,可以是ip/域名,或者是后面会提到的别名

port:SSH Server监听的端口,如果不指定,就为默认的22

注意:使用exit退出当前用户的登陆

 

3)scp(掌握)



  • scp就是secure copy,是一个在linux下用来进行远程拷贝文件的命令

  • 它的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写的-P而不是-p


#把本地文件复制到SSH服务器下
#
注意:后的路径如果不是绝对路径,则以home目录作为参考路径
scp -P
22 1.py user@remote: 1copy.py
# 把SSH服务器下的文件复制到本地
scp -P
22 user@remote:Desktop/1copy.py 1.py
##############################
# 把SSH服务器下的目录复制到本地
scp -P
22 user@remote:Desktop/dir newdir

 

如果在windows中使用PuTTY,可以使用pscp命令行工具进行文件拷贝:

S1. 将pscp.exe放到C盘Windows\System32目录下,这样就可以在任何地方使用pscp命令。

S2. 打开命令行,执行 pscp -P 22 user@remote:xxx xxx 就可以将SSH服务器中的文件拷贝到windows系统的指定目录下。

 

4)fileZilla(简单)

 

5)两个Linux设备之间设置SSH免密码登陆的步骤:

S1. 配置公钥:执行 ssh-kengen即可生成SSH密钥,一路回车即可

S2. 从客户端上传公钥到服务器:执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

 

 

6)配置别名

在~/.ssh/config文件中追加:


Host 别名
HostName ip地址
User 远程用户名
Port
22

保存之后,即可使用 ssh 别名实现远程登陆。

 

 

8. 用户权限相关命令



  • 用户权限的基本概念

  • 用户管理终端命令

  • 组管理终端命令

  • 修改权限终端命令

8.1 用户 和 权限 的基本概念

1)基本概念



  • 用户是linux系统工作中重要的一环,用户管理包括用户管理

  • 在linux系统中,可以指定每个用户对不同的文件或目录的不同权限

  • 对文件/目录的权限包括:





























权限英文缩写数字代号
readr4
writew2
执行executex1

 

 

 

 

 

2)组

为了方便管理,将拥有同样权限的用户划分为组。在实际应用中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而直接管理组的权限。

 

3)通过ls -l查看文件权限:



































目录拥有者权限组权限其他用户权限
-rwxrwxr--
drwxrwxr-x

 

 

 

 

 

4)chmod简单使用(重要)



  • chomd可以修改用户/组文件/目录的权限

  • 命令格式如下:


chmod +/-rwx 文件名|目录名

 

5)超级用户



  • linux系统中的root账号通常用于系统的维护和管理,对操作系统内的所有资源具有所有权限

  • 在linux安装的过程中,系统会自动创建一个用户账号,这个默认的用户称为“标准用户”

  • sudo表示 substitute user do ,表示使用root用户的身份执行

6)组管理 终端命令


创建/删除组的终端命令都需要通过sudo执行





















groupadd 组名添加组
groupdel 组名删除组
cat /etc/group确认组信息
chgrp -R 组名 文件/目录名修改文件/目录所属组

 

 

 

 

 

 

9. 用户管理相关命令

9.1 创建用户/设置密码/删除用户

























useradd -m -g 组 新用户名添加新用户

  • -m 自动建立用户家目录

  • -g 指定用户所在的组,否则会创建一个和用户同名的组


passwd 用户名设置用户密码如果是普通用户,直接用passwd修改自己的账户密码
userdel -r 用户名删除用户

  • -r 自动删除该用户的家目录


cat /etc/passwd | grep 用户名确认用户信息新建用户后,用户信息会保存在/etc/passwd文件中

 

 

 

 

 

 

 


提示:
创建用户时,如果忘记添加-m选项,最好删除重建。
创建用户时,默认会创建一个同名的组。
用户信息保存在/etc/passwd文件中。

 


使用useradd新建的用户的终端使用的shell是dash,可以通过
usermod -s /bin/bash 用户名 改成bash

 

9.2 查看用户信息

















id [用户名]查看用户UID和GID信息
who查看当前所有登陆的用户列表
whoami查看当前登陆用户的账户名

 

 

 

 

技术图片

用户名:是否有密码:UID:GID::家目录

 

技术图片

当只使用id时,查看的是当前用户所在的所有组。

 

9.3 usermod



  • usermod可以用来设置 用户 的 主组/附加组 和 登陆shell,命令格式如下:


#修改用户的主组(passwd中的GID)
usermod -g 组 用户名
#修改用户的附加组,重新登录后才能生效
usermod -G 组 用户名
#修改用户登陆的shell
usermod -s /bin/bash



  • 主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组

  • 附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限


注意:使用useradd添加的用户,默认是没有权限使用sudo以root身份执行命令的,可以使用
usermod -G sudo 用户名
将用户添加到sudo附加组中

  

9.4 切换用户















su - 用户名切换用户,并切换目录-可以切换到用户家目录,不添加-表示位置不变
exit退出当前登陆账户 

 

 

 



  • su 不接用户名,可以切换到root,但不推荐使用,因为不安全

  • exit示意图如下:

技术图片

 

9.5 修改文件权限

















chown修改拥有者
chgrp修改组
chmod修改权限

 

 

 

 



  • 命令格式如下


# 修改文件/目录的拥有者
chown 用户名 文件名|目录名
#递归修改文件/目录的组
chgrp -R 组名 文件名|目录名
#递归修改文件/目录权限,三个数字分别对应 拥有者/组/其他用户 的权限(r-4,w-2,x-1)。
chmod -R
755 文件名|目录名

 

10 系统信息相关命令

本小节涵盖:



  • 时间(date)和日期(cal)

  • 磁盘(df)和目录空间(du)

  • 进程信息(ps,top,kill)

10.1 时间和日期















cal查看日历-y 可以查看一年的日历
date查看系统时间 

 

 

 

 

10.2 磁盘信息













df -hdf(disk free)显示磁盘剩余空间,-h以人性化的方式显示文件大小
du -h[目录名]du(disk usage)显示目录下的文件大小

 

 

 

 

10.3 进程信息



  • 所谓进程,就是当前正在执行的一个程序

















ps 

process status 查看进程的详细状况



  • a 选项 显示终端上的所有进程,包括其他用户的进程

  • u选项 显示进程的详细信息

  • x选项 


top动态显示运行中的进程并排序
Kill 进程代号

终止指定代号的进程



  • -9 选项 表示强制终止


 

 

 

 

 

 

 

 

 

 

11.其他命令

目标



  • 查找文件find

  • 软链接ln

  • 打包和压缩tar

  • 软件安装apt-get

11.1查找文件









find [路径] -name "*.py"查找指定路径下扩展名是.py的文件,包括子目录

 

 



  • 如果省略路径,表示在当前文件夹下查找

 

11.2 软链接

软链接类似于windows下的快捷方式









ln -s 被链接的源文件 链接文件建立文件的软链接

 

 



  • 注意,没有-s选项的话建立的是一个硬链接文件,两个文件占用相同大小的硬盘空间,工作中几乎不会用到

  • 源文件要使用绝对路径,不能使用相对路径,否则移动链接文件后,链接文件就不能再链接到源文件了

技术图片

 

 

11.3 打包压缩



  • 打包压缩是日常工作中备份文件的一种方式

  • 在不同的操作系统中,常用的打包方式是不同的



  1. windows常用rar

  2. mac常用zip

  3. linux常用tar.gz

1)打包/解包



  • tar是linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件

  • tar的命令格式如下:


#打包文件
tar -cvf 打包文件.tar 被打包的文件/路径
#解包文件
tar -xvf 打包文件.tar

2)压缩/解压缩

gzip



  • tar与gzip命令结合使用可以实现 文件打包和压缩

  • tar只负责打包不压缩,gzip负责之后的压缩,打包并压缩的文件扩展名为xxx.tar.gz

  • 在tar命令中,有一个选项 -z 可以调用gzip,从而方便地实现压缩和解压缩

  • 命令格式如下:


# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径
#解压缩文件
tar -zxvf 打包文件.tar.gz
#解压缩文件到指定目录,该目录必须存在
tar -zxvf 打包文件.tar.gz -C 目标路径

 

bzip2



  • bzip2的使用和gzip类似,不同之处在于:1)选项为-j;2)打包并压缩后的文件的后缀名为.tar.bz2

 

12 软件安装/卸载

12.1 通过apt安装/卸载软件



  • apt是 advanced packaging tool,是linux下的一款安装包管理工具

  • apt可以在终端中方便地 安装/卸载/更新 软件包


# 1.安装软件
sudo apt install 软件包
#
2.卸载软件
sudo apt remove 软件名
#
3.更新已安装的包
sudo apt upgrade

 

12.2 配置软件源



  • 如果希望在linux中安装软件更快,可以设置镜像源,镜像源是一个访问网速更快的服务器,可以提供软件的下载服务。

 

Linux_01_基础



推荐阅读
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
  • 本指南详细介绍了如何利用华为云对象存储服务构建视频点播(VoD)平台。通过结合开源技术如Ceph、WordPress、PHP和Nginx,用户可以高效地实现数据存储、内容管理和网站搭建。主要内容涵盖华为云对象存储系统的配置步骤、性能优化及安全设置,为开发者提供全面的技术支持。 ... [详细]
  • VS2019 在创建 Windows 恢复点时出现卡顿问题及解决方法
    在使用 Visual Studio 2019 时,有时会在创建 Windows 恢复点时遇到卡顿问题。这可能是由于频繁的自动更新导致的,每次更新文件大小可能达到 1-2GB。尽管现代网络速度较快,但这些更新仍可能对系统性能产生影响。本文将探讨该问题的原因,并提供有效的解决方法,帮助用户提升开发效率。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • 虚函数表指针vptr的功能测试与分析
    类的虚函数调用依赖于虚函数表来实现。虚函数表是由编译器自动生成的一段内存区域,用于存储包含虚函数的类中每个虚函数的入口地址。这些入口地址本质上是指针类型,从而使得动态绑定成为可能。本文对虚函数表指针(vptr)的功能进行了详细的测试与分析,探讨了其在多态性和继承机制中的作用及其性能影响。 ... [详细]
  • 二分查找算法详解与应用分析:本文深入探讨了二分查找算法的实现细节及其在实际问题中的应用。通过定义 `binary_search` 函数,详细介绍了算法的逻辑流程,包括初始化上下界、循环条件以及中间值的计算方法。此外,还讨论了该算法的时间复杂度和空间复杂度,并提供了多个应用场景示例,帮助读者更好地理解和掌握这一高效查找技术。 ... [详细]
author-avatar
宋宝松示_989
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有