zero

zero implies everything

du​(disk usage的缩写,磁盘使用情况)是一个标准Unix程序,用于估量文件或文件夹的磁盘使用情况。

默认情况下,du​显示当前目录每个文件与目录的被分配磁盘空间的情况。链接文件将会显示其本身大小而非其链接对象;目录则会显示其内容的大小。

用途

  • 检查某个目录的大小:用来查看一个目录及其子目录占用的空间,以便做清理或备份。
  • 找出占用大量磁盘空间的文件或目录:通过 du​ 命令,你可以定位磁盘占用较大的文件或子目录,以便做进一步操作。
  • 查看文件系统使用情况:可以通过限制深度来快速查看文件系统中各个目录的占用情况。

用法

du [options] [file|directory…]

阅读全文 »

简介

将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,即文件传输, 是一项基本的网络应用。很多时候有这样的需求:网站设计者将构成网站内容的文件批量上传到他们的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)安装

  1. yum下载

    1
    sudo yum install vsftpd
  2. 开启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 # 下次开机自己启动
  3. 防火墙开通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 # 重启防火墙
阅读全文 »

题目描述

给你一个整数 x​ ,如果 x​ 是一个回文整数,返回 true​ ;否则,返回 false​ 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121​ 是回文,而 123​ 不是。

  • 示例 1:

    输入: x = 121
    输出: true

  • 示例 2:

    输入: x = -121
    输出: false
    解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

  • 示例 3:

    输入: x = 10
    输出: false
    解释: 从右向左读, 为 01 。因此它不是一个回文数。

解题思路

  1. 最简单的就是将x转化为字符串,然后使用左右两个指针获取来进行对应比较,这里就不再赘述;

  2. 省去转化为字符串这一步,使用数学的方式获取对应位上的数字进行比较,这里给出C++代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    class 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;
    }
    };
  3. 使用反转数字(revertedNum)的方式(题解给出的“奇淫技巧”),这里给出两个形象的例子帮助理解:


    1. x = 121

    2. x = 12 | revertedNum = 1

    3. x = 1 | revertedNum = 12

    4. if revertedNum/10 == x,是回文数,反之则不是 // 上一步revertedNum > x 说明左右两部已经形成,而中间是2或是3都无影响,因此除去之后得到对应的两个要素


    1. x = 2112
    2. x = 211 | revertedNum = 2
    3. x = 21 | revertedNum = 21
    4. if revertedNum == x,是回文数,反之则不是 // 上一步revertedNum == x 说明左右两部已经形成,因此除去之后,得到左半部和右半部

    根据上述的两个例子,去除特殊情况(x=10,x=100不是回文),得到如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class 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的全称是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,以及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系统登录需要用户名和密码,但是不同的用户拥有不同的权限。有一位特殊的存在: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未变)。

阅读全文 »

crontab​ 是一个用于管理用户的定时任务调度工具。它允许用户设置在特定时间自动运行的命令或脚本,常用于定期执行备份、系统监控、数据处理等任务。

atd – 执行一次性命令的守护进程

生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。

在 Linux 系统里,我们同样也有类似的需求。比如我们想在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系统状态,等等。

但我们不可能一直守在电脑前,毕竟我们也需要下班/睡觉,还要陪对象(new一个也行)。而且即使在上班期间,如果到点了还需要人工操作,未免效率太低了。

at​ 命令就是为这个需求而诞生的。使用 at​ 命令,你可以在特定时间自动完成你所设定的任务,也可以实现自动化,非常方便快捷!

阅读全文 »

内核版本

Linux内核版本:x.y.r(主版本号.次版本号.修正版本号)次版本号为奇数,则内核版本为测试版本,次版本号为偶数,则内核版本为稳定版本

查看指令

1
2
3
4
5
#完整信息
cat /proc/version

#版本号
uname -r

发行版本

发行版本 说明
RHEL Redhat公司商业化运作发行的版本
SuSE 流行于欧洲的多语言版本
CentOS 模仿RHEL的免费发行版本,配置文件、配置名称、路径与其一致
openSuSE 模仿SuSE的免费发行版本
Debian 一种流行的非商业性质的发行版本
ubuntu Debian的精简版本
Fedora Redhat9.0以后延续的开发版本,Red Hat Linux的社区支持但受红帽公司赞助
Kylin 麒麟操作系统,由中国的操作系统开发团队开发,基于 Ubuntu 定制而来
阅读全文 »
0%