kaixin
Published on 2023-07-06 / 38 Visits
0

Linux基础篇一

基础篇

1.终端

1-1.为什么学习命令

  1. linux从诞生就是黑屏解密。所有的命令依靠命令完成,磁盘的读写,文件的操作,网络的管理等。
  2. 企业中,服务器的维护工作都是ssh客户端完成,没有图形界面,因为可以节省服务器的资源,性能提升,效率更改等优势。
  3. 运维人员向管理linux服务器,必须学会常用的名令,才能进行操作服务器,才能进行基本的操作与管理。

1-2.图形化与终端操作区别

  1. 通过指令直接操作,更为直观,但是需要记住大量的命令。对于长期使用图形化系统的用户不友好。
  2. 但是如果使用图形化界面,虽然有些操作可以通过点点完成,但是增加服务器资源开销,服务器利用性就不高。

Linux终端

  1. 物理终端,真是存在的终端。
  2. 虚拟终端,通过快捷键切换tty显示,物理机使用虚拟软的终端,就是为了方便用户登录设计(共支持6)。
  3. 伪终端,在图形化界面打开命令行或者使用ssh或者telnet命令远程链接Linux系统pts(pseudo-terminal slave)表示,终端数量是不受限的。
# 终端操作可以通过 w 命令来查看当前服务器有几个,登入系统的用户信息。

tty:指虚拟终端,ctrl + alt + f1~f6 虚拟终端
pts/ :指的是伪终端,如xshell远程链接的窗口就是一个pts伪终端

如下面的图:
    tty1:用户root,使用的虚拟终端
    tty2:用户wkx,使用的是虚拟终端
    pts/0:使用的伪终端
    pts/1:执行了w命令是在pts/0执行的伪终端执行了w命令产生的一个伪终端
        # 因为当在命令行操作的任何命令都会在当前进程下生成一个子进程去执行这个命令,系统自动分配给这些命令进程的伪终端,这样不会影响其他的进程和终端。伪终端是动态分配的,每次有新的进程需要一个终端来输出信息时,系统就会分配一个新的伪终端。

image-20241029223841237


2.企业级服务器

为什么企业级的服务器是黑屏的命令行

  1. 图形化需要更多的系统资源去运行,包括cpu与内存,使用命令行可以减少资源的消耗。
  2. 命令行被认为更安全,因为它减少攻击面,没有图形的服务器不太可能收到针对图形化界面的攻击。
  3. 命令行更容易操作自动化与脚本运行,对于处理批量任务和自动化运维流程管理更有优势。
  4. 跨平台性好,如果在命令模式下使用一个命令,那么在其他的系统类型下也可以使用。
  5. 成本低,使用命令行模式可以在更低的硬件上进行运行,有助于降低成本。
  6. 更直接的访问底层信息,对于排除故障和调试非常有用。
  7. 在某种情况下,服务器可能被部署在没有物理访问权限的环境下,命令行可以提供无需物理接触即可管理的方案。

3.Linux远程链接服务器方式

通过ssh链接方式需要可以相互ping同的机器上才可以操作。

windows:
    可以通过软件 xshell或者 securtCRT 或者使用自带的cmd进行链接(cmd 使用ssh命令)。


linux使用命令
    ssh 用户名@服务器ip地址:端口 # 带冒号
    ssh 用户名@服务器ip地址 端口 # 不带冒号

4.Linux文件夹区分

windows:

  • windows下对创建文件夹不区分大小写的。

image-20241029230406835

linux:

  • linux下对创建的文件严格区分大小写

image-20241029230605003

# 总结
    linux下对创建的文件严格区分大小写。
    windows不区分。

5.Linux命令返回结果

无提示

  • 在执行命令时,不会做出任何提示比如mkdir、touch、chmod、useradd 等命令会不由执行结果
  • 不正确就会报错。

有提示

  • 在执行命令时,会出现执行结果echo、ls、ll、cat等命令。
  • 不正确就会报错。

没有提示是最好的提示,默认直接出结果。

6.Linux文件扩展名区分

windows:

  • windows系统中文件扩展名决定了这个文件的属性。
  • 如果修改文件扩展名,会出现文件不可用的情况!打开就会出现乱码的情况。

image-20241029231330291

linux:

  • linux的文件后缀,只是告知系统管理员或者运维人员它是哪一类的文件。
  • 真正决定文件属性的是靠权限位来确定。

image-20241029231605888

linux常见扩展名:

  1. 压缩文件后缀:.gz .bz2 .zip .tar.gz .tgz .tar.bz2
  2. 软件包后缀:.rpm .deb
  3. 脚本后缀:.py .sh .java
  4. 网页相关后缀:.js .html .css

7.Linux文件的权限位

文件命名规范:

  1. 见名知意,虽然linux一些皆文件,并没有大小写区分,但是对于文件需要加上后缀,让人知道是什么类型的文件.log .tar .css 等等。
  2. 如果是文件夹,不需要加后缀,文件名,不要加/,linux会将/当成路径分隔符。
  3. 文件名中不要用 < > ? * 等符号,如果使用后,系统就会使用\进行转义。
类型 简称 描述
普通文件 -,Normal File 如mp4、pdf、html log; 用户可以根据访问权限对普通文件进行查看、更改和删除,包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
目录文件 d,directory file /usr/ /home/ 目录文件包含了各自目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件,只要有访问权限,就可以随意访问这些目录下的文件。能用#cd命令进入的。第一个属性为[d],例如 [drwxrwxrwx]
硬链接 -,hard links 若一个inode号对应多个文件名,则称这些文件为硬链接。硬链接就是同一个文件使用了多个别名删除时,只会删除链接, 不会删除文件; 硬链接的局限性:1.不能引用自身文件系统以外的文件,即不能引用其他分区的文件;2.无法引用目录;
符号链接(软链接) l,symbolic link 若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接,克服硬链接的局限性, 类似于快捷方式,使用与硬链接相同。
字符设备文件 c,char 文件一般隐藏在/dev目录下,在进行设备读取和外设交互时会被使用到 即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]。 #/dev/tty的属性是 crw-rw-rw-,注意前面第一个字 c,这表示字符设备文件
块设备文件 b,block 存储数据以供系统存取的接口设备,简单而言就是硬盘。 # /dev/hda1 的属性是 brw-r—– ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备 系统中的所有设备要么是块设备文件,要么是字符设备文件,无一例外
FIFO管道文件 p,pipe 管道文件主要用于进程间通讯。FIFO解决多个程序同时存取一个文件所造成的错误。比如使用mkfifo命令可以创建一个FIFO文件,启用一个进程A从FIFO文件里读数据,启动进程B往FIFO里写数据,先进先出,随写随读。 # pipe
套接字 s,socket 以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。用于进程间的网络通信,也可以用于本机之间的非网络通信,第一个属性为 [s],这些文件一般隐藏在/var/run目录下,证明着相关进程的存在

8.Linux的一切皆文件

为什么说linux,一切皆文件:

  • 在linux系统中,所有的操作,都会以文件形式找到:网络配置,软件配置,进程文件等等
  • 网络配置文件:etc/sysconfig/network-scripts/ifcfg-ens33
  • 磁盘文件:ls /dev/sd*
  • linux全部的内容都是文件的形式向我们展示的。

windows的分区

  1. 先分区。
  2. 格式化系统。
  3. 添加盘符。添加盘符的动作就是将盘符绑定到分区(磁盘),访问盘符就是访问了分区的磁盘。

image-20241029232540762

linux的挂载

  1. linux添加磁盘被称为挂载。
  2. 磁盘分区,设置磁盘系统。
  3. 将分区的与某个目录进行绑定。
  4. 访问这个目录就是访问这个磁盘。

image-20230601223921290

9.linux的路径

window的路径

  • windows:存在多个盘,每一个盘相当于一个倒着树形的结构
  • \ 反斜杠为分割符

image-20241029232844156

linux的路径

  • linux的文件路径一切从根开始 :/。

  • 就好比一颗树一样,根代表就是树的主枝干,分叉由主枝干延伸的,是主枝干的一部分。

  • / 正斜线为分隔符。

  • 绝对路径:linux命令+ 以根开始的目录。叫做绝对路径。

  • 相对路径:linux命令+非根目录开始的路径,叫做相对路径。

    # 特殊路径,通过ls -a 查看
        . 当前目录
        .. 上一级目录
        ~ 当前用户的家目录 
        - 最后一次的目录 # 也就是返回上一层的意思(前提是你有上一层)
    # 注意:
        . .. 这特殊路径存每一个文件夹都会有。
    

image-20230601225159797

10.Linux命令提示符

[root@localhost ~]#
    1.root代表当前登录用户
    2.@ 分割符号,没有很大含义
    3.localhost 当前的主机名称
    4.~ 表示当前用户在那个目录文件夹(默认进入服务器时是波浪号)
    5.# 表当前登录用户的类型

# :代表 root用户(管理员用户)
$ :代表是普通用户

11.Linux的变量

环境变量

  • PATH是linux的环境变量,windows系统中也存在这个变量。
  • 通过echo命令可以进行打印查看详情情况
[root@linux123 ~]# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# 1.由 : 进行分割开来多个目录
# 2.PATH存在查找顺序,从前到后,挨个搜索文件

环境变量?

  • 是linux的一个路径搜索变量,作用让你快捷输入linux的命令,而不用写绝对路径
  • 例如:通过which命令查询 ls(是一个可执行的文件,其他的linux命令也是一样的) 命令的绝对路径
环境变量PATH,相当于将执行文件的路径进行保存,在简写执行命令时,会从环境变量中得路径一个一个的进行搜索当前的执行名令,搜索到了就会进行执行。如果搜索不到那么就不执行。与windows系统下的环境变量相同。

修改环境变量

环境变量的文件:
    /etc/profile # 全局的,设置后其他用户也可以使用
    ~/.bash_profile # 个人的,只有当前登录用户才可以使用

修改:
    1.打开文件夹
        vim ~/.bash_profile

    2.在环境变量中添加一个/opt/mysql/bin/
        添加的格式 :+路径即可
        PATH=$PATH:$HOME/bin:/opt/mysql/bin/

    3.重新读取环境变量文件
        # 作用:新增加的路径不会生效,需要重新加载到当前bash中才会生效。
        .  ~/.bash_profile
        source ~/.bash_profile

image-20241030223228065


自定义变量

  • 由用户个人声明的变量

系统变量

  • 除环境变量外的其他系统自带的变量,使用set命令可以进行查看。

12.Linux单引号与双引号区别

单引号与双引号都是对字符串的显示

1.单引号 '声明什么就显示什么'
    无论是什么内容都会显示
    [root@linux124 ~]# name='哈哈哈!!!' 1.声明变量
    [root@linux124 ~]# echo ${name} 2.打印变量
    哈哈哈!!!  3.显示变量


2.双引号 '会执行特殊含义'
    [root@linux124 ~]# name2="哈哈!!" 1.声明变量
    name2="哈哈echo ${name2}"
    [root@linux124 ~]# echo ${name2} 2.打印变量
    哈哈echo

13.Linux常见目录作用

/bin: 目录存储 2进制可执行命令 比如 which ls cp file 等等基本命令 # 目录是软链接,链接/usr/bin

/boot:存放系统系统时核心文件,包括一些连接文件以及镜像文件。

/dev:存放着块设备文件和字符设备文件,外接的硬盘U盘等外部链接设备都以文件形式显示在这个文件夹内(比如ios镜像就是在这个文件夹内/dev/sr0它的软连接 /dev/cdrom)比如插入的u盘就会在dev目录当做一个外接的磁盘显示类似与/dev/sdb如果U盘进行了分区/dev/sdb1 /dev/sdb2,

/etc:配置文件,如果使用yum或者rpm安装的程序,默认的配置文件就在这个目录,但是不仅仅只有这些

/home:用户的文件夹,当创建用户时,会在当前文件夹下创建以用户为名字的文件夹,作为该用户的家目录
    /home/用户名/.bash_profile # 这个文件作为当前用户的局部环境变量

/lib:lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库 # 软连接 usr/lib

/lib64:也是动态链接共享库 # 软连接 usr/lib64

/media:作为一个挂载可移动存储设备,如U盘、移动硬盘、CD-ROM等,挂载点。

/mnt:临时挂载点

/root:管理员的家目录文件

/opt:optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录,可以将安装的第三方软件放在这里,或者其他软件。

/proc:是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息,同时执行的进程也会在这个目录下以文件形式展示

/sbin:可执行命令二进制文件,这里存放的是系统管理员使用的系统管理程序。# 软连接 /usr/sbin

/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

/srv:存放服务启动后需要提取的数据(不用服务器就是空)

/tmp:这个目录是用来存放一些临时文件的。

/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)

/sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs,sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/usr:usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。



比较重要的目录:
    /etc/resolv.conf:DNS解析地址设置
    /etc/hosts:主机名,本地域名解析文件,如果对一个网站快速的域名解析,可以进行配置
    /etc/rc.local:存放开机自启动程序命令的文件
    /etc/inittab:系统启动设定运行级别等配置的文件
    /etc/profile.d:用户登录后执行的脚本所在的目录
    /etc/issue和/etc/issue.net:配置在用户登录终端前显示信息的文件
    /etc/init.d:存放着service 启动脚本,使用编译安装的软件,如果生成service就可以将脚本cp到这个目录下,就可以使用service进行管理
    /usr/lib/systemd/system/:软件启动程序所在的目录
    /etc/motd:配置用户登录系统之后显示提示内容的文件
    /etc/redhat-release:声明RedHat版本号和名称信息的文件(不同发行版的不同)
    /etc/sysctl.conf:Linux内核参数设置文件
    /proc/meminfo:系统内存信息
    /proc/cpuinfo:关于处理器的信息,如类型,厂家,型号,性能等
    /proc/loadavg:系统负载信息,uptime 的结果
    /proc/mounts:已加载的文件系统的列表
    /var/log:记录系统及软件运行信息文件所在的目录
    /var/log/messages:系统级别日志文件
    /var/log/secure:用户登录信息日志文件
    /var/log/dmesg:记录硬件信息加载情况的日志文件
    /etc/passwd:创建用户后,就会存储将信息,用户名/uid/说明/用户文件路径/是否登录
    /etc/shadow:存放着用户创建的密码
    /etc/group:创建组的信息 会存储在这里,用户组名/gid/
    /etc/gshadow:存储创建组的密码
    /etc/resolv.conf:域名解析服务器配置文件
    /etc/sudoers:sudo命令提权的配置文件,如果用户需要提权那么就需要修改内部的配置
    /etc/profile:linux系统的全局环境配置文件,启动启动会读取当前配置文件,加载环境变量等操作
    /etc/yum.conf:yum命令的配置文件
    /etc/yum.repos.d/..:yum命令的源仓库配置目录,如果修改源请将当前文件的内容cp一份保存,修改的文件必须时.repo结尾才会识别,设置的源
    /etc/sysconfig/network-scripts/ifcfg-ens33:网卡配置文件
    /etc/ssh/sshd_config:sshd远程服务器配置文件
    /etc/crontab:定时任务的信息
    /etc/fstab:存放永久挂载磁盘的配置文件

image-20230826181802666