liunx笔记

1、按系列罗列 Linux 的发行版,并描述不同发行版之间的联系与区别。

1)linux 的发行版介绍

slackware:SlackwareLinux 是由 PatrickVolkerding 开发的 GNU/Linux 发行版,一直坚持 KISS 原则。

suse: 在欧洲比较流行的 linux 发行版本

sles:suse 企业版

opensuse:suse 桌面免费发行版本

debian:服务器版,消耗资源少,稳定。

ubuntu

mint

redhat:成立于 1992 年

rhel:redhatenterprise linux,用于企业商用,为了保证服务器稳定,每 18 个月发行一个新版本

centos: 开源版本,和 RHEL 几乎一样,兼容 rhel 的格式,已被 redhat 收购。

fedora:linux 免费桌面版,得到 redhat 官方支持,用于测试新软件,每 6 个月发行一个新版本

Archlinux

Gentoo

LFS:Linux From scratch

Androld:kernel+busy@R_802_2419@+java 虚拟机,主要用于移动终端

2)不同发行版之间的联系

都是在开源的 linux 内核代码进行再次开发而形成不同的发行版,而且必须支持 GNU 中包含的自由软件协定,GNU 包含的自由软件协定包含 GPLv2、GPLv3、LGPL。各发行版其中 SLES 是 suse 的企业版本,opensuse 是 suse 的免费桌面版,ubuntu 和 mint 都是基于 dibian 的桌面版,RHEL 为 redhat 面向企业商用的服务器版,fedora 属于 redhat 的桌面版本,由 redhat 赞助 fedora 社群免费维护,centos 主要面向企业服务器,由开源社区提供免费技术支持,后来被 redhat 收购,目前仍然免费。

3)各发行版之间的区别

包管理系统不同,SLES、Fedora、openSUSE、centos、RHEL 采用 rpm 包管理系统,包文件以 rpm 为扩展名;Ubuntu 系列,Debian 系列采用 DPKG 包管理系统。

2、安装 Centos7.9 和 ubuntu 操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图。

在公司装的步骤忘了截图

3、配置环境变量,实现执行 history 的时候可以看到执行命令的时间。

 

 

 4、总结 Linux 哲学思想。

Linux 把几乎所有的资源通通抽象为文件形式,这其中包括:

硬件设备

比如:/dev/console、/dev/cdrom 等

管道

比如:/dev/zero(一个可以都出无限个 0 的文件),/dev/null(一个重定向进去之后就消失了的文件,相当于黑洞)

套接字

IP:PORT

好处:

可以使用同一套机制来处理 Linux 系统中的大多数资源。

比如系统调用:open(), read(), write(), close(), delete(), create()

由众多功能单一的程序共同完成复杂任务
Linux 倾向于让一个程序只做一件事,并且做好;让这样的程序能够基于统一的标准开放接口,再由多个这种功能单一的程序组合起来,共同完成更为复杂的任务。

好处:

程序代码更轻量,更高效;

出现错误更容易定位;

程序的功能延展更具灵活性;

尽量避免跟用户交互
正是由于面向的对象不同,Linux 系统管理多使用命令行接口,通过命令对系统进行操作和管理,这与 Windows 的设计理念有着迥然的区别。

好处:

易于以编程的方式实现自动化任务;

为自动化运维,乃至 DevOps 日后的发展奠定了基础。

使用文本文件保存配置信息
所有的配置文件都采用文本文件的方式保存,管理人员可以通过 vi 或 vim 文本编辑工具对其进行修改。

好处:

方便管理者对应用软件进行配置、检查工作,而且为避免服务因修改配置中断,多数应用程序也会针对配置文件的更改提供不中断服务的 reload 操作,这也是 Linux 系统运行比 Windows 稳定的一个因素。

5、总结 Linux 常用命令使用格式,并用实例说明。例如 echo、screen、date、ifconfig、export 等命令。

echo 命令
用于在 shell 中打印 shell 变量的值,或者直接输出指定的字符串。linux 的 echo 命令,在 shell 编程中极为常用, 在终端下打印变量 value 的时候也是常常用到的,因此有必要了解下 echo 的用法 echo 命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
语法
echo(选项)(参数)
选项
-e:激活转义字符。
使用 -e 选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入 tab;
\v 与 \f 相同;
\\ 插入 \ 字符;
\nnn 插入 nnn(八进制)所代表的 ASCII 字符;
参数
变量:指定要打印的变量。
实例
用 echo 命令打印带有色彩的文字:
文字色:
echo -e "\e[1;31mThis is red text\e[0m" This is red text
\e[1;31m 将颜色设置为红色
\e[0m 将颜色重新置回
颜色码:重置 =0,黑色 =30,红色 =31,绿色 =32,黄色 =33,蓝色 =34,洋红 =35,青色 =36,白色 =37
背景色:
echo -e "\e[1;42mGreed Background\e[0m" Greed Background
颜色码:重置 =0,黑色 =40,红色 =41,绿色 =42,黄色 =43,蓝色 =44,洋红 =45,青色 =46,白色 =47

 

 


文字闪动:
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐

 

screen
screen 命令
常用工具命令
Screen 是一款由 GNU 计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen 可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
会话恢复
只要 Screen 本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行 screen
-r 就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令 detach,在保证里面的程序正常运行的情况下让 Screen 挂起(切换到后台)。这一点和图形界面下的 VNC 很相似。
多窗口
在 Screen 环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen 实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。
会话共享
Screen 可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
GNU's Screen 官方站点:http://www.gnu.org/software/screen/
语法
# screen [-AmRvx -ls-wipe][-d < 作业名称 >][-h < 行数 >][-r < 作业名称 >][-s ][-S < 作业名称 >]
选项
-A  将所有的视窗都调整为目前终端机的大小。
-d < 作业名称 >  将指定的 screen 作业离线。
-h < 行数 >  指定视窗的缓冲区行数。
-m  即使目前已在作业中的 screen 作业,仍强制建立新的 screen 作业。
-r < 作业名称 >  恢复离线的 screen 作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的 screen 作业。
-s  指定建立新视窗时,所要执行的 shell。
-S < 作业名称 >  指定 screen 作业的名称。
-v  显示版本信息。
-x  恢复之前离线的 screen 作业。
-ls 或 --list  显示目前所有的 screen 作业。
-wipe  检查目前所有的 screen 作业,并删除已经无法使用的 screen 作业。
常用 screen 参数
screen -S yourname -> 新建一个叫 yourname 的 session
screen -ls -> 列出当前所有的 session
screen -r yourname -> 回到 yourname 这个 session
screen -d yourname -> 远程 detach 某个 session
screen -d -r yourname -> 结束当前 session 并回到 yourname 这个 session
安装 screen
流行的 Linux 发行版(例如 Red Hat Enterprise Linux)通常会自带 screen 实用程序,如果没有的话,可以从 GNU screen 的官方网站下载。

 

 

 [root@centos7cs ~]#
创建一个新的窗口
安装完成后,直接敲命令 screen 就可以启动它。但是这样启动的 screen 会话没有名字,实践上推荐为每个 screen 会话取一个名字,方便分辨:
[root@centos7cs ~]# screen -S cs
screen 启动后,会创建第一个窗口,也就是窗口 No.0,并在其中打开一个系统默认的 shell,一般都会是 bash。所以你敲入命令 screen 之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入 Screen 的世界了。
会话分离与恢复
你可以不中断 screen 窗口中程序的运行而暂时断开(detach)screen 会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。
之后我们想暂时退出做点别的事情,比如出去散散步,那么在 screen 窗口键入 C-a d,Screen 会给出 detached 提示:
暂时 中断会话
半个小时之后回来了,找到该 screen 会话:
[root@centos7cs ~]# screen -ls
重新连接会话:
[root@centos7cs ~]# screen -r
一切都在。
当然,如果你在另一台机器上没有分离一个 Screen 会话,就无从恢复会话了。这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来:
清除 dead 会话
如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时 screen -list 会显示该会话为 dead 状态。使用 screen -wipe 命令清除该会话:
关闭或杀死窗口
正常情况下,当你退出一个窗口中最后一个程序(通常是 bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用 C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。
如果一个 Screen 会话中最后一个窗口被关闭了,那么整个 Screen 会话也就退出了,screen 进程会被终止。
除了依次退出 / 杀死当前 Screen 会话中所有窗口这种方法之外,还可以使用快捷键 C-a :,然后输入 quit 命令退出 Screen 会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实 C-a : 这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入 split 等,这也是实现 Screen 功能的一个途径,不过个人认为还是快捷键比较方便些。
screen 高级应用
会话共享
还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个 screen 会话,你朋友可以在他的终端上命令:
[root@centos7cs ~]# screen -x
这个命令会将你朋友的终端 Attach 到你的 Screen 会话上,并且你的终端不会被 Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。
会话锁定与解锁
Screen 允许使用快捷键 C-a s 锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被 Screen 中的进程接收到。快捷键 C-a q 可以解锁一个会话。
也可以使用 C-a x 锁定会话,不同的是这样锁定之后,会话会被 Screen 所属用户的密码保护,需要输入密码才能继续访问这个会话。date
date 命令
常用工具命令
date 命令是显示或设置系统时间与日期。
很多 shell 脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类 UNIX 系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970 年 1 月 1 日 0 时 0 分 0 秒起流逝的秒数。
语法
date(选项)(参数)
选项
-d< 字符串 >:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s< 字符串 >:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示 GMT;
--help:在线帮助;
--version:显示版本信息。
参数
<+ 时间日期格式 >:指定显示时使用的日期时间格式。
日期格式字符串列表
%H 小时,24 小时制(00~23)
%I 小时,12 小时制(01~12)
%k 小时,24 小时制(0~23)
%l 小时,12 小时制(1~12)
%M 分钟(00~59)
%p 显示出 AM 或 PM
%r 显示时间,12 小时制(hh🇲🇲ss%p)
%s 从 1970 年 1 月 1 日 00:00:00 到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24 小时制(hh🇲🇲ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0 代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999 则是 99)


格式化输出:
date +"%Y-%m-%d"
2021-11-20
输出昨天日期:
date -d "1 day ago" +"%Y-%m-%d"
2020-11-19
2 秒后输出:
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2020-11-20 14:21.31

ifconfig
ifconfig 命令
网络配置
ifconfig 命令被用于配置和显示 Linux 内核中网络接口的网络参数。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
语法
ifconfig(参数)
参数
add< 地址 >:设置网络设备 IPv6 的 ip 地址;
del< 地址 >:删除网络设备 IPv6 的 IP 地址;
down:关闭指定的网络设备;< 硬件地址 >:设置网络设备的类型与硬件地址;
io_addr:设置网络设备的 I/O 地址;
irq:设置网络设备的 IRQ;
media< 网络媒介类型 >:设置网络设备的媒介类型;
mem_start< 内存地址 >:设置网络设备在主内存所占用的起始地址;
metric< 数目 >:指定在计算数据包的转送次数时,所要加上的数目;
mtu< 字节 >:设置网络设备的 MTU;
netmask< 子网掩码 >:设置网络设备的子网掩码;
tunnel< 地址 >:建立 IPv4 与 IPv6 之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast< 地址 >:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint< 地址 >:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的 promiscuous 模式;
IP 地址:指定网络设备的 IP 地址;
网络设备:指定网络设备的名称。
实例
显示网络设备信息(激活状态的):
启动关闭指定网卡:
ifconfig eth0 up
ifconfig eth0 down
ifconfig eth0 up 为启动网卡 eth0,ifconfig eth0 down 为关闭网卡 eth0。ssh 登陆 linux 服务器操作要小心,关闭了就不能开启了,除非你有多网卡。
为网卡配置和删除 IPv6 地址:
ifconfig eth0 add 33ffe:3240:800:1005::2/64# 为网卡 eth0 配置 IPv6 地址
ifconfig eth0 del 33ffe:3240:800:1005::2/64# 为网卡 eth0 删除 IPv6 地址
用 ifconfig 修改 MAC 地址:
ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE

 

 

export
export 命令
Shell 内建命令
export 命令用于将 shell 变量输出为环境变量,或者将 shell 函数输出为环境变量。
一个变量创建时,它不会自动地为在它之后创建的 shell 进程所知。而命令 export 可以向后面的 shell 传递变量的值。当一个 shell 脚本调用并执
行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export 命令可以用于传递一个或多个变量的值到任何后继脚本。
语法
export(选项)(参数)
选项
-f:代表 [变量名称] 中为函数名称;
-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;
-p:列出所有的 shell 赋予程序的环境变量。
参数
变量:指定要输出或者删除的环境变量。

 

 

 

 6、描述 Linux 发行版的系统目录名称命名规则以及用途。

/boot:引导文件存放目录,内核文件 (vmlinuz)、引导加载器(bootloader, grub) 都存放于此目录

/bin:所有用户使用的基本命令;不能关联至独立分区,OS 启动即会用到的程序

/sbin:管理类的基本命令;不能关联至独立分区,OS 启动即会用到的程序

/lib:启动时程序依赖的基本共享库文件以及内核模块文件 (/lib/modules)

/lib64:专用于 x86_64 系统上的辅助共享库文件存放位置

/etc:配置文件目录

/home/USERNAME:普通用户家目录

/root:管理员的家目录

/media:便携式移动设备挂载点

/mnt:临时文件系统挂载点

/dev:设备文件及特殊文件存储位置

b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置

/srv:系统上运行的服务用到的数据

/tmp:临时文件存储位置

/usr: universal shared, read-only data

bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32 位使用
lib64:只存在 64 位系统
include: C 程序的头文件 (header files)
share:结构化独立的数据,例如 doc, man 等
local:第三方应用程序的安装位置 bin, sbin, lib, lib64, etc, share
/var: variable data files

cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为 /usr/local 下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为 /opt 下的应用程序存储可变数据
run: 运行中的进程相关数据, 通常用于存储进程 pid 文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux: security enhanced Linux,selinux 相关的安全策略等信息的存储位置