美文网首页
Linux基础-系统管理

Linux基础-系统管理

作者: CoderInsight | 来源:发表于2022-08-03 10:28 被阅读0次

    二、系统管理

    1.系统信息、硬件资源

    (1).CPU

    CPU是操作系统稳定运行的根本,CPU的速度与性能在很大程度上决定了系统整体的性能,因此,CPU数量越多、主频越高,服务器性能也就相对越好

    # 1,查看物理CPU个数
    $ cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
    # 2,查看逻辑cpu个数
    $ cat /proc/cpuinfo |grep "processor"|wc -l
    # 3,查看CPU多少核
    $ cat /proc/cpuinfo 
    # 4,动态查看cpu等信息(输入 top 命令之后再按数字 1 )
    $ top
    

    (2).内存

    Linux系统采用了物理内存虚拟内存(SWAP内存)两种方式,虚拟内存虽然可以缓解物理内存的不足,但是占用过多的虚拟内存,应用程序的性能将明显下降,要保证应用程序的高性能运行,物理内存一定要足够大;所以我们在搭建大数据集群的时候一般会禁用SWAP内存分区。

    (3).磁盘

    1).磁盘信息和网络信息的查看

    # 检测磁盘空间(通过-h参数转成带单位的显示方式:): 
    $ df -h
    # 显示所有文件系统的磁盘使用情况:
    $ df -a
    # 显示各指定文件系统的磁盘空间使用情况:
    $ df -t
    # du命令用于统计目录或文件所占磁盘空间的大小:
    $ du -h /root
    # 查看当前网络信息: 
    $ ifconfig
    # 测试远程主机的连通性: 
    $ ping 10.30.59.130
    
    # 查询指定目录中文件大小超过500M的
    find /  -type f -size +500M
    

    2).磁盘I/O性能

    磁盘的I/O性能会直接影响应用程序的性能,尤其是在一个频繁读写的应用中,如磁盘I/O得不到满足,就会导致应用停滞。常见的提高磁盘I/O的方式是使用磁盘RAID技术(廉价磁盘冗余阵列):

    • RAID 0 : 通过把多块硬盘粘合成一个容量更大的硬盘组,提高了磁盘的性能和吞吐量。这种方式成本低,要求至少两个磁盘,但是没有容错和数据修复功能,因而只能用在对数据安全性要求不高的环境中。
    • RAID 1 : 也就是磁盘镜像,通过把一个磁盘的数据镜像到另一个磁盘上,最大限度地保证磁盘数据的可靠性和可修复性,具有很高的数据冗余能力,但磁盘利用率只有50%,因而,成本最高,多用在保存重要数据的场合。
    • RAID 5 : 采用了磁盘分段加奇偶校验技术,从而提高了系统可靠性,RAID 5读出效率很高,写入效率一般,至少需要3块盘。允许一块磁盘故障,而不影响数据的可用性。

    (4),查看GPU的版本

    # 适用于英伟达的gpu显卡
    nvidia-smi
    

    (5),查看Linux的版本信息

    # 方法1:登陆Linux,在终端输入 
    cat /etc/redhat-release 
    # 方法2:登陆Linux,在终端输入 
    cat /etc/issue
    # 方法3:登陆Linux,在终端输入
    ## 此时需要yum安装
    yum install redhat-lsb -y
    ## 查看版本等信息
    lsb_release -a
    

    2.进程信息、主机管理

    1.查看进程信息(3种):
        (1),查看进程的详细状况:ps
        (2),显示终端上所有的进程,包括其他用户的进程:ps -a
        (3),显示进程的详细状态:ps -u
        (4),查看进程(查看redis的进程):ps -ef | grep redis
        (5),动态显示进程(top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以在使用top命令时加上-d 来指定显示信息更新的时间间隔。):top
        (6),在kali中没有体现,但是也可以查看进程的详细信息:ntop
        (7).netstat -anp | grep 进程号    # 查看该进程网络信息
        (8).netstat -nlp | grep 端口号     # 查看网络端口号占用情况
    
    2.杀死进程(根据查看的进程信息中的pid号(数字)进行删除):
        普通杀:kill 232
        强制杀:kill -9 232
    3.关机:
        立刻关机:shutdown -h now
        指定在某个时间(20:20)点关机:shutdown -h 20:20
    4.重启: reboot
    
    ps 选项 含义
    -a 显示终端上的所有进程,包括其他用户的进程
    -u 显示进程的详细状态
    -x 显示没有控制终端的进程
    -w 显示加宽,以便显示更多的信息
    -r 只显示正在运行的进程
    top命令执行后对应的按键 含义
    M 根据内存使用量来排序
    P 根据CPU占有率来排序
    T 根据进程运行时间的长短来排序
    U 可以根据后面输入的用户名来筛选进程
    K 可以根据后面输入的PID来杀死进程。
    q 退出
    h 获得帮助

    3,yum源管理

    (1),Centos换源(在线)

    wget的包

    # 0.需要先使用已经准备好的prm包安装好wget
    $ rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm
    # 1.首先备份系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repo
    $ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    # 2.下载ailiyun的yum源配置文件到/etc/yum.repos.d/
    $ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    # 3.运行yum makecache生成缓存
    $ yum makecache
    # 4.这时候再更新系统就会看到以下mirrors.aliyun.com信息
    $ yum -y update
    
    -------------------------分割线------------------------------
    
    # 5.有些时候失败的话:
    # (1).新添加配置CentOS的DNS:
    $ vi   /etc/resolv.conf
    $ nameserver   8.8.8.8
    
    # (2).重新执行wget命令,然后另外在生成缓存的时候可以先清除缓存
    $ yum clean all
    
    # (3),附另外的参考连接
    https://blog.csdn.net/qingfenggege/article/details/80394564
    

    (2),[[6-配置本地镜像源]]

    • 配置本地文件源(单机)
    • 修改本地文件源为局域网访问http源(联机)

    (3),查看 yum 命令安装的包的路径

    # 例如查看使用yum源安装 XXX 的安装目录,此时会将所所有与XXX相关的rpm包显示出来
    $ rpm -ql XXX
    

    4,rpm包管理

    主要介绍 rpm 的相关命令。

    # 1.查看已经安装的rpm包,可以指定只看其中的一个为XXX的
    $ rpm -qa | grep xxx
    # 2.安装rpm包,例如安装xxx.rpm
    $ rpm -ivh xxx.rpm
    # 3.删除rpm包
    $ rpm -e xxx.rpm
    # 4.在删除包时不检查依赖
    $ rpm -e --nodeps XXX.rpm
    

    5.网络配置管理

    (1),设置静态ip

    该笔记在整理的时候都是以虚拟机自动获取ip地址的方式去获取的,所以在这单独整理手动更改ip的步骤。

    # 1,打开网络配置文件(网卡名称不唯一,在其他机器中可能不是这个,一般是在那个目录下的第一个文件名称)
    $ vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
    # 2,修改其中的两个选项和添加几个选项
    # (1).修改的选项
    BOOTPROTO=static
    ONBOOT=yes
    # (2).追加的选项(ip,子网掩码,网关(在虚拟网络编辑器可中可以查看),DNS)
    IPADDR=192.168.52.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.52.1
    DNS1=8.8.8.8
    
    # 3,配置完成之后,重启网卡
    service network restart
    
    # 或者使用如下的命令重启
    systemctl restart network  
    
    
    
    
    ZONE=public
    

    (2).CentosMini班安装之后没有ifconfig★

    最小化安装后,可以用 ip addr 命令查看网络信息。

    那么习惯ifconfig的用户,则需要 yum -y install net-tools 即可

    6.时间管理

    (1),日期时间操作

    1.查看当前日历:
        查看当前月份的日历: cal
        查看指定年份的日历: cal -y 2018
    
    2.显示当前时间: date
    # date [MMDDhhmm[[CC]YY][.ss]] +format
    CC为年前两位yy为年的后两位,前两位的mm为月,后两位的mm为分钟,dd为天,hh为小时,ss为秒。如: date 010203042016.55。
    显示时间格式(date '+%y,%m,%d,%H,%M,%S'):
    
    3.Linux hwclock命令用于显示与设定硬件时钟
    # 参数:
    hwclock # 直接敲命令显示的当前时间
    –hctosys  # 将系统时钟调整为与目前的硬件时钟一致。
    –set –date=<日期与时间>  # 设定硬件时钟。
    –show  # 显示硬件时钟的时间与日期。
    –version  # 显示版本信息。
    
    format格式 含义
    %Y,%y
    %m
    %d
    %H
    %M
    %S

    (2),时间同步

    通过网络连接外网进行时钟同步,必须保证虚拟机连上外网

    三台机器都安装ntpdate

    yum -y install ntpdate
    

    阿里云时钟同步服务器

    ntpdate ntp4.aliyun.com
    

    三台机器定时任务

    crontab -e
    

    添加如下内容

    */1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
    

    7.防火墙管理

    (1),firewall-cmd

    1),基本命令格式

    • 通用选项
    -h, --help    # 显示帮助信息;
    -V, --version # 显示版本信息. (这个选项不能与其他选项组合);
    -q, --quiet   # 不打印状态消息;
    
    • 状态选项
    --state                # 显示firewalld的状态;
    --reload               # 不中断服务的重新加载;
    --complete-reload      # 中断所有连接的重新加载;
    --runtime-to-permanent # 将当前防火墙的规则永久保存;
    --check-config         # 检查配置正确性;
    
    • 日志选项
    --get-log-denied         # 获取记录被拒绝的日志;
    --set-log-denied=<value> # 设置记录被拒绝的日志,只能为 'all','unicast','broadcast','multicast','off' 其中的一个;
    

    2),实例

    A,装开启和关闭防火墙
    # 安装firewalld
    yum install firewalld firewall-config
    
    systemctl start  firewalld # 启动
    systemctl stop firewalld  # 停止
    systemctl enable firewalld # 启用自动启动
    systemctl disable firewalld # 禁用自动启动
    systemctl status firewalld # 或者 firewall-cmd --state 查看状态
    
    # 关闭服务的方法
    # 你也可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下:
    systemctl stop firewalld
    systemctl disable firewalld
    yum install iptables-services
    systemctl start iptables
    systemctl enable iptables
    
    B,开发端口示例
    # 查看防火墙详细信息(只有重新加载防火墙之后才会生效)
    firewall-cmd --list-all
    
    # 设置开放端口号(ES): 9200
    # 指定将当前防火墙的规则永久保存
    # 默认是是对所有ip放行的
    firewall-cmd --add-port=9200/tcp --permanent
    
    # 关闭某个端口的访问权限
    firewall-cmd --remove-port=3000/tcp --permanent
    
    # 设置开发端口号(MySQL): 3306
    # --zone 指定生效的区域,默认是 public
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    # 重新加载防火墙
    firewall-cmd --reload
    
    # 验证端口,只查询防火墙开放端口,中间使用空格隔开
    firewall-cmd --zone=public --list-port
    
    # 查看当前区域信息
    firewall-cmd --get-active-zones
    
    # 查看当前放行的服务
    # 单独测试是否含有 ssh
    firewall-cmd --get-services | grep ssh
    
    C,控制端口 / 服务 (小结)

    可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名。虽然开放 http 服务就是开放了 80 端口,但是还是不能通过端口号来关闭,也就是说通过指定服务名开放的就要通过指定服务名关闭;通过指定端口号开放的就要通过指定端口号关闭。还有一个要注意的就是指定端口的时候一定要指定是什么协议,tcp 还是 udp。知道这个之后以后就不用每次先关防火墙了,可以让防火墙真正的生效。

    firewall-cmd --add-service=mysql        # 开放mysql端口
    firewall-cmd --remove-service=http      # 阻止http端口
    firewall-cmd --list-services            # 查看开放的服务
    firewall-cmd --add-port=3306/tcp        # 开放通过tcp访问3306
    firewall-cmd --remove-port=80tcp        # 阻止通过tcp访问3306
    firewall-cmd --add-port=233/udp         # 开放通过udp访问233
    firewall-cmd --list-ports               # 查看开放的端口
    
    D,伪装 IP
    firewall-cmd --query-masquerade # 检查是否允许伪装IP
    firewall-cmd --add-masquerade   # 允许防火墙伪装IP
    firewall-cmd --remove-masquerade # 禁止防火墙伪装IP
    
    E,端口转发

    端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定 ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。 如果配置好端口转发之后不能用,可以检查下面两个问题:

    1. 比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了
    2. 其次检查是否允许伪装 IP,没允许的话要开启伪装 IP
    firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
    firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1 # 将80端口的流量转发至192.168.0.1
    firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
    
    F:补充
    source: 根据源地址过滤(优先级最高)
    interface: 根据网卡过滤(优先级次高)
    service: 根据服务名过滤
    port: 根据端口过滤
    icmp-block: icmp 报文过滤,按照 icmp 类型配置
    masquerade: ip 地址伪装
    forward-port: 端口转发
    rule: 自定义规则
    
    # 查看是否开启
    systemctl status firewalld.service
    # 打开防火墙
    systemctl start firewalld.service
    # 停用防火墙
    systemctl disable firewalld
    # 禁用防火墙
    systemctl stop firewalld.service
    
    # 开机启动
    systemctl enable firewalld
    # 取消开机启动
    systemctl disable firewalld
    
    # 查看运行状态
    firewall-cmd --state
    # 查看接口信息
    firewall-cmd --list-all
    
    # 更新防火墙规则方法1:无需断开连接,动态更改规则
    firewall-cmd --reload
    # 更新防火墙规则方法2:断开连接,以重启的方式更改规则
    firewall-cmd --complete-reload
    
    # 查看帮助
    firewall-cmd --help
    --zone=NAME # 指定 Zone
    --permanent # 为永久生效
    --timeout=seconds # 持续一段时间,到期后自动移除,经常用于调试,且不能与 --permanent 同时使用
    
    # 追加一个8181端口,永久有效
    firewall-cmd --add-port=8181/tcp --permanent
    # 追加一段端口范围
    firewall-cmd --add-port=6000-6600/tcp
    # 开放 ftp 服务
    firewall-cmd --add-service=ftp
    # 添加eth0 接口至 public 信任等级,永久有效
    firewall-cmd --zone=public --add-interface=eth0 --permanent
    
    # 配置 public zone 的端口转发
    firewall-cmd --zone=public --add-masquerade
    # 然后转发 tcp 22 端口至 9527
    firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527
    # 转发 22 端口数据至另一个 ip 的相同端口上
    firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.123
    # 转发 22 端口数据至另一 ip 的 9527 端口上
    firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527:toaddr=192.168.1.100
    
    # IP 封禁
    firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.123' reject"
    # IP 解除封禁
    firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.123' accept"
    
    # 通过 ipset 来封禁 ip
    firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip
    firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.123
    # 封禁网段
    firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net
    firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.0/24
    # 倒入 ipset 规则 blacklist,然后封禁 blacklist
    firewall-cmd --permanent --zone=public --new-ipset-from-file=/path/blacklist.xml
    firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'
    

    (2),iptables

    iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理;

    而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。

    换句话说,当前在Linux系统中其实存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。虽然这些工具各有优劣,但它们在防火墙策略的配置思路上是保持一致的。

    一般来说,从内网向外网发送的流量一般都是可控且良性的,因此我们使用最多的就是INPUT规则链,该规则链可以增大黑客人员从外网入侵内网的难度。

    但是,仅有策略规则还不能保证社区的安全,保安还应该知道采用什么样的动作来处理这些匹配的流量,比如“允许”、“拒绝”、“登记”、“不理它”。这些动作对应到iptables服务的术语中分别是ACCEPT(允许流量通过)、REJECT(拒绝流量通过)、LOG(记录日志信息)、DROP(拒绝流量通过)。

    1,参考地址(1)--linux系统中查看己设置iptables规则

    2,参考地址(2)--第8章 Iptables与Firewalld防火墙

    3,参考地址(3)--Centos7修改iptables规则并开机永久生效两种方式

    (1),iptables中常用的参数以及作用

    参数 作用
    -P 设置默认策略
    -F 清空规则链
    -L 查看规则链,此时查询结果中会出现anywhere,用来表示任意的ip
    -n 会以数字的方式显示filter表中的相应规则。如果没有-n,规则中可能会出现anywhere,有了-n,它会变成0.0.0.0/0
    -A 在规则链的末尾加入新规则
    -I num 在规则链的头部加入新规则
    -D num 删除某一条规则
    -s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
    -d 匹配目标地址
    -i 网卡名称 匹配从这块网卡流入的数据
    -o 网卡名称 匹配从这块网卡流出的数据
    -p 匹配协议,如TCP、UDP、ICMP
    --dport num 匹配目标端口号
    --sport num 匹配来源端口号

    (2),通过删除规则关闭端口(如22端口)

    ## 查看默认表中的规则
    # -n: 是数字的方式展示
    # -L: 是指定查询时使用的规则规则链名称,默认是查询所有的
    # --line-number: 找出该规则的行号
    [root@zhsq01 ~]# iptables -n -L  --line-number
    .....
    # 此时省略一些输出内容
    .....
    
    ## 1,查看 进口规则链中 IN_public_allow 所有的规则
    [root@zhsq01 ~]# iptables -n -L IN_public_allow  --line-number
    Chain IN_public_allow (1 references)
    num  target     prot opt source               destination         
    1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW
    2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:82 ctstate NEW
    3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306 ctstate NEW
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 ctstate NEW
    5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9000 ctstate NEW
    6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:19880 ctstate NEW
    
    ## 2,删除 22 端口对应的 num 为 1
    [root@zhsq01 ~]# iptables -D IN_public_allow 1
    
    ## 3,再查看当前开放的端口
    [root@zhsq01 ~]# iptables -n -L IN_public_allow  --line-number
    Chain IN_public_allow (1 references)
    num  target     prot opt source               destination         
    1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:82 ctstate NEW
    2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:3306 ctstate NEW
    3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 ctstate NEW
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9000 ctstate NEW
    5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:19880 ctstate NEW
    
    ############# 注意: ###################
    ## 4,注意此时只是会临时生效,在重启之后会失效,所以需要我们我们执行以下操作,但是Cetnos7中默认是使用firewalld-cmd去管理,所以这个服务是没有开启的,还需要进一步操作,此时整理笔记并没有深入研究。因为此时已经可以满足客户的需求了。
    [root@k8s-master ~]# service iptables reload
    

    (3),更改ssh端口22为其他端口

    1,有两种更改策略,一种是保持SeLinux和防火墙开着的情况下去进一步做修改

    2,另外一种是将SeLinux和防火墙直接关闭,然后去修改对应的端口即可,此时就在重启sshd服务的时候就不会报错了。

    1),备份ssh配置文件

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    

    2),修改配置文件

    sudo vi /etc/ssh/sshd_config
    
    # If you want to change the port on a SELinux system, you have to tell
    # SELinux about this change.
    # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
    #Port 22
    Port 19880
    #AddressFamily any
    #ListenAddress 0.0.0.0
    #ListenAddress ::
    

    3),通过 SELinux 启用新创建的端口

    默认情况下,SELinux 只允许端口 22 用于 SSH,现在需要做的是通过 SELinux 启用新创建的端口;

    其实最简答的方式是直接将SeLinux关闭,然后去更换端口,从而实现不安装依赖的方式实现端口的转换。

    ## 先安装依赖
    ## 防止出现报错:如果执行以上命令后报错:semanage command not found,执行这条命令来安装 semanage
    sudo yum -y install policycoreutils-python
    # 通过SeLinux放行19880端口
    sudo semanage port -a -t ssh_port_t -p tcp 19880
    

    4),通过防火墙开启端口号

    ## 添加防火墙规则--端口
    sudo firewall-cmd --permanent --zone=public --add-port=19880/tcp
    
    ## 重新加载防火墙
    sudo firewall-cmd --reload
    
    ## 查看当前开放的端口
    firewall-cmd --list-ports
    

    5),重启ssh服务

    sudo systemctl restart sshd.service
    
    ## 验证端口是否生效
    systemctl status sshd.service
    

    6),验证服务是否在新端口上运行

    ss -tnlp | grep ssh
    

    7),测试使用指定端口登录

    ssh root@192.168.0.1 -p 19880
    

    8),补充:

    此时是直接在配置文件中将22端口关闭了,也可以再单独配置关闭22端口;

    其他参考地址:

    1,更改 CentOS 7 默认的 SSH 端口

    2,修改Centos7 SSH 端口

    8.其他命令整理

    1.nohup命令详解

    nohup command > /dev/null 2>&1 &

    • 1.nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( nohang up)。
    • 2."& 1" 更准确的说应该是文件描述符 1,而 1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了。
    • 3.STDOUT_FILENO:对应的数字代表其中:0 表示键盘输入; 1表示屏幕输出; 2表示错误输出.
    • 4."2>&1 &" 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了/dev/null文件(黑洞文件),即将标准出错也输出到/dev/null文件中。另外最后一个& ,是让该命令在后台执行。

    2.curl的使用

    curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

    #### 常用参数的使用案例
    # 1,不带有任何参数时,curl 就是发出 GET 请求。
    curl https://www.example.com
    
    # 2,-X参数指定 HTTP 请求的方法,比如此时可以发起post请求
    # 注意此时的协议名是严格区分大小写的
    curl -X POST https://www.example.com
    
    # 如果是 http 协议,可以直接使用 curl www.example.com 发起 GET 请求
    

    9.linux的零拷贝

    详细参考链接

    总结:(kafka面试中常问)

    “零拷贝” 描述的是CPU不执行拷贝数据从一块内存区域到另一块区域的任务的计算机操作。它通常用于在网络上传输文件时节省CPU周期和内存带宽。简单来说,零拷贝就是一种避免 CPU 将数据从一块存储拷贝到另外一块存储的技术

    “零拷贝”正是通过消除这些多余的拷贝来提升性能的在数据传输的过程中,避免数据在内核空间缓冲区和用户空间缓冲区之间进行拷贝,以及数据在内核空间缓冲区内的CPU拷贝

    10.安装字体

    • 查看已安装的中文字体
    [root@test_basic-jietiao ~]# fc-list :lang=zh
    [root@test_basic-jietiao ~]# 
    
    
    • 在/usr/fonts目录下新建文件夹,存放字体文件
    [root@test_basic-jietiao fonts]# cd /usr/share/fonts
    [root@test_basic-jietiao fonts]# ls
    default  dejavu
    [root@test_basic-jietiao fonts]# mkdir chinese
    [root@test_basic-jietiao fonts]# ls
    chinese  default  dejavu
    
    
    • 拷贝相关字体到当前新建的目录中
    [root@test_basic-jietiao fonts]# ls chinese
    arial unicode ms.ttf  arialuni.ttf  CG Times.ttf  simkai.ttf  simsun.ttc
    
    • 再次查看
    [root@test_basic-jietiao fonts]# fc-list :lang=zh
    KaiTi_GB2312,楷体_GB2312:style=Regular
    NSimSun,新宋体:style=Regular
    SimSun,宋体:style=Regular
    Arial Unicode MS:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
    
    • 扫描字体目录并生成字体信息的缓存
    [root@test_basic-jietiao fonts]# fc-cache
    [root@test_basic-jietiao fonts]# 
    
    

    11.帮助文档

    (1).--help

    # 一般是linux命令自带的帮助信息
    如:ls --help
    

    (2)man(有问题找男人,manual)

    # man是linux提供的一个手册,包含了绝大部分的命令、函数使用说明
    # 该手册分成很多章节(section),使用man时可以指定不同的章节来浏览,也可以直接使用"man ➕ 命令"的形式
    
    例:man ls ; man 2 printf
    
    # man中各个section意义如下:
    Standard commands(标准命令)
    System calls(系统调用,如open,write)
    Library functions(库函数,如printf,fopen)
    Special devices(设备文件的说明,/dev下各种设备)
    File formats(文件格式,如passwd)
    Games and toys(游戏和娱乐)
    Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
    Administrative Commands(管理员命令,如ifconfig)
    man是按照手册的章节号的顺序进行搜索的。
    # man设置了如下的功能键:
    
    功能键 功能
    空格键 显示手册页的下一屏
    Enter键 一次滚动手册页的一行
    b 回滚一屏
    f 前滚一屏
    q 退出man命令
    h 列出所有功能键
    /word 搜索word字符串

    相关文章

      网友评论

          本文标题:Linux基础-系统管理

          本文链接:https://www.haomeiwen.com/subject/wjpswrtx.html