ftp服务与虚拟用户配置
简介
将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,即文件传输, 是一项基本的网络应用。很多时候有这样的需求:网站设计者将构成网站内容的文件批量上传到他们的Web服务器,计算机之间批量传输文件等,而ftp协议可以很好地满足这种需求。
ftp(file transport protocol)文件传输协议,是TCP/IP协议组中的协议。ftp协议包含两个部分,1是服务器,2是客户端。其中ftp服务器用来存储文件,而客户端通过ftp协议访问ftp服务器上的资源。
默认情况下,ftp协议使用20和21端口,其中20用于传输数据,21用于传输控制信息。
ftp服务(Very Secure FTP Daemons, vsftpd)安装
yum下载
1
sudo yum install vsftpd
开启ftp服务
1
2
3
4
5
6# 查看ftp服务的状态
sudo systemctl status vsftpd # 此时是inactive(dead),同时发现CGroup行:
# ftp服务守护进程是/usr/sbin/vsftpd,
# 配置文件/etc/vsftpd/vsftpd.conf
sudo systemctl start vsftpd # 打开ftp服务
sudo systemctl enable vsftpd # 下次开机自己启动防火墙开通21端口
1
2
3
4#为ftp开通21号端口
sudo firewall-cmd --zone=public --permanent --add-port=21/tcp
sudo firewall-cmd --zone=public --permanent --add-service=ftp
sudo firewall-cmd --reload # 重启防火墙
No.9 回文数 (easy)
题目描述
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121
是回文,而 123
不是。
示例 1:
输入: x = 121
输出: true示例 2:
输入: x = -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:
输入: x = 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
解题思路
最简单的就是将x转化为字符串,然后使用左右两个指针获取来进行对应比较,这里就不再赘述;
省去转化为字符串这一步,使用数学的方式获取对应位上的数字进行比较,这里给出C++代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24class Solution {
public:
bool isPalindrome(int x) {
// 负数不是回文数
if (x < 0)
return false;
// 获取位数digits,更简洁的办法可以用log10(Number)+1,
// 但需除开Number为0的情况
int digits = 0;
int tmp = x;
while (tmp != 0) {
tmp /= 10;
digits++;
}
// 第1位与最后1位对应要相等,以此类推,如果有反例则不是回文
for (int i = 0; i <= digits / 2 - 1; i++) {
if (((x / (int)(pow(10.0, digits - i - 1))) % 10) !=
((x / (int)(pow(10.0, i))) % 10))
return false;
}
return true;
}
};使用反转数字(revertedNum)的方式(题解给出的“奇淫技巧”),这里给出两个形象的例子帮助理解:
x = 121
x = 12 | revertedNum = 1
x = 1 | revertedNum = 12
if revertedNum/10 == x,是回文数,反之则不是 // 上一步revertedNum > x 说明左右两部已经形成,而中间是2或是3都无影响,因此除去之后得到对应的两个要素
- x = 2112
- x = 211 | revertedNum = 2
- x = 21 | revertedNum = 21
- if revertedNum == x,是回文数,反之则不是 // 上一步revertedNum == x 说明左右两部已经形成,因此除去之后,得到左半部和右半部
根据上述的两个例子,去除特殊情况(x=10,x=100不是回文),得到如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14class Solution {
public:
bool isPalindrome(int x) {
// 负数不是回文数;除0以外,个位为0不是回文
if (x < 0 || x % 10 == 0 && x/10 != 0)
return false;
int revertedNum = 0;
while( revertedNum < x ){
revertedNum = revertedNum * 10 + x % 10;
x /= 10;
}
return revertedNum/10 == x || revertedNum == x;
}
};
磁盘阵列RAID
RAID的全称是Redundant Array of Independent Disks,中文译作独立硬盘冗余阵列, 简称磁盘阵列。 RAID利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升读取性能或数据备份,或是两者同时提升。
介绍
RAID分为多种存储模式,亦或称多种层级,RAID层级的命名会以RAID开头并带数字,例如:RAID 0、RAID 1、RAID 10等等。每种层级在理论上均有其优缺点,要么在上述两个目的之间寻求平衡,要么为单一的目的。
简单来说,RAID可以看成一块逻辑硬盘,而不去管实际的物理实现。
RAID 0(条带化)/RAID 1(镜像)
RAID 0亦称为带区卷,它将两个以上的磁盘并联起来,成为一个大容量的磁盘。RAID 0模式下,数据被分成固定大小的块,分散存储在多个磁盘驱动器上,而不进行冗余备份。例如,如果有两个驱动器(驱动器0和驱动器1),数据A分为8块,其第一个部分A1存储在驱动器0上,第二个部分A2存储在驱动器1上,以此类推。这种条带化(striping) 的方式可以同时从多个驱动器读取或写入数据,从而提高系统的性能。RAID 0的优势是高速读写,但一旦其中一个磁盘故障,整个数据集将无法恢复。
LVM磁盘空间管理
什么是LVM,以及PV,PE,VG,LV等重要概念。
LVM(Logical Volume Manager)本文译作逻辑卷管理器,是一种磁盘管理技术,为操作系统提供了更为灵活的管理存储设备方式。LVM提供了如下组件:
物理卷(Physical Volume, PV),LVM 的基础存储设备,通常是物理硬盘、分区或 LVM 兼容的设备。
卷组(Volume Group, VG),由一个或多个物理卷组成的逻辑存储池。卷组中的空间可以被多个逻辑卷共享。
逻辑卷(Logical Volume, LV),从卷组中划分出的存储单元,类似于传统分区。逻辑卷可以格式化为文件系统并用于存储数据。
物理扩展(Physical Extent, PE),物理卷被划分为多个相同大小的块,这些块就是物理扩展。每个物理扩展的大小通常是 4 MB 或 8 MB,具体取决于系统配置。
Linux账号和群组
Linux系统登录需要用户名和密码,但是不同的用户拥有不同的权限。有一位特殊的存在:root—— 系统管理员,它在系统中拥有全部权限,可以管理用户的文件权限、目录权限等等。接下来就围绕账号与群组进行具体讨论。
Linux账号与群组
UID和GID
对于用户,记住Linux系统的用户名和密码足矣,然而对于Linux主机,则需要记住用户的UID(User ID)和密码。首先我们要有一个概念:Linux系统由文件组成,包括目录也是文件组成。 Linux规定所有的配置文件都保存在/etc目录下,而每个用户名和UID的对应则保存在/etc/passwd文件中。以前用户的密码也保存在/etc/passwd文件中,但是目前用户的密码在/etc/shadow文件中密文保存。
每个用户都必须属于一个组,在未指定所属组的情况下,用户的组为自己本身。同样,组由于GID(Group ID)被Linux主机记住,组名和GID的对应保存在/etc/group文件中。
每个Linux文件都属于用户和组,Linux系统依据/etc/passwd和/etc/group中的内容,找到UID/GID对应的用户名和组名显示出来。因此,若随意更改/etc/passwd中用户的UID,会导致此用户的文件无法显示名字,并且/home/用户 无法登入(因为UID更改,而家目录所属UID未变)。
Linux crontab
crontab
是一个用于管理用户的定时任务调度工具。它允许用户设置在特定时间自动运行的命令或脚本,常用于定期执行备份、系统监控、数据处理等任务。
atd – 执行一次性命令的守护进程
生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。
在 Linux 系统里,我们同样也有类似的需求。比如我们想在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系统状态,等等。
但我们不可能一直守在电脑前,毕竟我们也需要下班/睡觉,还要陪对象(new一个也行)。而且即使在上班期间,如果到点了还需要人工操作,未免效率太低了。
at
命令就是为这个需求而诞生的。使用 at
命令,你可以在特定时间自动完成你所设定的任务,也可以实现自动化,非常方便快捷!
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1 | $ hexo new "My New Post" |
More info: Writing
Run server
Linux版本
内核版本
Linux内核版本:x.y.r(主版本号.次版本号.修正版本号)次版本号为奇数,则内核版本为测试版本,次版本号为偶数,则内核版本为稳定版本
查看指令
1 | #完整信息 |
发行版本
发行版本 | 说明 |
---|---|
RHEL | Redhat公司商业化运作发行的版本 |
SuSE | 流行于欧洲的多语言版本 |
CentOS | 模仿RHEL的免费发行版本,配置文件、配置名称、路径与其一致 |
openSuSE | 模仿SuSE的免费发行版本 |
Debian | 一种流行的非商业性质的发行版本 |
ubuntu | Debian的精简版本 |
Fedora | Redhat9.0以后延续的开发版本,Red Hat Linux的社区支持但受红帽公司赞助 |
Kylin | 麒麟操作系统,由中国的操作系统开发团队开发,基于 Ubuntu 定制而来 |