Linux命令与工具一.用户与用户组管理1.1用户管理1.添加用户# 创建新用户gzh,指定用户目录为/usr/gzh并自动创建登录目录,id为876useradd -d /usr/gzh -m gzh -u 876# 查看新建用户的属性信息tail -l /etc/passwd# 查看root相关的属性信息grep root /etc/passwd
2.设置用户密码# 为gzh用户设置密码[root@gzh-8 ~]# passwd gzh更改用户 gzh 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
3.删除用户# 强制删除用户gzh及其相关文件userdel -rf gzh
4.修改用户信息# 修改用户gzh的用户id为678usermod -u 678 gzh
1.2用户组管理1.新增用户组# 创建用户组guo1,指定组id为550groupadd -g 550 guo1
2.删除用户组# 删除组guo1groupdel group1
3.修改用户组属性# 新建组ID为550的用户组g ...
第五章 网络服务1.DHCP服务1.1DHCP定义DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。它是一种流行的Client/Server协议,一般用于为主机或者为路由器等指定相关的配置信息。DHCP服务在企业和家庭中得到了大量的应用,它能够自动分配ip地址以及一些其他的相关信息,整个过程对客户透明。
1.2实验规划
该实验需要两台虚拟机,一台作为DHCP服务器另一台做为主机用来验证dhcp服务是否可用.
首先新增一个网卡将他的DHCP服务关掉,将主机的网卡设置为VMnet2
1.3实验过程
服务端
1.安装DHCP服务
yum -y install dhcp*
2.修改dhcp配置文件
[root@gzh-cs8 ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf[root@gzh-cs8 ~]# vim /etc/dhcp/dhcpd.conf
在下面添加下面的内容
subn ...
第六章 集中化运维工具—Ansible和SaltStack安装Ansible.一.Ansible1.1.安装Ansible安装ansible之前要准备三台虚拟机,而且确保你已经看完书上面的讲解才能知道后面为什么这么做,虚拟机信息如下表
主机名
IP地址
gzh-cs8
192.168.88.137
gzh-a1
192.168.88.138
gzh-a2
192.168.88.139
安装ansible
[root@gzh-cs8 ~]# yum install centos-release-ansible-29.noarch[root@gzh-cs8 ~]# yum -y install ansible[root@gzh-cs8 ~]# ansible --versionansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/sha ...
第四章 内核编译一.前期准备1.查看当前系统的内核版本[root@gzh-cs8 ~]# uname -r4.18.0-305.3.1.el8.x86_64
2.下载所需要的内核版本我们通过镜像网站下载所需的内核版本
https://mirrors.edge.kernel.org/pub/linux/kernel
我编译的是5.10.10版本的内核
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.10.tar.gz
我们可以下载下来通过远程连接工具将他传入到centos8里面,也可以通过rz命令上传,也可以通过wget直接下载到centos8中.
这里我们通过远程连接工具上传过去,完成后解压
[root@gzh-cs8 ~]# tar -zxvf linux-5.10.10.tar.gz linux-5.10.10/linux-5.10.10/.clang-formatlinux-5.10.10/.cocciconfiglinux-5.10.10/.get_maintainer.ignorelinux- ...
一、Python abs() 函数返回上一级
Python 内置的 abs() 函数返回数字的绝对值
语法abs( x )
参数
参数
说明
x
数值表达式,可以是整数,浮点数,复数
返回值函数返回 x ( 数字 ) 的绝对值,如果参数是一个复数,则返回它的大小
例:s=abs(-20)x=abs(20.22)y=abs(119)print("abs(-20)=:",s)print("abs(20.22)=:",x)print("abs(119L)=:",y)#运行结果abs(-20)=: 20abs(20.22)=: 20.22abs(119L)=: 119
返回上一级
二、Python math.ceil() 函数返回上一级
Python math.ceil(x) 函数返回一个大于或等于 x 的的最小整数, 俗称天花板取整,可以与[math.floor()](#六、Python math.floor() 函数)进行比较
导入模块import math
语法math.ceil( x )
参数
参数
...
一、Python random.choice() 函数返回上一级
Python random.choice() 函数随机的返回一个列表,元组或字符串的元素(字符)
导入模块import random
语法random.choice( seq )
参数
参数
说明
seq
一个列表,元组或字符串
返回值返回随机项
例:下面的代码使用 random.choice() 函数返回参数中的随机项
import random #随机抽出一个ls=(1,2,3,4,5,6,'g','z','h')print(random.choice(ls))print(random.choice(range(12)))#运行结果2 96 10......
二、Python random.randrange() 函数返回上一级
Python random.randrange() 函数返回指定递增基数集合中的一个随机数,基数缺省值为 1
导入模块import random
语法random.randrange ([start ...
python学习日记python简单实例
一、标准数据类型内存中存储的数据可以有多种类型
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储
Python 3 定义了一些标准类型,用于存储各种类型的数据
Python 3 有六个标准的数据类型
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Set ( 集合 )
Dictionary(字典)
Python数字数字数据类型用于存储数值
它们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象
当指定一个值时,Number 对象就会被创建
var1=1var2=10
还有del语法
del var1[,var2[,var3[....,varN]]]
如上图是删除单个元素的,如果print(var1)就会报错。
删除完这个元素就不存在了。
还可以使用del语句删除单个或多个对象的引用
del vardel var_a, var_b
就像前面的一样,简单理解就是删除就没有了。
Python 3 支持四种不同的数字类型
int (有符号整型 )
float ( 浮点型 ...
//2022.10.11#include <stdio.h>#include <stdlib.h>#define N 20//定义三元组类型typedef struct triple{ int i,j;//行列下标 int e;//非零元的值}triple;//定义三元组顺序表的类型typedef struct TS{ triple data[N+1]; int mu,nu,tu;//行数,列数,非零元个数}TS;TS M,T;//定义一个三元组顺序表//三元组表的建立void creat(){ int r,c,x;M.tu=0;//行 列 值 下表 printf("请输入稀疏矩阵的行数和列数:"); scanf("%d%d",&M.mu,&M.nu); printf("请输入值:"); for(r=1;r<=M.mu;r++) for(c=1;c<=M.nu;c++) { scanf("%d&qu ...
//2022.12.2二分查找#include<stdio.h>#include<stdlib.h>#define N 20typedef struct sqlist{ int *elem; int length; int listsize; }sql;sql L;void InitList(){ L.elem=(int *)malloc(N*sizeof(int)); if(!L.elem) exit(0); L.listsize=N; L.length=0; }void input(int n){ int i; printf("请输入值:"); for(i=1;i<=n;i++) scanf("%d",&L.elem[i]); L.length=n;}void output(){ int i; for(i=1 ...
#include<stdio.h>#include<stdlib.h>//定义二叉链表节点的类型typedef struct bitnode { char data; struct bitnode* lchild, * rchild;}bitnode;//先建立二叉链表bitnode* creat() { bitnode* T; char ch; scanf("%c", &ch); if (ch == '.') return NULL; else { T = (bitnode*)malloc(sizeof(bitnode)); if (!T) exit(0); T->data = ch; //按照根左右的顺序建立 T->lchild = creat(); T->rchild = creat(); return T; }}//先序遍历void preorder(bitnode* T) { if (T) ...