学习liunx记录

369 阅读11分钟

学习linux

系统工程师

这方面学到的知识有一些基础的命令行之类 通过命令行来管理文件,是不同于windows操作的一种体验.

以下记录一些常用的liunx命令:

ifconfig 查看IP地址,mac地址等网络设置
cd 移动到对应目录下
cp 复制文件或文件夹 -a复制权限 -r复制多级目录
rm -rf 强制删除且不提醒
cat 查看内容
chmod 改变文件权限
chroot 改变用户属组属主
ls -l 查看目录下的文件和属组和权限
touch 创建文件 -r自动创建文件夹
useradd userdel groupadd groupdel
useradd -m -d /home/haha -s /bin/bash -u 2020 uos1
usermod 修改用户属性 fdisk -l 查看硬盘
fdisk gdisk两种分区模式
find 查找 dpkg -l 显示软件安装列表
apt purge -y 删除包

其他更多命令都放在自己的百度云里了

其中在做磁盘管理的题目时会遇到一些问题 北站 :比如使用radi5时,假如之前的记录没有删除干净,很容易出现没法继续进行的情况,很有可能出现fliter报错。 其原因在于逻辑卷上的签名未删除,删掉就好。 同样在挂载时如果采用的是虚拟硬盘进行挂载实验,是无法重新开机的。

运维工程师

网络基础知识

ip地址相当于独一无二的一个门牌号
mac地址相当于邮编 端口相当于一个公司的一个收件人
路由可以实现在不同的网段进行通信 进行动态的路由选择
网关和路由作用差不多,其中有一个NAT转换的功能,起作用就像套个信封给你的ip。
下面就是比较重要的ISO/OSI的七层协议模型

截图_选择区域_20220402111421.jpg
应用层:给用户提供一个操作界面
表示层:提供数据表示,加密,压缩
会话层:确定数据是否需要进行网络传递
传输层:对数据进行分组,组装。提供传输协议的选择:tcp/udp 端口封装,差错校验
网络层:IP地址,路由选择
数据链路层:mac地址编址,mac地址寻址,差错校验 物理层:电气方面,电流的传输

数据传输的过程:通过表示层压缩,加密,确定需要进行网络传递,对数据组进行分组,选择协议,封装校验。ip地址编译,路由选择。mac地址编译,进入物理层。到另一台机器的物理层后将上述过程反着来。

apache

apache是一个广泛应用的web服务器软件,可将php等解释器编译到服务器中
apache有三种工作模式,由于apache是基于进程为基础的结构,不太适用于多处理器环境。
其中有个拓展知识为keep-alive模式,他可以解决长时间被占用的线程浪费问题。

截图_选择区域_20220402121801.jpg 练习题目例子


 *虚拟主机监听的端口为8899

 *设置DocumentRoot为/var/www/port

 *下载http://virtual.storage.uosexam.com/exam/port.html文件到/var/www/port下并重命名为index.html

 *访问http://server1.uosexam.com:8899即可看到/var/www/port/index.html的内容

 *为http://server1.uosexam.com 配置安全的web服务,可以使用

apt install apache2

systemctl enable / restart apache2

mkdir /var/www/port

chmod -R 777 /var/www

wget http:virtual.storage.uosexam.com/exam/port.html -O /var/www/port/index.html

vim /etc/apache2/sites-enabled/port.conf

Listen 8899

<VirtualHost *:8899>

ServerName server1.uosexam.com

DocumentRoot /var/www/port

</VirtualHost>

systemctl restart apache2

 

ALL:

vim /etc/hosts

192.168.1.10 server1 server1.uosexam.com
Server1:

apt install apache2

apt install openssl

systemctl enable / restart apache2

 

mkdir /var/www/ssl

chmod -R 777 /var/www

wget http:virtual.storage.uosexam.com/exam/port.html -O /var/www/ssl/index.html

vim /etc/apache2/sites-enabled/ssl.conf

<VirtualHost *:80>

ServerName server1.uosexam.com

DocumentRoot /var/www/ssl

</VirtualHost>

 

mkdir /etc/apache2/ssl

cd /etc/apache2/ssl

openssl genrsa > 1.key

openssl req -new -x509 -key 1.key > 1.pem

 

> CN -> BJ -> BJ -> TX -> PXB -> TEST -> test@test.com

 

cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/

vim +32,33 /etc/apache2/sites-enabled/default-ssl.conf

ServerName server1.uosexam.com

DocumentRoot /var/www/ssl

SSLCertificateFile /etc/apache2/ssl/1.pem

SSLCertificateKeyFile /etc/apache2/ssl/1.key

a2enmod ssl

systemctl restart apache2

 

ALL:

vim /etc/hosts

192.168.1.10 server1 server1.uosexam.com
其中有点需要注意 由于openssl服务中的密钥我们是自己生成,所以登陆网站时会提示,无视就好。
如使用curl命令则需要在后面加上--insecure即可。
---

ssh安全远程管理

简单点来说就是一个远程控制服务
其中里面有个比较重要的知识为ssh免密登陆
刚开始配置ssh免密登陆的时候可能会碰到很多问题,首先我们需要将sshd服务里的PermitLogin打开
如果还是显示publickey denied的话可以重新设置一下root用户账号密码
使用ssh-copy-id复制密钥实现免密登陆

截图_选择区域_20220402132756.jpg

nginx

nginx是一款轻量级的服务器,占用内存少,并发能力强。
在配置链接php会有点小问题。
nginx在目前阶段接触不多学到知识较少。
不过这里面有一个很重要的概念:同步 异步 阻塞 非阻塞
用拿快递举个例子方便理解
同步取快递:小明收到快递即将到达的短信,在楼下一直等到快递送达
异步取快递:小明收到快递即将到达的短信,快递到楼下后,小明下楼再去取

阻塞取快递:小明收到快递即将送达信息后,什么事也不做,一直专门等快递
非阻塞取快递:小明收到快递即将送达的信息后,等待快递的时候,一边敲代码,一边耍微信

将以上相组合便有了四种组合方式,但只有一下两种是比较常用的
同步阻塞:小明收到信息后,啥也不干,在楼下等快递
异步非阻塞:小明收到信息后,边刷微博,边等快递员通知他取快递

DNS

DNS服务是一项将域名指向空间IP的服务
在日常生活中我们上网一般都是输域名,但域名的背后其实空间IP。DNS就是充当之间桥梁的翻译官。 DNS的解析过程:
www.kernel.org

  1. 客户机首先查找本地hosts文件,如果有则返回,否则进行下一步
  2. 客户机查看本地缓存,是否存在本条目的缓存,如果有则返回,否则进行下一步
  3. 将请求转发给指向的DNS服务器。
  4. 查看域名是否本地解析,是则本地解析返回,有则返回,否则进行下一步
  5. 本地DNS服务器在缓存中查找,是则返回,否则进行下一步
  6. 向全球十三个根域服务器发起DNS请求,根域返回org地址
  7. 使用org域的ip地址,发起DNS,org域返回kernel域服务器地址列表
  8. 使用一个kernel域ip地址,发起DNS请求,kernel域返回www.kernel.org 的ip地址,本地DNS服务器收到后,返回客户机,并在本地DNS服务器保存一份

相关练习题

缓存DNS

在server1上配置DNS服务器、满足下列要求,且保证服务重启后依然生效

 *域名www.uos.com可访问机器为172.25.0.11的机器

 *域名admin.uos.com 可访问机器为 172.25.0.33的机器

在server2上配置缓存DNS服务

 *在任意机器指定DNS服务器为server2的IP时,可解析出server1配置的所有地址
 Server1:

apt install bind9

systemctl enable / restart bind9

 

cp /etc/bind/named.conf.default-zones /etc/bind/named.conf.default-zones.bak

vim /etc/bind/named.conf.default-zones

    zone "uos.com" {

        type master;

        file "/etc/bind/uos.com";

    };

 

cp /etc/bind/db.local /etc/bind/uos.com

vim /etc/bind/uos.com

    ;

    ; BIND data file for local  loopback interface

    ;

    $TTL 604800

    @ IN SOA uos.com.    root.localhost. (

           2 ; Serial

      604800 ; Refresh

       86400 ; Retry

     2419200 ; Expire

      604800 ) ;   Negative Cache TTL

    ;

    @ IN NS uos.

    www     IN A 192.168.0.1 # IP改为实际要求IP

    admin   IN A 192.168.0.2 # IP改为实际要求IP

 

vim /etc/resolv.conf

nameserver 192.168.1.10      (注释掉 #192.168.1.254)

 

systemctl restart bind9

---

ALL:解析为对应IP地址即为成功

nslookup www.uos.com server1

nslookup admin.uos.com server1

 

===========

在server2上配置缓存DNS服务

 *在任意机器指定DNS服务器为server2的IP时,可解析出server1配置的所有地址

Server2:

apt install bind9

systemctl enable / restart bind9

 

cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bak

vim +13 /etc/bind/named.conf.options

    forwarders {

        192.168.1.10;

    };

 

vim /etc/resolv.conf

nameserver 192.168.1.20

 

systemctl restart bind9

---

ALL:解析为对应IP地址即为成功

nslookup www.uos.com server1 /server2

nslookup admin.uos.com /server1 /server2
注意不要配置错误的本机DNS地址

DHCP

DHCP通常被应用在大型的局域网络之中,主要作用是集中的管理分配网络资源,使网络环境中的主机能动态的获得ip地址、gateway、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP租约四部曲

  1. DHCP客户端进行IP请求
  2. DHCP服务器响应请求
  3. DHCP客户机选择IP
  4. DHCP服务器确认租约
    需要注意的是一开始客户端是不知道服务器ip地址的,以0.0.0.0作为源,255.255.255.255作为目标地址广播,由于确认租约之后客户机才有地址,所以整个过程中的广播目标都为255.255.255.255

ISCSI

iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SAN模拟成为本地的储存装置。

相关习题

在server2上配置iscsi服务,并满足下列要求

*磁盘名为iqn.2020-06.com.uosexam:server

*对/dev/sdb进行分区,大小为5G

*使用uos_disk作为后端卷,大小为/dev/sdb1分区大小

在server1上挂载server2提供的iscsi存储,并满足下列要求

*iscsi设备在系统重启后能自动加载

*在iscsi块设备上划分一个2G的分区,格式为ext4

*将分区永久挂载在/var/www上
Server2:


fdisk /dev/sdb

n->回车->回车->回车->+5G->p->w

# lsblk查看sdb大小,如果是5G

# n->一路回车->w

partprobe

apt-get -y install targetcli-fb

targetcli

/>  ls

/>  /backstores/block create uos_disk /dev/sdb1

/>  /iscsi create iqn.2020-06.com.uosexam:server

/>  /iscsi/iqn.2020-06.com.uosexam:server/tpg1/acls create iqn.2020-06.com.uosexam:client

/>  /iscsi/iqn.2020-06.com.uosexam:server/tpg1/luns create /backstores/block/uos_disk

/>  saveconfig

/>  exit

Server1:

apt-get -y install open-iscsi

vim /etc/iscsi/initiatorname.iscsi

   InitiatorName=iqn.2020-06.com.uosexam:client
   
systemctl restart iscsid

systemctl enable iscsid

iscsiadm --mode discoverydb --type sendtargets --portal 192.168.1.20 --discover\

iscsiadm --mode node --targetname iqn.2020-06.com.uosexam:server --portal 192.168.1.20:3260 --login

systemctl restart iscsid

lsblk

fdisk /dev/sdb
n->回车->回车->回车->+5G->p->w
partprobe
lsblk

vim /etc/iscsi/iscsi.conf
   # node.startup = automatic   #去掉前面的注释符
   node.startup = manual           #在前面加上注释符
   
mkfs.ext4 /dev/sdb1
blkid /dev/sdb1

vim /etc/fstab
   UUID=”********” /var/www ext4 defaults,_netdev 0 0
   
mkdir /var/www/

mount -a

Shell

Shell脚本本质上感觉和java差不太多,比较好理解==
相关练习题目

在server1上创建名为/root/test.sh的脚本、完成以下功能

 *判断传入的位置参数有且只有一个

 *执行脚本时,传入一个位置参数

  #参数为quit,则输出exit

  #参数为yes,则输出running

  #为其它任意值,均执行非正常退出,脚本退出码11
  
  Server1:

vim /root/test.sh

#!/bin/bash

if [ $# -eq 1 ];then

if [ $1 == 'quit' ];then

echo 'exit'

elif [ $1 == 'yes' ];then

echo 'running'

else

exit 11

fi

else

exit 11

fi

 

chmod +x test.sh

---

./test.sh -> echo $? -> 11

./test.sh quit -> exit

./test.sh yes -> running

./test.sh test -> echo $? -> 11

除了题目里写的还有另外一种运行方式 bash /root/test.sh
此外exit输出的值是默认不显示的,可以输入echo $?查看
在server1上,编写shell脚本,保存为/root/square.sh,要求找出1-200以内6的倍数,并打印这些数的平方值
vim /root/square.sh

#!/bin/bash

for i in {1..200};

do

j=$(($i%6))

if [ $j -eq 0 ];then

echo $(($i*$i));

  fi

done

SAMBA

此项服务是由微软推出的夸平台传输文件的一种网络服务,目前对他了解不深。
我们的网络领居其实采用的就是SAMBA,如果你创建虚拟机后想把本机的东西放进去,就可以利用网上邻居这个功能,十分便利。

VSFTP

VSFTP工作模式

截图_选择区域_20220402135341.jpg

截图_选择区域_20220402135421.jpg

相关习题

在server1上创建FTP服务并按照下列要求进行配置

 *创建/srv/ftp/pub目录

 *要求在server2上使用匿名用户可以在/srv/ftp/pub/里面执行上传以及下载

FTP用户登录限制,使用user_list方式

 *创建tangseng、sunwukong、zhubajie、shaseng四个FTP用户,密码为‘123123’

 *只允许tangseng、sunwukong可以登陆FTP服务器

 * 其他用户将不允许登陆
 
 apt-get install vsftpd
 
systemctl start vsftpd

ss -anput | grep 21

vim /etc/vsftpd.conf

   anonymous_enable=YES
   write_enable=YES
   anon_upload_enable=YES
   anon_mkdir_write_enable=YES
   anon_umask=022  # 本条配置自行添加
   # 主动式连接使用的数据通道,如果有防火墙,就添加下面两行!!!!!!!
   connect_from_port_20=YES
   pasv_enable=NO  # 支持数据流的被动式连接模式
   
mkdir /srv/ftp/pub
chmod -R o+rw /srv/ftp/pub

systemctl restart vsftpd

systemctl enable vsftpd
useradd -m -s /bin/bash tangseng
useradd -m -s /bin/bash sunwukong
useradd -m -s /bin/bash zhubajie
useradd -m -s /bin/bash shaseng
echo "tangseng:123123" | chpasswd
echo "sunwukong:123123" | chpasswd
echo "zhubajie:123123" | chpasswd
echo "shaseng:123123" | chpasswd
echo 'tangseng' >> /etc/vsftpd.user_list 
echo 'sunwukong' >> /etc/vsftpd.user_list

vim /etc/vsftpd.conf  # 添加以下内容
   userlist_file=/etc/vsftpd.user_list
   userlist_enable=YES
   userlist_deny=NO
systemctl restart vsftpd

docker

docker是一个非常好用的镜像工具
是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
相关习题


使用dockerfile创建nginx服务

在server1上面搭建docker服务,满足下列要求

 *下载http://virtual.storage.uosexam.com/exam/uos.tar

 *导入uos.tar到docker并将uos打标签为uos:nginx

 *基于uos:nginx镜像书写dockerfile,安装nginx服务,访问默认主页返回内容为:I’m UOS NGINX

 *nginx为开机自启动;

 *生成的新镜像命令为uos:nginx2

 *基于uos:nginx2镜像,生成容器,命名为mynginx,并映射到server1的8888端口

 *访问server1:8888,返回结果: I’m UOS NGINX
 Server1:

wget http://virtual.storage.uosexam.com/exam/uos.tar

apt install docker docker.io

systemctl enable / restart docker

 

docker load -i uos.tar

docker images

docker tag uosproject/uos:latest uos:nginx

 

mkdir /root/dockerfile_8888

cd /root/dockerfile_8888

vim dockerfile

FROM uos:nginx

RUN apt clean && apt update

RUN apt install -y nginx

RUN echo "I'm UOS NGINX" > /var/www/html/index.html

RUN nginx

EXPOSE 80

CMD ["nginx","-g","daemon off;"]

 

docker build -t uos:nginx2 .  #注意后面有个点表示当前目录

docker run -id --name mynginx --restart=always -p 8888:80 uos:nginx2

docker ps
没有文件的话自己用docker pull命令下载,然后使用docker save xxx -o xxx.tar打包即可使用

ansible

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
相关习题

在server1上安装配置ansible,满足下列要求

 *server1在web组里面

 *server2在db组

编写一个playbook名称为/root/apt.yml、满足下列要求

 *在web组安装软件包“php-mysql”、“php-fpm”、”gcc”

 *在db组安装“mariadb-server”

 *保证所有机器都是启动的、并实现开机自启动
 Server1:

apt install ansible

vim /etc/ansible/hosts

    [web]

    server1

    [db]

    server2

 

---

Server1:

ansible server1 -m ping

ansible server2 -m ping
vim /root/apt.yml

---

        - hosts: web

          remote_user: root

          tasks:

                  - name: install web-server

                    apt: name=php-fpm,php-mysql,gcc state=present

        - hosts: db

          remote_user: root

          tasks:

                  - name: install db-server

                    apt: name=mariadb-server state=present

                  - name: enable

                    service: name=mariadb enabled=true state=started

 

ansible-playbook --syntax-check /root/apt.yml

ansible all -m shell -a "apt update"

ansible-playbook /root/apt.yml
需要注意的是yml非常看重缩进和空格,最好严格按照样式来做,不然报错的大概率是因为格式问题。

MySQL

待更新。。。

链路聚合

简单理解的的话就是数据链路层生成数协议有两条或者两条以上时,会自动切断另外一条。
链路聚合中同时只允许一个成员端口工作。可将多张网卡绑在一块。列如使用bond和team。bond最多添加两张网卡

截图_选择区域_20220412142904.jpg 一般轮询和活动备份用的多一点

运维考试回顾

有几点要注意一下
在hosts里要写上server1和server2的地址,不然机器不认识。
第一道防火墙就不用写了,纯纯的浪费时间
dhcp那道题,我一开始以为没办法写后来发现要给网卡配置一个网段
ifconfig ens3:1 192.168.1.3
移除的命令是ip addr del ip/netmask dev 别名 设置完后重新启动一下dhcp服务
要注意写完脚本要用chmod +x不然坑爹的考试系统判别不了
有几道题目会轮换,所以运维的题库也要看看
其他基本没什么了都是送分的

UCE

容器

容器的代表的是一个个操作系统,docker就像我们操作系统里面的一个小的操作系统。
当一些大型公司里容器很多的时候就需要进行编排,市面上现在有许多专业的编排工具。

openstack

Rackspace+NASA共同成立了openstack
云计算有三种工作模式:Iaas Paas SaaS
User:登陆的用户 Token:令牌 用户凭据:密码 serverice 服务 端点目录