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