> 文章列表 > Linux 操作系统中应该掌握的知识

Linux 操作系统中应该掌握的知识

Linux 操作系统中应该掌握的知识

下面是我从业整理的一部分需要掌握的内容:

1. 基本命令行操作

基本命令行操作:包括文件管理、进程管理、用户权限等方面的基本命令行操作。
下面是文件管理、进程管理和用户权限相关的一些命令和内容:

1.1 文件管理

  • ls:显示当前目录下所有文件
  • cd:切换当前工作目录
  • pwd:查看当前所在路径
  • mkdir:创建新的目录或者子目录。
  • rm: 删除单个或多个文件并永久性地删除它们,还可删除空相对于非空目录 -r选项可递归一个计算机系统中存在但可能不必要的数据.
  • ‘mv’: 剪贴粘贴重命名.

1.2 进程管理

Linux可以允许很多程序同时运行。 要检查服务器上正在执行哪些程序及其状态,请使用以下控制台输入.

  • ps — 查找与进程关联信息

  • top — 挖掘 CPU 和内存占用最高的套餐。

  • Kill— 终止指定PID(process ID)号码为XXX 的程序。

1.3 用户及权限

有几种经典方式来操作 Linux 权限:

添加用户:

useradd username

删除用户:

userdel username

更改密码:

 passwd

编辑 /etc/sudoers 文件以授权特权:

    sudo visudo

你将需要添加到此档案/组合中去 /etc/sudoers

记录组合名称 ALL=(ALL)表示root席位包括其中, 将这部分插入即有效果:

    myusername ALL= (ALL) ALL

实现后,发出以下命令即可使用 sudo 席位向服务器发出执行

$sudo apt update
  • chmod:改变文件或目录的访问模式
  • chown:修改文件或目录所属用户和组

这些只是众多相关命令中的一部分,提供更详细信息建议查看 Linux系统文档.

Shell 编程

Shell 是基于文本界面的脚本语言,它可以用来完成任务自动化、批量处理数据等常见任务。学习 Shell 编程可以让你更好地利用 Linux 系统进行工作。

Shell 是一个命令行界面的脚本解释程序,主要用于自动化任务、批处理等。Shell 编程包括以下一些内容:

1. 变量和赋值:使用=号将一个值分配给一个变量。

name="John"
echo $name  #输出“John”

2. 流程控制结构:像 if,else 和 while 这样子演清了流程不同路径执行代码片段的控制表达式.

if [ -f /home/user/demo.txt ]; thenecho "File exists."
else echo "File does not exist."
fiwhile true; do read -p "Do you want to continue? (y/n)?" yn case $yn in  [Yy]* ) break;;   [Nn]* ) exit;;* ) echo "Please answer yes or no.";;esac  
done  

3. 函数: Shell支持用户定义函数,这些函数可以调用并传递参数来为特定小型任务提供服务, 并使脚本保持模块化及通用性.


function greet {local name=$1             # 定义第二个参数.echo “Hello, $name!# 使用它.
}greet John                #=> Hello, John!# With return value:function add_it_up {local sum=$(($1 + $2))echo "$sum"
}result=$(add_it_up 4 5)
echo$result#=>9

4.shell 脚本文件包含 .sh 扩展名, 如使用vim编辑器: vi filename.sh. 内容包含: 第一行指定脚本解释器(shebang),变量设置,流程控制语句等.


#!/bin/bash
echo "Hello World"

这个简单的例子会输出“Hello World”到终端上.

5.shell 脚本也可以在命令行中与其他操作系统命令协作,以实现强大且复杂的任务。例如:


#搜索当前目录下扩展名为 .txt 的所有文件,并将查询结果存储到列表 files 中:files=$(find -type f -name "*.txt")for file in $files; do     #遍历每个文件并打印其名称和条数.count=$(wc -l < "$file")echo "$file contains $count lines."
done

以上是 Shell 编程涉及内容的一个概括。

文件系统和磁盘分区

文件系统和磁盘分区:了解各种文件系统类型(如 ext4, NTFS)以及磁盘分区方法对于安装新软件或优化存储空间是十分重要的。
文件系统是计算机操作系统用于管理和组织数据存储的一种机制。它定义了如何在磁盘上组织文件和目录,以及如何读取和写入这些文件和目录。不同的文件系统有不同的特点和优缺点,因此在选择文件系统时需要考虑到不同的需求和用途。
常见的文件系统类型包括:

ext4

是Linux系统上最常用的文件系统类型之一,它支持更大的文件和更快的读写速度,还具有更好的稳定性和安全性。

NTFS

是Windows系统上最常用的文件系统类型之一,它支持更大的文件和更高的安全性,但可能会比其他文件系统类型慢一些。

FAT32

是一种旧的文件系统类型,它支持较小的文件和较低的安全性,但可以在多个操作系统之间共享文件。

磁盘分区是将硬盘分为多个逻辑部分的过程,每个分区可以独立进行格式化和管理。磁盘分区可以帮助我们更好地管理硬盘空间,例如将操作系统和用户数据分开存储,以便更轻松地备份和恢复数据。

常见的磁盘分区方法包括:

MBR分区

是一种最常用的分区方法,它支持最多4个主分区和扩展分区。

GPT分区

是一种新的分区方法,它支持更多的分区和更大的磁盘容量,但需要支持UEFI启动的计算机才能使用。

综上所述,了解各种文件系统类型和磁盘分区方法可以帮助我们更好地管理和优化硬盘空间,从而提高计算机的性能和可靠性。

网络配置与 troubleshooting

网络配置与 troubleshooting: 例如 IP 地址配置,路由表查看添加删除,DNS 查找故障排除方法都非常有用

  1. IP 地址配置

IP 地址配置是网络配置中最基础的部分。在 Linux 中,IP 地址配置主要通过 ifconfig 命令进行。ifconfig 命令可以用来配置和显示网络接口的状态,包括 IP 地址、子网掩码、广播地址等信息。以下是一些常用的 ifconfig 命令:

  • ifconfig eth0:显示 eth0 网卡的配置信息。
  • ifconfig eth0 down:关闭 eth0 网卡。
  • ifconfig eth0 up:启动 eth0 网卡。
  • ifconfig eth0 192.168.1.2 netmask 255.255.255.0:将 eth0 网卡的 IP 地址设置为 192.168.1.2,子网掩码为 255.255.255.0。
  1. 路由表查看添加删除

路由表是网络中用于决定数据包转发方向的表格。在 Linux 中,可以使用 route 命令来查看、添加和删除路由表项。以下是一些常用的 route 命令:

  • route:显示当前系统的路由表。
  • route add default gw 192.168.1.1:添加默认网关为 192.168.1.1 的路由表项。
  • route del default gw 192.168.1.1:删除默认网关为 192.168.1.1 的路由表项。
  1. DNS 查找故障排除方法

DNS(Domain Name System)是将域名转换为 IP 地址的系统。在 Linux 中,可以使用 nslookup 命令来进行 DNS 查询和故障排除。以下是一些常用的 nslookup 命令:

  • nslookup www.google.com:查询 www.google.com 的 IP 地址。
  • nslookup -type=mx google.com:查询 google.com 的邮件服务器记录。
  • nslookup -debug www.google.com:启用调试模式,显示详细的查询过程和结果。

另外,还可以使用 dig 命令来进行 DNS 查询。dig 命令比 nslookup 更强大,可以查询更多的 DNS 记录类型,如 AAAA、SRV、TXT 等。以下是一些常用的 dig 命令:

  • dig www.google.com:查询 www.google.com 的 IP 地址。
  • dig -t mx google.com:查询 google.com 的邮件服务器记录。
  • dig +trace www.google.com:启用追踪模式,显示查询过程中的每个步骤。

安全性和防火墙设置

安全性和防火墙设置: 如应该通过防火墙开启哪些端口;如何加密 SSH 连接;如何禁用 root 用户登录等

  1. 开启防火墙端口:
  • CentOS 7/8: firewall-cmd --zone=public --add-port=<port>/tcp --permanent,其中<port>是需要开启的端口号。
  • Ubuntu 18.04/20.04: ufw allow <port>/tcp,其中<port>是需要开启的端口号。
  1. 加密 SSH 连接:
  • 生成 SSH 密钥对:ssh-keygen -t rsa -b 4096 -C "your_email@example.com",其中your_email@example.com是你的邮箱地址。
  • 将公钥复制到服务器:ssh-copy-id user@server_ip,其中user是服务器用户名,server_ip是服务器 IP 地址。
  • 修改 SSH 配置文件:sudo vim /etc/ssh/sshd_config,将#PasswordAuthentication yes改为PasswordAuthentication no,并添加以下内容:
# Disable root login
PermitRootLogin no
# Allow login only with SSH key
PubkeyAuthentication yes
  • 重启 SSH 服务:sudo service sshd restart
  1. 禁用 root 用户登录:
  • 创建一个新用户:sudo adduser username,其中username是你要创建的用户名。
  • 将新用户添加到 sudo 组:sudo usermod -aG sudo username
  • 修改 SSH 配置文件:sudo vim /etc/ssh/sshd_config,将#PermitRootLogin yes改为PermitRootLogin no
  • 重启 SSH 服务:sudo service sshd restart

软件安装与升级

软件安装与升级: 在Linux上使用二进制包管理工具 (rpm/yum/apt-get/dpkg) 及源代码编译方式安装软件,并且保持所有组建最新状态是一个必须克服并不断更新节点所需技能之一。
在Linux上使用二进制包管理工具(如rpm、yum、apt-get、dpkg)安装软件,可以简化安装过程,并且可以方便地管理软件包的依赖关系。同时,使用源代码编译方式安装软件可以更加灵活地定制软件,适应不同的需求。

以下是常用的命令和内容:

  1. rpm命令:rpm是Red Hat Package Manager的缩写,用于管理RPM格式的软件包。常用的命令有:
  • rpm -ivh package.rpm:安装软件包
  • rpm -Uvh package.rpm:升级软件包
  • rpm -e package:卸载软件包
  • rpm -qa:列出已安装的软件包
  • rpm -q package:查询软件包是否安装
  1. yum命令:yum是Yellowdog Updater Modified的缩写,是基于RPM包管理器的包管理器,用于管理软件包的依赖关系。常用的命令有:
  • yum install package:安装软件包
  • yum update package:升级软件包
  • yum remove package:卸载软件包
  • yum list installed:列出已安装的软件包
  • yum search package:搜索软件包
  1. apt-get命令:apt-get是Advanced Packaging Tool的缩写,是Debian和Ubuntu等基于Debian的Linux发行版的包管理器。常用的命令有:
  • apt-get install package:安装软件包
  • apt-get upgrade package:升级软件包
  • apt-get remove package:卸载软件包
  • apt-get list installed:列出已安装的软件包
  • apt-cache search package:搜索软件包
  1. dpkg命令:dpkg是Debian Package的缩写,用于管理Debian系统中的软件包。常用的命令有:
  • dpkg -i package.deb:安装软件包
  • dpkg -r package:卸载软件包
  • dpkg -l:列出已安装的软件包
  • dpkg -s package:查询软件包信息
  • dpkg -S file:查找文件所属的软件包
  1. 源代码编译方式:源代码编译方式需要先下载源代码,然后进行编译和安装。常用的命令有:
  • tar -zxvf package.tar.gz:解压源代码包
  • ./configure:配置编译选项
  • make:编译源代码
  • make install:安装编译好的软件

总的来说,使用包管理工具安装和管理软件包是更加方便和快捷的方式,但源代码编译方式可以更加灵活地定制软件,适应不同的需求。

Linux 性能调优

Linux 性能调优 :涉及到 CPU 和内存压力测试,在试图提高缓存效率或者加速存储器使用,除了对工具的深刻理解之外还需要充分掌握计算机结构和Linux内核原理。
Linux性能调优涉及到的命令和内容如下:

  1. top命令:用于查看系统的负载情况和进程的使用情况。

  2. vmstat命令:用于查看系统的虚拟内存使用情况和CPU使用情况。

  3. iostat命令:用于查看磁盘的I/O情况。

  4. sar命令:用于查看系统的资源使用情况。

  5. free命令:用于查看系统的内存使用情况。

  6. sysctl命令:用于修改内核参数,从而优化系统性能。

  7. ulimit命令:用于设置进程的资源限制,从而优化系统性能。

  8. perf命令:用于性能分析和调试,可以通过perf record、perf report等命令进行操作。

  9. strace命令:用于跟踪进程的系统调用和信号,从而分析进程的行为。

  10. kernel同步机制:包括锁、信号量、读写锁等,可以通过理解和优化这些机制来提高系统性能。

  11. 文件系统和磁盘调优:包括文件系统的选择和参数设置、磁盘的分区和文件系统的挂载等,可以通过优化文件系统和磁盘来提高系统性能。

  12. 内核调优:包括内核的编译和参数设置、内核模块的加载和卸载等,可以通过优化内核来提高系统性能。

当然这只是其中的一部分,在实际应用中,可能还会涉及到更多领域。
路漫漫其修远兮,吾将上下而求索,加油吧!