Linux-梦开始的地方

Linux-梦开始的地方

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。

Linux源码

网络连接三种模式

Bridged

桥接模式

桥接模式是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。

类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中。桥接模式通过虚拟网桥将主机上的网卡与虚拟交换机Vmnet0连接在一起,虚拟机上的虚拟网卡都连接在虚拟交换机Vmnet0上,所以桥接模式的虚拟机IP必须与主机在同一网段且子网掩码、网关与DNS也要与主机网卡一致。

在桥接模式下,虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问局域网内的任何一台主机,局域网内的任何一台主机也可以访问它。

应用场景:当前虚拟机为整个局域网的用户提供访问服务,其他局域网用户都能访问到当前主机。

NAT模式

地址转换模式

在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。

在连接Vmnet8虚拟交换机时,虚拟机会将虚拟NAT设备以及虚拟DHCP服务器连接到Vmnet8虚拟交换机上,同时也会将主机上的虚拟网卡VMWare Network Adapter Vmnet8连接到Vmnet8虚拟交换机上。

网卡VMWare Network Adapter Vmnet8只是作为主机与虚拟机通信的接口,虚拟机并不是依靠网卡VMWare Network Adapter Vmnet8来联网的。

虚拟机借助NAT功能,通过宿主机器所在的网络来访问公网,使用NAT模式可以实现虚拟机访问互联网。

NAT模式下虚拟机的TCP/IP配置信息是由VMnet8虚拟网络的DHCP服务器提供的,局域网中的其他真实主机将无法访问本虚拟机,但该主机上其他同一个网段的虚拟机可以访问。

可以理解成我们自己家里的宽带,你可以访问百度,但是其他人无法访问到你。应用场景:只是通过虚拟机上网,其他用户不能访问你的虚拟机。

Host-only

主机模式

Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只能与主机相互通讯。

Host-Only模式通过主机的虚拟网卡VMWare Network Adapter VMnet1来连接虚拟交换机VMnet1,从而达到与虚拟机通信的目的。如果想要在Host-Only模式下联网,可以将能联网的主机网卡共享给VMWare Network Adapter VMnet1,以实现虚拟机联网。

Host-Only模式的配置过程和NAT模式基本相同。

Linux基本内容

  1. linux的文件系统是采用层级式的树状目录结构,在此结构的最上层是根目录"/",然后再此目录下再创建其他的目录。

  2. 在linux的世界里,一切皆文件。cpu、磁盘、硬盘等等都会当成文件对待。

  3. linux的目录是规定好的,和windows可以随意设置盘符名称不一样,而且不同的目录的作用也各有安排,不可更改。
  4. 学习linux一定要熟记各个目录。

目录结构

  1. / 根目录

  2. /bin 是binary的缩写,这个目录存放最经常使用的命令。所有用户都可以访问并执行的可执行程序。包括超级用户及一般用户。

    1. /usr/bin 是系统安装时自带的一些可执行程序,即系统程序。
    2. /usr/local/bin 是用户自行编译安装时默认的可执行程序的安装位置。
  3. /sbin s就是super user的意思,(/usr/sbin,/usr/local/sbin)这里存放的是系统管理员使用的系统管理程序。

  4. /home 存放普通用户的主目录,在Linux中每个用户都有自己的目录,一般该里面的子目录名都以用户的账号命名。

  5. /root 该目录是系统管理员,也称为超级权限者的用户主目录。

  6. /lib 系统开机所需要的最基本的动态链接共享库,其作用类似Windows的dll文件,几乎所有的应用程序都需要用到这些共享库。

  7. /ect 这个目录里面是所有的系统管理所需要的配置文件和子目录。

  8. /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与Windows下的program files目录。

    1. /usr/local 这是给主机额外安装软件所安装的目录,是软件安装包的目标安装目录,一般通过编译源码的方式安装软件。
  9. /opt 这是给主机额外安装软件的安装包源码所摆放的位置,例如安装Oracle数据库的源码就一般约定俗成放到这个目录下,默认为空。

  10. /var 这个目录中存放着在不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。


  11. /dev 该目录类似Windows的设备管理器,把所有的硬件(例如磁盘、cpu、串口等)用文件的形式存储起来。

  12. /mnt 系统提供该目录是为了让用户临时挂载别的文件操作系统,我们可以将外部的存储挂载到 /mnt 上,然后进入这个目录就可以看到外部的存储内容了。注:vmtools可以共享windows的文件就在此目录下。

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

  14. /selinux 该目录是security-enhanced linux的缩写,是一种安全子系统,类似windows上的360,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置。

  15. /proc [别动]这个目录是一个虚拟的目录,它是系统内存的映射 ,访问这个目录可以获取系统信息。

  16. /srv [别动]这是service的缩写,该目录存放一些服务启动之后需要提取的数据。

  17. /sys [别动]这是Linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs。

  18. /boot 存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件

  19. /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  20. /media Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别到的设备挂载到这个目录下。

Vi与Vim

Linux系统会内置vi文本编辑器

vim具有程序编辑的能力,可以看成是vi的增强版本,可以主动地以字体颜色辨别语法的正确性,方便程序设计,同时具备代码补全、编译和错误跳转等功能,因此被广泛程序员使用。

常用三种模式

正常模式下的快捷键

  1. 拷贝当前行 yy

  2. 拷贝n行 nyy ;注意小键盘数字不行,用自带的数字。

  3. 粘贴 p

  4. 删除这一行 dd ;

  5. 删除n行 ndd

  6. 跳转到第一行 gg

  7. 跳转到末尾行 G

  8. 撤销刚才的操作 u

  9. 跳转到第i行 i+shift+g

命令模式下的快捷键

  1. 在命令模式下查找关键单词
    1. 输入/name ,name是你要查找的单词名
    2. n查找下一个
  2. 在命令模式下设置行号 :set nu
  3. 在命令模式下删除行号 :set nonu

Linux开机、重启和用户登录注销

关机和重启

注意,不管是重启系统还是关机,最好都执行一次sync指令,再重启或关机

  1. shutdown -h now #现在立即关机,h代表halt关机的意思

  2. shutdown -h 1 #1分钟后关机

  3. shutdown -h #默认1分钟后关机

  4. shutdown -r now #现在立即重启,r代表reboot

  5. halt #关机,作用和上面指令一样

  6. reboot #重启计算机

  7. sync #把内存数据同步到磁盘

用户注销

  1. 登录时尽量少用root账号登录,可以利用普通用户登录,登录后使用su - 用户名 ,来切换系统管理员程序;
  2. 在提示符下输入logout即可注销用户。
    1. logout 在图形运行级别无效,在运行级别3下有效。

用户管理

创建删除设置用户

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

添加用户默认该用户的家目录在 /home/username ,username是用户的名称,也可以指定目录,但没必要.

  1. useradd milan #添加milan这个用户
  2. useradd -d /home/test milan #添加milan这个用户,但用户文件夹名不是默认的milan,而是指定为 test
  3. passwd milan #更改milan这个用户的密码
  4. userdel milan #删除用户milan,但是保留home家目录
  5. userdel -r milan #删除用户milan的所有信息,包括家目录

pwd :该命令显示当前所在目录全程

查询切换用户

  1. 查询基本语法 id 用户名 :当不存在改用户时,返回无此用户;
  2. 切换基本语法 su 用户名exit 返回原用户;从权限高的用户切换到权限低的用户,不需要密码;反之需要。
  3. 查看当前登录用户语法 whoami 或者 who am i 。值得注意的是 whoami 返回当前使用的用户, who am i 返回第一次登录服务器的信息。

用户组

用户组,类似于角色,系统可以对有共性的多个用户进行统一的管理。

  1. 增加组 groupadd 组名

  2. 删除组 groupdel 组名

  3. 增加用户是直接加组 `useradd -g 用户组 用户名;

  4. 修改用户的组 usermod -g 用户组 用户名

用户和组相关文件

  1. /etc/passwd

    用户user的配置文件,记录用户的各种信息

    每行的含义: 用户名:口令:用户表示号:组表示号:注释性描述:主目录:登录Shell

  2. /etc/shadow

    口令的配置文件

    每行的含义: 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

  3. etc/group

    组的配置文件,记录Linux包含的组的信息

    每行的含义:组名:口令:组标示号:组内用户列表

实用指令

指定运行级别

运行级别一共有7种

  1. 0:关机
  2. 1:单用户,root权限,可以帮助找回丢失的密码,用于系统维护,禁止远程登录
  3. 2:多用户状态没有网络服务
  4. 3:多用户状态有网络服务,登录后进入控制台命令行模式
  5. 4:系统未使用保留给用户
  6. 5:图形界面
  7. 6:系统重启

常用运行级别是3和5,也可以指定默认运行级别。

切换运行级别 init [运行级别]

修改默认运行级别

  1. 在CentOs7之前,需要在/etc/inittab中修改;
  2. 在CentOs之后
    1. 查看当前运行级别 runlevel
    2. 查看当前默认运行级别 systemctl get-default
    3. 设置默认运行级别systemctl set-default multiuser.target

找回root密码

进入到单用户模式,就可以修改root密码

  1. 首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面;
  2. 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以Linux16开头内容所在的行数,在行的最后面输入:init=/bin/sh
  3. 接着,输入完成后,直接按快捷键:Ctrl+x 进入单用户模式;
  4. 接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter);
  5. 在新的一行最后面输入:passwd, 完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(密码长度最好8位以上,但不是必须的), 密码修改成功后,会显示passwd…..的样式,说明密码修改成功;
  6. 接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter);
  7. 继续在光标闪烁的位置中,输入:exec /sbin/init,完成后按键盘的回车键(Enter),等待系统自动修改密码(这个过程时间可能有点长),完成后,系统会自动重启, 新的密码生效了。

帮助指令

  1. man 命令或配置信息

    基本语法: man [命令或者配置文件]

    (输入q退出)

  2. help 命令

    基本语法: help [命令]

文件操作指令

  1. 文件目录
    1. pwd 显示当前工作目录的绝对路径;
    2. ls -a 或者 ls -l :-a显示当前目录的所有文件和目录,包括隐藏的;-l表示以列表的方式显示信息;注意可以组合;
    3. cd [参数] :切换目录,后面可以是绝对路径或者相对路径,如果是 / 开头,表示绝对路径;否则为相对路径;
      1. cd ~ 或者 cd :回到自己的家目录;
      2. cd .. :回到当前目录的上一级目录。
  2. 文件创建删除
    1. mkdir 目录名 :创建目录,默认创建一级目录,如果要创建多级,要加 -p
    2. rmdir 目录名 :默认删除空目录,如果目录下有内容无法删除;
    3. rm -rf 目录名:递归强制删除,可删除有内容的目录;
    4. touch 文件名:创建一个空文件。
  3. 文件拷贝删除移动查看
    1. cp 文件 拷贝路径 :拷贝文件到指定路径;
    2. cp -r 文件夹 拷贝路径 :递归拷贝文件夹到指定路径;
    3. \cp :强制覆盖不提示拷贝;
    4. rm 文件或目录 :删除文件;
    5. rm -r 文件夹 :递归删除整个文件夹;
    6. rm -f :强制删除不显示;
    7. mv src tar :移动文件或者重命名文件;
    8. cat 文件 :查看文件内容;
      1. cat -n 文件 显示行号;
    9. more 文件 :以全屏按页显示文本文件内容,(more指令是一个基于VI编辑器的文本过滤器,以全屏的方式,按页显示文本文件的内容);
      1. q 退出;
      2. = 输出当前行的行号;
      3. :f 输出文件名和当前行的行号;
    10. less 文件:用来分屏查看文件内容,和 more 功能类似,但比more功能更强大(支持各种显示终端,less指令在西安市文件内容时,并不是一次将整个文件加载后才显示,而是根据需要加载需要的内容,对于显示大型文件具有较高的效率),q退出。
    11. echo :输出内容到控制台;
      1. echo $HOSTNAME :输出主机名;
      2. echo $PATH :输出环境变量;
    12. head [可选 -n 行数] 文件:用于显示文件的开头部分内容,默认情况显示前10行;
    13. tail [可选 -n 行数] 文件:用于显示文件的尾部内容,默认显示最后10行;
      1. tail -f 文件名 :实时追踪文档的所有更新,退出按 ctrl+C ,适用于网络抓包、服务器网络监视;
    14. > 输出重定向(覆盖原文件)和 >> 追加;
    15. ln :表示link的意思,软链接,也称为符号链接,类似Windows里面的快捷方式,主要存放了链接其他文件的路径;
      1. ln -s [原文件目录] [软连接名] 给原文件创建一个软连接;
      2. 删除时不能加 / ,把软连接当成一个文件,而不是目录;
    16. history :查看已经执行过的历史命令;
      1. history n 显示最近使用过的n个指令;
      2. history !n 执行历史编号为5的指令。

时间日期指令

  1. date :显示当前日期;
    1. date "+%Y-%m-%d" 显示当前年月日;
    2. date "+%Y-%m-%d %H:%M:%S" 显示当前年月日时分秒;
    3. data -s "时间" 设置系统时间;
  2. cal :显示本月月历;
    1. cal 2022 :显示2022年的所有月历。

查找指令

  1. find [搜索范围] [选项] [参数] :从指定目录向下递归的遍历子目录,将满足的文件或目录显示在终端;
    1. 选项[-name] 按照指定文件名查找模式查找文件;
    2. 选项[-usre] 查找属于指定用户名所有文件;
    3. 选项[-size [+n 大于n][-n 小于n][n 等于n]] 按照指定的文件大小查找文件;
  2. locate :可以利用数据库快速实现文件搜索,但有的linux没有安装,先安装 yum install mlocate ,然后再使用之前更新数据库 updatedb ,才能使用locate;
  3. which 指令 :可以查看某个指令在哪个目录下;
  4. grep :过滤查找,通常和管道符号 | 一起使用;
    1. grep -n "内容" 文件 -n表示显示匹配的行号;
    2. grep -i "内容" 文件 -i表示忽略字母大小写;

压缩和解压指令

  1. gzipgunzip :对单个文件进行压缩和解压,格式是 .gz
  2. zipunzip :对文件夹压缩和解压,格式是 .zip
    1. zip -r 压缩完成后文件名.zip 文件夹或文件 压缩文件夹以及其里面的文件和子文件夹成为压缩完成后文件名.zip;
    2. unzip -d 解压后的文件或文件夹目录 压缩文件或文件夹目录:-d表示指定的解压目录;
  3. tar [选项] xxx.tar.gz 打包的内容 :既可以压缩,也可以解压,打包得到的文件格式是.tar.gz
    1. tar -zcvf xxx.tar.gz 打包内容 :将内容进行打包;
    2. tar -zxvf xxx.tar.gz -C 解压目标目录 :将压缩文件解压到特定位置;
    3. 选项[-c] 产生 .tar 打包文件;
    4. 选项[-v] 显示详细信息;
    5. 选项[-f] 指定压缩后文件名;
    6. 选项[-z] 打包同时压缩;
    7. 选项[-x] 解包 .tar 文件;

组管理和权限管理

Linux每个用户都必须属于一个组

Linux每个文件都有所有者、所在组、其他组这三个概念。

修改权限一般要 root 权限

文件和目录的所有者

  1. chown -R :change owner,修改所有者。-R表示递归修改;
  2. chown [-R] 用户名 文件名 修改文件所有者;
  3. chown newnwner:newgroup 文件/目录 改变所有者和所在组。

文件和目录的所在组

  1. chgrp -R :change group,修改所在组。-R表示递归修改;
  2. chgrp [-R] newgroup 文件/目录 改变所在组;

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。

改变用户所在组

  1. usermod -g 新组名 用户名
  2. usermod -d 目录名 用户名 改变该用户登录的初始目录,用户需要有进入新目录的权限;

权限的基本介绍

使用 ls -l 得出的信息,开头10个字符表示文件权限;

  1. 第0位确定文件类型( d,-,l,c,b )
    1. d 表示目录;
    2. - 表示普通文件;
    3. l 表示链接;
    4. c 表示字符设备文件,如鼠标、键盘等;
    5. b 表示块设备,比如硬盘等,blog;
  2. 第1-3位确定所有者所拥有的权限—User;
    1. rwx 三种权限,对于文件和目录的作用分别不用;
  3. 第4-6位确定所在组的权限—Group;
  4. 第7-9位确定其他用户所拥有的权限—Other;
  5. 其他说明:
    1. 第10位: 文件:硬连接数 ;目录:子目录数;
    2. 第11位: 用户;
    3. 第12位: 组;
    4. 第13位: 文件大小(字节),如果是文件夹,显示4096字节;
    5. 第14位: 最后修改日期;
    6. 第15位: 文件名。
权限 文件 目录
r 读取、查看 读取、ls查看
w 修改(但不代表可以删除,删除的前提条件是对该文件所在的目录有写权限) 修改、目录内创建、删除、重命名目录
x 执行 可以进入该目录

修改权限

chmod :修改文件或目录的文件;

  1. chmod [[u 所有者] [g 所有组] [o 其他人] [a 所有人]][[+ 增加权限] [- 减少权限] [= 设置权限]] 文件/目录

  2. chmod [[u 的权限求和] [g 的权限求和] [a 的权限求和]] 文件/目录 : r = 4 、r = 2、 x = 1;

定时任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序。

分类:

  1. 系统工作
  2. 个别用户工作

crontab定时任务

crontab [选项]

  • -e 编辑crontab定时任务;
  • -l 查询crontab定时任务;
  • -r 删除当前用户所有的crontab任务。

service crond restart 重启任务调度

定时参数说明

占位符 含义 范围
第一个”*” 一小时当中的第几分钟 0~59
第二个”*” 一天当中的第几小时 0~23
第三个”*” 一个月中的第几天 1~31
第四个”*” 一年当中第几月 1~12
第五个”*” 一周当中的星期几 0~7(0和7都代表周日)
代表不连续的时间
- 代表连续的时间
*/n 代表每个多久执行一次

at 定时任务

crond是定时的,反复执行的;at命令是一次性定时计划任务。

  1. at命令时一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
  2. 默认情况下,atd守护进程每60s检查作业队列,有作业时,会检查作业运行时间,如果运行时间与当前时间匹配,则运行此作业。
  3. at命令是一次性定时计划任务,执行完一个任务后,不再执行此任务。
  4. 在使用at命令的时候,一定要保证atd进程的启动。

Ctrl + D 连按两次结束at命令的输入;

atq 查看设置的定时任务;

atrm +编号 删除该编号的定时任务;

at [选项] [时间]

  1. -m 当指定的任务被完成后,将给用户发送于邮件,即使没有标准输出;
  2. -I atq的别名
  3. -d atrm的别名
  4. -v 显示任务将被执行的时间
  5. -V 显示版本信息
  6. -c 打印任务的内容到标准输出
  7. -q <队列> 使用指定的队列
  8. -f <文件> 从指定文件读入任务而不是从标准输入读入
  9. -t <时间参数> 以时间参数的形式提交要运行的任务

时间指定方法:

  1. 接受在当天的 hh:mm (小时:分钟)式的时间指定。加入该时间已过去,那么就放在第二天执行。
  2. midnighr(深夜) noon(中午) teatime(下午四点)
  3. 采用12小时制,在时间后面加上AM或PM
  4. 指定命令执行的具体日期 指定格式为 (month day)(月日) 或 mm/dd/yy(月/日/年) 或 dd.mm.yy (日.月.年)
  5. 使用相对计时法 指定格式为: (now + count time-units) now是当前时间,time-units是时间单位(minutes分钟 hours小时 days天 weeks星期),count是时间的数量
  6. 直接使用today(今天) tomorrow(明天)

Linux 磁盘分区和挂载

Linux分区

Linux无论有几个分区,分给哪一个目录来使用,他归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。

Linux采用了一种叫“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得。

硬盘说明

  1. linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘;
  2. 对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设别的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1~4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
  3. 对于SCSI硬盘表示为“sdx~” ,SCSI硬盘是用“sd”来表示分区所在设备类型,其余则和IDE硬盘的表示方法一样。

lsblk : 查看所有设备的挂载情况

lsblk -f : 显示的UUID是分区的40位的唯一标识符

fdisk /dev/sdx :分区命令

mkfs -t ext4 /dev/sdb~ 格式化磁盘,ext4是分区类型

mount 设备名称 挂载目录 将一个分区与一个目录联系起来

umount 设备名称/挂载目录 取消一个分区与一个目录的联系

修改/etc/fstab永久挂载,执行mount -a 即刻生效

虚拟机添加硬盘并连接分区

  1. 虚拟机添加硬盘

  2. 分区

    fdisk /dev/sdb

    m 显示命令列表

    p 显示磁盘分区

    n 新增分区

    d 删除分区

    w 写入并退出

    1. 开始分区后输入n,新增分区
    2. 然后选择p,分区类型为主分区
    3. 两次回车默认剩余全部空间
    4. 最后输入w,写入分区并退出,若不保存退出输入q
  3. mkfs -t ext4 /dev/sdb1 格式化磁盘,ext4是分区类型

  4. mount /dev/sdb1 /newdisk 将一个分区与一个目录联系起来(用命令行挂载,重启失效)

  5. 修改/etc/fstab永久挂载

    /dev/sdb1 /newdisk ext4 defaults 0 0

​ 执行mount -a 即刻生效

磁盘情况查询

  1. df -h 查询系统整体磁盘使用情况

  2. du [选项] 目录 查询指定目录的磁盘占用情况

    -s 指定目录占用大小汇总

    -h 带计量单位

    -a 含文件

    --max-depth=1 子目录深度

    -c 列出明细的同时,增加汇总值

  3. tree 目录 以树状结构得到显示目录结构

网络配置

ping 目的主机ip 测试当前服务器是否可以连接目的主机

Linux网络环境配置

指定ip

直接修改配置文件来指定IP,并可以连接到外网

编辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33

DEVICE=enth0 #接口名(设备网卡)

HWADDR=xx:xx:xx:xx:xx:xx #MAC地址

TYPE=Ethernet #网络类型(通常是Ethernet)

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx #碎解ID

ONBOOT=yes #系统启动时网络接口是否有效

BOOTPROTO=static #IP的配置方法[none(引导时不使用协议)|static(静态分配IP)|bootp(BOOTP协议)|dhcp(DHCP协议)]

IPADDR=xxx.xxx.xxx.xxx #ip地址

GATEWAY=xxx.xxx.xxx.xxx #网关

DNSI=xxx.xxx.xxx.xxx #域名解析器

重启网络服务或者重启系统生效

service network restartreboot

设置主机名

  1. 修改主机名

    hostname 查看主机名

    修改文件在/etc/hostname 中指定

  2. 设置主机映射

    windows : C:\Windows\System32\drivers\etc\hosts 文件指定

    Linux : /etc/hosts 文件指定

主机名解析机制

Hosts:一个文本文件,用来记录IP和Hostname(主机名)的映射关系

DNS:域名解析系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库

进程管理

在Linux中,每个执行的程序都称为一个进程,每个进程都分配一个ID号(pid,进程号)

每个进程都可能以两种方式存在,前台与后台。

一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,知道关机才结束。

查看进程

ps [选项] 显示系统执行的进程

-a 显示当前终端的所有进程信息

-u 以用户的格式显示进程信息

-x 显示后台进程运行的参数

ps -aux

PID 进程识别号

TTY 终端机号

TIME 此进程所消耗CPU时间

CMD 正在执行的命令或进程名

%CPU 此进程占用CPU百分比

%MEM 此进程占用物理内存百分比

VSZ 此进程占用虚拟内存大小 KB

RSS 此进程占用物理内存大小 KB

STAT 此进程运行状态【S-休眠 r-正在运行 s-表示该进程是会话的先导进程 N-表示进程拥有比普通优先级更低的优先级 D-短期等待 Z-僵死进程 T-被跟踪或者被停止等待】

START 此进程执行开始时间

COMMAND 执行此进程的指令(过长会被截断)

-e 显示所有进程

-f 全格式

ps -ef

UID 用户ID

PID 进程ID

PPID 父进程ID

C CPU用于计算执行优先级的因子

​ 数值越大,表明进程时CPU密集型运算,执行优先级会降低

​ 数值越小,表明进程时I/O密集型运算,执行优先级会提高

STIME 进程启动时间

TTY 完整的终端名称

TIME CPU时间

CMD 启动进程所用的命令和参数

终止进程

  1. kill [选项] pid 杀死某个进程

    -9 表示强迫进程立即停止

  2. killall 进程名称 杀死进程及其子进程

    强制终止一个终端 kill -9 bash 对应进程号

显示进程树

pstree [选项] 更直观的查看进程信息

-p 显示进程的PID

-u 显示进程的所属用户

服务管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,因此我们又称之为守护进程。

service 管理指令

service 服务名 [start|stop|restart|reload|status]

service/systemctl

service 指令管理的服务在 /etc/init.d 查看

查看service服务名

  1. 使用 setup -> 系统服务 就可以看到全部setup
  2. ls -l /etc/init.d

开机的流程说明

开机 -> BIOS -> /boot -> systemd进程1 -> 运行级别 -> 运行级别对应的服务

  1. chkconfig 给服务的各个运行级别设置启动/关闭

    1. chkconfig --list | grep xxx :查看过滤后的服务service
    2. chkconfig --level 3 服务名 off :设置服务名的3级别自启动关闭

    chkconfig 重新设置服务后自启动或者关闭,需要重启机器reboot生效

  2. systemctl :管理服务指令

    1. service [start|stop|restart|reload|status] 服务名

    systemctl 指令管理的服务在 usr/lib/systemd/system 查看

    1. systemctl设置服务自启动状态
      1. systemctl list-unit-files [|grep 服务名] 查看服务开机启动状态,grep可以进行过滤
      2. systemctl enable 服务名 设置服务开机启动
      3. systemctl disable 服务名 关闭服务开机启动
      4. systemctl is-enable 服务名 查询某个服务是否是自启动的
    2. ls -l /usr/lib/systemd/system/ | more:显示systemctl管理的服务名称。
    3. systemctl list-unit-files | grep firewalld:查看防火墙开启还是关闭

firewalld

  1. firewall-cmd --permanent --add-port=端口号/协议 打开端口
  2. firewall-cmd --permanent --remove-port=端口号/协议 打开端口
  3. firewall-cmd --reload 重新载入,才能生效
  4. firewall-cmd --query-port=端口号/协议 查询端口是否开放

动态监控进程

topps命令很相似,他们都用来显示正在执行的进程

不同:top在执行一段时间可以更新正在运行的进程

top [选项]

-d 秒数 指定top命令每个几秒更新,默认是3秒

-i 使top不显示任何闲置或者僵死进程

-p 通过指定监控进程ID来监控某个进程的状态

操作 功能
P 以CPU使用率排序,默认就是此项
M 以内存使用率排序
N 以PID排序
q 退出top
u + 用户名 监视特定用户
k 终止指定的进程

监控网络状态

netstat [选项] 查看系统网络情况

-an 按一定的顺序排序输出

-p 显示哪个进程在调用

网络性能测试

Iperf

一款网络性能测试工具,在网络中单向传输数据流,根据需要调整传输速率和数据流大小,也可以根据需要报告带宽、延迟抖动和数据包丢失。

TCP测试

1
2
3
4
#服务器端
iperf -s
#客户端 host需替换成服务器地址
iperf -c host

UDP测试

1
2
3
4
#服务器端
iperf -u -s
#客户端 host需替换成服务器地址
iperf -u -c host

-f [b|B|k|K|m|M|g|G] //f参数表示单位
-r //r参数表示双向数据测试,但要先测c到s的带宽
-d //d参数和r近似,并且功能更强,可同时测试双向数据
-w [2000] //w参数后跟数字,单位是byte,
-p [12000] //p参数可指定端口号
-t [20] //t参数默认表示测试10次,后加数字可以自己定义
-i [2] //i参数表示测试开始到结束的间隔时间,单位s
-u -b 10m //udp 10mbps 测试
-m //最大mpu测试
-P //并行测试
-h //帮助

IPC通信

ipcs:–用来查看system V的IPC机制标识符的命令
-q,显示当前系统中 消息队列 的使用
-m,显示当前系统中 共享内存 的使用
-s,显示当前系统中 信号量 的使用

ipcrm:–用来删除 当前系统中 system V的IPC机制标识符的命令
-q,删除当前系统中 消息队列的标识符
-m,删除当前系统中 共享内存的标识符
-s,删除当前系统中 信号灯集的标识符

查看评论