Linux基础知识(8)- 阿里云 ECS 上搭建 CentOS 7.9 服务器和 Linux 常用命令


云服务器 ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的 IaaS(Infrastructure as a Service)级别云计算服务。云服务器 ECS 让您免去了采购 IT 硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。

选择云服务器 ECS,可以轻松构建具有以下优势的计算资源:

    (1) 无需自建机房,无需采购以及配置硬件设施。
    (2) 分钟级交付,快速部署,缩短应用上线周期。
    (3) 快速接入部署在全球范围内的数据中心和边界网关协议 BGP(Border Gateway Protocol)机房。
    (4) 成本透明,按需使用,支持根据业务波动随时扩展和释放资源。
    (5) 提供 GPU 和 FPGA 等异构计算服务器、弹性裸金属服务器以及通用的 x86 架构服务器。
    (6) 支持通过内网访问其他阿里云服务,形成丰富的行业解决方案,降低公网流量成本。
    (7) 提供虚拟防火墙、角色权限控制、内网隔离、防病毒攻击及流量监控等多重安全方案。
    (8) 提供性能监控框架和主动运维体系。
    (9) 提供行业通用标准API,提高易用性和适用性。

通过注册阿里云账号,您可以在任何地域下,通过阿里云提供的以下途径创建、使用或者释放云服务器 ECS:
    
    (1) ECS 管理控制台:具有交互式操作的 Web 服务页面。关于管理控制台的操作,请参见常用操作导航 ECS 常用操作导航。
    (2) ECS API:支持 GET 和 POST 请求的 RPC 风格 API。关于 API 说明,请参见 API 参考。以下为调用云服务器 ECS API 的常用开发者工具:

        1) 命令行工具 CLI
        2) OpenAPI 开发者门户:提供快速检索接口、在线调用 API 和动态生成 SDK 示例代码等服务。
        3) 阿里云 SDK:提供 Java、Python、PHP 等多种编程语言的 SDK。

    (3) 资源编排(Resource Orchestration Service):通过创建一个描述您所需的所有阿里云资源的模板,然后资源编排将根据模板,自动创建和配置资源。
    (4) 运维编排服务(Operation Orchestration Service):自动化管理和执行运维任务。您可以在执行模板中定义执行任务、执行顺序、执行输入和输出等,通过执行模板达到自动化完成运维任务的目的。
    (5) Terraform:能够通过配置文件在阿里云以及其他支持 Terraform 的云商平台调用计算资源,并对其进行版本控制的开源工具。
    (6) 阿里云客户端:阿里云官方推出的客户端工具,目前提供了对云服务器ECS、弹性容器实例ECI、 轻量应用服务器、阿里云托管实例的资源浏览、查找、远程连接等功能。
    (7) 阿里云App:移动端类型的管理工具。
    (8) Alibaba Cloud Toolkit:阿里云针对 IDE 平台为开发者提供的一款插件,用于帮助您高效开发并部署适合在云端运行的应用。

Aliyun:https://www.aliyun.com/


1. 创建 ECS 实例

    架构:X86 计算
    CPU 内核数:2
    内存:8 GB
    OS:Linux CentOS 7.9 64位
    ESSD 云盘:40 GB
    公网 IP:192.168.0.10 (阿里云会自动分配,本文以 192.168.0.10 为例,下同)
    端口入方向允许:
   
        80 端口用于 Web 网站 HTTP 服务默认端口;
        443 端口用于 Web 网站 HTTPS 服务默认端口;
        22 端口用于 Linux SSH 登录;
        3389 端口用于 Windows 远程桌面登录;

    注:阿里云 ECS 实例的具体创建过程,参考访问 https://help.aliyun.com/product/25365.html。


2. 使用 SSH 访问 ECS 实例

    MacOS 和 Linux 直接运行 SSH client 命令。
   
    Windows 10 下可以直接运行 SSH client 命令,也可以安装第三方 SSH 客户端程序,比如 Putty、SecureCRT、MobaXterm 等。 这里以 Windows 10 下 SSH 为例:

        C:>ssh root@192.168.0.10:22  

    默认端口 22 可以省略,写成:

        C:>ssh root@192.168.0.10

    提示输入 root 的密码,密码是在创建 ECS 实例时提示用户输入的那个 root 密码。

   

    阿里云 ECS 默认 3 分钟左右(初略估算)没有操作,服务端就会自动断开连接,可以修改 sshd_config 延长等待时间。找到 /etc/ssh/sshd_config 文件如下参数:

        #ClientAliveInterval 0
        #ClientAliveCountMax 3

    修改为:

        ClientAliveInterval 30
        ClientAliveCountMax 60

        注:ClientAliveInterval 表示客户端每隔多少秒向服务发送一个心跳数据,ClientAliveCountMax 表示客户端最大空闲心跳的次数。比如:30 x 60 = 1800 秒,即 30 分钟后自动断开连接。

    重启 SSHd:

        $ systemctl restart sshd.service


3. 创建 Linux (CentOS) 普通用户

    Linux root 用户是系统的超级管理员,它具有等同于操作系统的权限。root 比 Windows 的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用。
    
    所以实际使用环境中,除非确实需要,一般情况下都不推荐使用 root。最好单独建立一个普通的用户,作为日常之用。
    
    这里我们创建一个 Linux 普通用户,用户名 develop,有 sudo 权限,步骤如下:

        C:>ssh root@192.168.0.10

            root@192.168.0.10's password:
            Last failed login: Thu Sep 15 19:26:09 CST 2022 from 61.155.110.x on ssh:notty
            There were 8 failed login attempts since the last successful login.
            Last login: Thu Sep 15 18:18:45 2022 from 120.204.171.x

            Welcome to Alibaba Cloud Elastic Compute Service !

        # 创建用户使用 useradd 命令或 adduser 命令
        [root@xxx ~]# useradd -d /home/develop develop

        # 查看用户列表
        [root@xxx ~]# cat /etc/passwd

            root:x:0:0:root:/root:/bin/bash
            
            ...

            develop:x:1000:1000::/home/develop:/bin/bash

        # 查看用户主目录
        [root@xxx ~]# ls /home
        
            develop

        # 设置/修改用户密码
        [root@xxx ~]# passwd develop

            Changing password for user develop.
            New password:
            Retype new password:
            passwd: all authentication tokens updated successfully.


    可以使用如下命令,使用户拥有 root 权限:

        # 给 develop 添加 sudo 权限
     [root@xxx ~]# vim /etc/sudoers

            root ALL=(ALL) ALL
            develop ALL=(ALL) ALL    # 新增的记录

        # 或把 develop 加入 root 用户组
        [root@xxx ~]# usermod -g 'root' 'develop'

        # 使用 su 切换到 root 用户
        [develop@xxx ~]$ su root

        # 使用 sudo 以系统管理者的身份执行指令
        [develop@xxx ~]$ sudo ls /root


    可以使用如下命令,删除用户:

        # 永久的删除用户 develop
        [root@xxx ~]# userdel develop

        # 永久的删除用户 develop,并强制删除该用户的主目录及下的子目录和文件
        [root@xxx ~]# userdel -r develop


4. 用户相关的常用命令

    1) 查看用户

        # 显示当前登录用户
        [root@xxx ~]# whoami
        [root@xxx ~]# who am i
        [root@xxx ~]# who       

        # 显示当前登录的所有用户
        [root@xxx ~]# users
        [root@xxx ~]# who | cut -d' ' -f1 | sort | uniq     # 类似 users 命令的显示结果

        # 显示已经登录系统的用户的名称,以及它们正在做的事
        [root@xxx ~]# w
        [root@xxx ~]# w <username>  # 查看某一用户

        # 显示特定用户登录系统的历史记录
        [root@xxx ~]# last
        [root@xxx ~]# last develop

        # 查看用户列表
        [root@xxx ~]# cat /etc/passwd

        # 可以登录系统的用户列表
        [root@xxx ~]# cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1

        # 只显示用户名列表
        [root@xxx ~]# cut -d : -f 1 /etc/passwd

        # 查看用户加密口令
        [root@xxx ~]# cat /etc/shadow   


    2) 用户组

        # 新建用户组
        [root@xxx ~]# groupadd demo

        # 修改用户组名称
        [root@xxx ~]# groupmod -n mdemo demo  

        # 设置用户组密码
        [root@xxx ~]# gpasswd mdemo

        # 把用户加入用户组
        [root@xxx ~]# gpasswd -a develop mdemo

        # 查看用户所属组
        [root@xxx ~]# groups develop

        # 把用户从用户组里删除
        [root@xxx ~]# gpasswd -d develop mdemo

        # 删除用户组
        [root@xxx ~]# groupdel mdemo

        # 用户组列表
        [root@xxx ~]# cat /etc/group
        [root@xxx ~]# cat /etc/gshadow      # etc/gshadow 是 /etc/group 的加密信息文件

        # 切换群组,假设 develop 用户当前处于 develop 组,我们把它切换到 demo 组。
        # 如果 develop 不属于 demo 组,作为临时成员切换到 demo 组 ,所创建的文件属于 demo 组  
        [develop@xxx ~]$ newgrp demo


5. 文件相关的常用命令

    1) cd/pwd/mkdir/rmdir/rm/mv 命令

        cd 命令用来切换当前工作目录,pwd 命令查看当前所在目录,mkddir 命令用来创建目录,rmdir 命令用来删除空目录,rm 命令用来删除文件,mv 命令用来移动文件和修改文件名。

        示例:

            # 切换到系统根目录
            [root@xxx ~]# cd /

            # 切换到当前用户主目录
            [root@xxx ~]# cd ~

            # 切换到指定目录
            [root@xxx ~]# cd /home/develop

            # 切换到上级目录
            [root@xxx ~]# cd ..
            [root@xxx ~]# cd ../..
       
       # 查看当前所在目录
       [root@xxx ~]# pwd
# 创建目录 [root@xxx ~]# mkdir test # 删除空目录 [root@xxx ~]# rmdir test # 删除文件 a.txt,可以同时删除多个文件,比如 rm a.txt b.txt [root@xxx ~]# rm a.txt # 强制删除一个目录或文件,目录下有文件也一起被删除 [root@xxx ~]# rm -rf /home/develop/test # 文件移动,移动目录类似 [root@xxx ~]# mv a.txt ~/a.txt # 文件改名 [root@xxx ~]# mv a.txt a2.txt


    2) cat 命令

        cat (concatenate) 命令用于连接文件并打印到标准输出设备上。

        示例:

            # 创建文件,输入完内容后按回车键,按 Ctrl+d 键退出。或者不回车,按 2 次 Ctrl+d 键退出
            [root@xxx ~]# cat > test.txt
            Hello World!

            # 创建文件,输入完内容后按回车键,输入 EOF 退出。EOF 是一个标识,可以使用其它自定义字符串,比如 END
            [root@xxx ~]# cat > test2.txt << EOF
            Good morning!
            EOF

            # 向文件追加内容,输入完内容后按回车键,按 Ctrl+d 键退出。
            [root@xxx ~]# cat >> test.txt
            Append content

            # 向文件追加内容,输入完内容后按回车键,输入 EOF 退出。
            [root@xxx ~]# cat >> test.txt << EOF
            Append content 2
            EOF

            # 查看文件
            [root@xxx ~]# cat test.txt
            [root@xxx ~]# cat -n test.txt   # 显示行号

            # 查看文件,部分内容输出到控制台,按回车键查看下一行,按空格查看下一页,按 q 键停止查看(适用于查看比较大的文件)
            [root@xxx ~]# cat test.txt | more   

            # 合并两个文件内容到第三个文件
            [root@xxx ~]# cat test.txt test2.txt > test3.txt

            # 将文件1的内容追加到文件2
            [root@xxx ~]# cat test.txt >> test2.txt

            # 将文件1显示行号后追加到文件2中
            [root@xxx ~]# cat -n test.txt >> test2.txt

            # 将文件1的内容覆盖文件2的内容
            [root@xxx ~]# cat test.txt > test2.txt


    3) grep 命令

        grep (Global Regular Expression Print) 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

        示例:

            # 匹配 test.txt 中包含 'Hello' 的行,以下两种方式效果相同
            [root@xxx ~]# grep 'Hello' test.txt
            [root@xxx ~]# cat test.txt | grep 'Hello'

            # 匹配 *.txt 中包含 'hello' 的行,不区分大小写
            [root@xxx ~]# grep -i 'hello' *.txt

            # 匹配 *.txt 中包含 'Hello' 的行,列出匹配的文件名
            [root@xxx ~]# grep -l 'Hello' *.txt

            # 匹配 *.txt 中包含 'Hello' 的行,列出不匹配的文件名
            [root@xxx ~]# grep -L 'Hello' *.txt

            # 匹配 *.txt 中包含 'Hello' 的行,匹配的上下文分别显示 3 行
            [root@xxx ~]# grep -C 3 'Hello' *.txt


    4) ls 命令

        ls (list) 命令用于显示目前工作目录所含之文件及子目录。

        示例:

            # 显示当前目录下的可见目录和文件
            [root@xxx ~]# ls

            # 显示当前目录下的全部目录和文件(包括隐藏文件)
            [root@xxx ~]# ls -a

            # 显示目录和文件的详细信息(包括隐藏文件)
            [root@xxx ~]# ls -la

            # 在每个文件名后附上一个字符以说明该文件的类型。"*": 表示可执行的普通文件;"/": 表示目录;“@”: 表示符号链接;“|”: 表示FIFOs;“=”: 表示套接字(sockets)
            [root@xxx ~]# ls -F  

            # 显示当前目录下的子目录
            [root@xxx ~]# ls -F | grep '/'

            # 查询当前目录下的符号链接文件
            [root@xxx ~]# ls -F | grep "@"

            # 查询当前目录下的可执行文件
            [root@xxx ~]# ls -F | grep "*"

            # 查询当前目录下的文件个数
            [root@xxx ~]# ls -la | grep "^-" | wc -l

            注:wc(Word Count)命令用来统计指定文件的字节数、字数、行数,并将统计结果显示输出。 wc -l 统计行数。
   
    5) find 命令

        find 命令用来在指定目录下查找文件。

        示例:

            # 列出当前目录及其子目录下所有文件后缀为 .txt 的文件来      
            [root@xxx ~]# find . -name "*.txt"

            # 列出当前目录及其子目录中的所有文件
            [root@xxx ~]# find . -type f

            # 列出当前目录及其子目录中的所有目录
            [root@xxx ~]# find . -type d

            # 列出当前目录及其子目录中 3 天内更新过的文件
            [root@xxx ~]# find . -ctime  -3


    6) chmod 命令

        chmod 命令是控制用户对文件的权限的命令。Linux/Unix 的文件调用权限分为三级: 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
        
        参数:

            u(文件所有者)、g(文件的组用户)、o(其他用户)
            r(读)的权限的数字为 4,w(写)的权限的数字为 2,x(执行)的权限数字为 1

        示例:

            # 添加可读权限
            [root@xxx ~]# chmod +r test.txt     # 都添加
            [root@xxx ~]# chmod u+r test.txt    # 只给文件所有者添加

            # 撤销可读权限
            [root@xxx ~]# chmod -r test.txt
            [root@xxx ~]# chmod u-r test.txt


    7) chown 命令

        chown (change owner) 命令用于设置文件所有者和文件关联组的命令。

        示例:

            # 修改所属用户
            [root@xxx ~]# chown root test.txt
    
            # 修改所属用户和用户组
            [root@xxx ~]# chown user:group test.txt


    8) tar 命令

        tar 命令用于打包(备份)、压缩、解压文件。

        参数:
        
            -c 创建包, –x 释放包, -v 显示命令过程, –z 代表压缩包, -f 表示文件名

        示例:

            # 打包目录
            [root@xxx ~]# tar –cvf test.tar /home/develop/test

            # 打包目录并压缩
            [root@xxx ~]# tar –zcvf test.tar.gz /home/develop/test  

            # 解压 *.tar.gz    
            [root@xxx ~]# tar –zxvf test.tar.gz         # 解压 *.tar.gz
    
            # 解压 *.tar.bz2
            [root@xxx ~]# tar –jxvf test.tar.bz2 


    9) 其它

        # 查看各文件夹大小,max-depth 表示子文件夹递归深度
        [root@xxx ~]# du -h --max-depth=1     
    
        # 列出可执行文件所使用的动态链接库
        [root@xxx ~]# ldd /usr/bin/java        

        # 把大文件分割成一些小文件
        [root@xxx ~]# split -b 50m largefile.tar.gz LF_
        
        # 合并 split 分割的小文件
        [root@xxx ~]# cat LF_* > largefile.tar.gz       

 

6. 其它常用命令

    1) 系统相关

        # 查看 CentOS 版本
        [root@xxx ~]# cat /etc/redhat-release

        # 重启系统
        [root@xxx ~]# reboot

        # 关闭系统
        [root@xxx ~]# shutdown

        # 查看内核版本
        [root@xxx ~]# uname -a

        # 查看历史命令
        [root@xxx ~]# history


    2) 进程相关

        # 查看当前运行的进程
        [root@xxx ~]# ps -A                     

        # 查看运行中的进程 mysql
        [root@xxx ~]# ps aux | grep mysql        

        # 列出用户 develop 所属的进程 ID
        [root@xxx ~]# pgrep -u develop

        # 以树形的方式列出进程
        [root@xxx ~]# pstree

        # 杀死进程,多个同名进程时杀死第一个,可以用 killall 全部同名进程
        [root@xxx ~]# kill 进程号                

        # 强制杀死一个进程
        [root@xxx ~]# kill -9 进程号

        # 系统服务操作:启动/停止/重启
        [root@xxx ~]# service [servicename] start/stop/restart
        
        # 系统服务操作:启动/停止/重启
        [root@xxx ~]# /etc/init.d/[servicename] start/stop/restart 


    3) 设备相关

        # 查看硬盘剩余空间
        [root@xxx ~]# df -h

        # 查看内存资源
        [root@xxx ~]# free -m

        # 查看磁盘信息                
        [root@xxx ~]# fdisk -l         

        # 查看网卡信息     
        [root@xxx ~]# ip addr                  

        # 查看当前硬件信息
        [root@xxx ~]# lshw     

        # 查看 cpu 信息
        [root@xxx ~]# cat /proc/cpuinfo

        # 系统运行状态和 cpu 的使用率
        [root@xxx ~]# top -bn 1 -i -c

        # 查看 CPU 使用率,每 1 秒收集一次,共 5 次
        [root@xxx ~]# vmstat 1 5     

 

posted @ 2022-09-17 16:27  垄山小站  阅读(542)  评论(0)    收藏  举报