阿里云开发者实验室提供免费云资源和丰富的场景化实践,旨在帮助开发者在学习应用技术,了解阿里云产品的特性。
阿里云体验实验室地址:https://developer.aliyun.com/adc/labs/
本场景将介绍 Linux 中常用的系统工作命令以及系统状态检测命令
场景内容选自 阿里云体验实验室
本场景将提供一台配置了 Aliyun Linux 2 的 ECS 实例(云服务器)。您可以参考本教程学习 Linux 系统中的文本编辑工具 Vim 以及文本处理命令。
阿里云 Aliyun Linux 2 的 ECS 实例资源: https://developer.aliyun.com/adc/scenario/c8d3efc90d634366bc012a69129c9aef
[云服务器 ECS] 云服务器( Elastic Compute Service,简称 ECS )是阿里云提供的性能卓越、稳定可靠、弹性扩展的 IaaS ( Infrastructure as a Service )级别云计算服务。云服务器 ECS 免去了您采购 IT 硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云 ECS 持续提供创新型服务器,解决多种业务需求,助力您的业务发展。
[Aliyun Linux 2] Aliyun Linux 2 是阿里云推出的下一代 Linux 发行版,它为云上应用程序环境提供 Linux 社区的最新增强功能,在提供云上最佳用户体验的同时,也针对阿里云基础设施做了深度的优化。Aliyun Linux 2 OS 镜像可以运行在阿里云全规格系列 VM 实例上,包括弹性裸金属服务器 (神龙)。
命令描述:echo 命令用于在终端输出字符串或变量提取后的值。
命令格式:echo [字符串 | $变量]。
命令用法示例:
显示普通字符串
echo "Hello World"
显示变量 首先在 shell 环境中定义一个临时变量 name 。
export name="Tom"
使用 echo 命令将变量 name 的值显示到终端。
echo $name
输出结果:
显示结果定向至文件 以下命令会将文本 This is a test text.输出重定向到文件 test.txt 中,如果文件已存在,将会覆盖文件内容,如果不存在则创建。其中>符号表示输出重定向。
echo "This is a test text." > test.txt
如果您希望将文本追加到文件内容最后,而不是覆盖它,请使用>>输出追加重定向符号。
显示命令执行结果 以下命令将会在终端显示当前的工作路径。
echo `pwd`
注意:pwd 命令是用一对反引号(``)包裹,而不是一对单引号('')。
使用$(command)形式可以达到相同效果。
echo $(pwd)
输出结果:
命令描述:date 命令用于显示和设置系统的时间和日期。
命令格式:date [选项] [+格式]。
其中,时间格式的部分控制字符解释如下:
| 字符 | 说明 |
|--|--|
| %a | 当地时间的星期名缩写(例如: 日,代表星期日) |
| %A |当地时间的星期名全称 (例如:星期日)|
| %b |当地时间的月名缩写 (例如:一,代表一月) |
| %B |当地时间的月名全称 (例如:一月)|
| %c |当地时间的日期和时间 (例如:2005 年 3 月 3 日 星期四 23:05:25 ) |
| %C |世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20 )|
| %d | 按月计的日期(例如:01 ) |
| %D |按月计的日期;等于%m/%d/%y|
| %F | 完整日期格式,等价于 %Y-%m-%d |
| %j |按年计的日期( 001-366 )|
| %p | 按年计的日期( 001-366 ) |
| %r |当地时间下的 12 小时时钟时间 (例如:11:11:04 下午)|
| %R | 24 小时时间的时和分,等价于 %H:%M |
|%s |自 UTC 时间 1970-01-01 00:00:00 以来所经过的秒数|
| %T | 时间,等于%H:%M:%S |
| %U |一年中的第几周,以周日为每星期第一天( 00-53 )|
| %x | 当地时间下的日期描述 (例如:12/31/99 ) |
| %X |当地时间下的时间描述 (例如:23:13:48 )|
| %w | 一星期中的第几日( 0-6 ),0 代表周一 |
| %W | 一年中的第几周,以周一为每星期第一天( 00-53 )|
命令用法示例:
按照默认格式查看当前系统时间
date
输出结果:
按照指定格式查看当前系统时间
date "+%Y-%m-%d %H:%M:%S"
输出结果:
查看今天是当年中的第几天
date "+%j"
输出结果:
将系统的当前时间设置为 2020 年 02 月 20 日 20 点 20 分 20 秒
date -s "20200220 20:20:20"
输出结果:
校正系统时间,与网络时间同步 a. 安装 ntp 校时工具
yum -y install ntp
b. 用 ntpdate 从时间服务器更新时间
ntpdate time.nist.gov
输出结果:
命令描述:在终端中下载文件。
命令格式:wget [参数] 下载地址。
参数说明:
| 参数 | 作用|
|--|--|
| -b | 后台下载 |
| -P |下载到指定目录|
| -t | 最大重试次数 |
| -c |断点续传|
| -p | 下载页面内所有资源,包括图片、视频等 |
| -r |递归下载|
命令使用示例:
下载一张图片到路径 /root/static/img/中,-p 参数默认值为当前路径,如果指定路径不存在会自动创建。
wget -P /root/static/img/ http://img.alicdn.com/tfs/TB1.R._t7L0gK0jSZFxXXXWHVXa-2666-1500.png
输出结果:
ps 命令描述:ps 命令用于查看系统中的进程状态。
命令格式:ps [参数]。
命令参数说明:
| 参数 | 作用 |
|--|--|
| -a | 显示现行终端机下的所有程序,包括其他用户的程序 |
| -u |以用户为主的格式来显示程序状况|
| -x | 显示没有控制终端的进程,同时显示各个命令的具体路径 |
| -e |列出程序时,显示每个程序所使用的环境变量|
| -f | 显示当前所有的进程 |
| -t |指定终端机编号,并列出属于该终端机的程序的状况|
命令使用示例:
ps -ef | grep sshd
输出结果:
命令描述:top 命令动态地监视进程活动与系统负载等信息。
命令使用示例:
top
输出结果:
命令输出参数解释:
以上命令输出视图中分为两个区域,一个统计信息区,一个进程信息区。
统计信息区
进程信息区
| 列名 | 含义 |
|--|--|
| PID | 进程 ID |
| USER |进程所有者的用户名|
| PR | 进程优先级 |
| NI |nice 值。负值表示高优先级,正值表示低优先级|
| VIRT | 进程使用的虚拟内存总量,单位 kb |
| RES | 进程使用的、未被换出的物理内存大小,单位 kb|
| SHR | 共享内存大小,单位 kb |
| S | 进程状态 D:不可中断的睡眠状态 R:正在运行 S:睡眠 T:停止 Z:僵尸进程 |
| %CPU| 上次更新到现在的 CPU 时间占用百分比|
| %MEM |进程使用的物理内存百分比|
| TIME+ | 进程使用的 CPU 时间总计,单位 1/100 秒|
| COMMAND |命令名|
按 q 键退出监控页面。
命令描述:pidof 命令用于查询指定服务进程的 PID 值。
命令格式:pidof [服务名称]。
命令参数说明:
| 参数 | 说明 |
|--|--|
|-s | 仅返回一个进程号 |
| -c |只显示运行在 root 目录下的进程,这个选项只对 root 用户有效|
| -o | 忽略指定进程号的进程 |
| -x |显示由脚本开启的进程|
命令使用示例:
查询出 crond 服务下的所有进程 ID 。
pidof crond
输出结果:
命令描述:kill 命令用于终止指定 PID 的服务进程。
kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9)信息尝试强制删除程序。
命令格式:kill [参数] [进程 PID]。
命令使用示例:
删除 pid 为 1247 的进程。
kill -9 1247
命令描述:killall 命令用于终止指定名称的服务对应的全部进程。
命令格式:killall [进程名称]。
命令使用示例:
删除 crond 服务下的所有进程。
killall crond
命令描述:reboot 命令用来重启系统。
命令格式:reboot [-n] [-w] [-d] [-f] [-i]。
命令参数说明:
-n:保存数据后再重新启动系统。 -w:仅做测试,并不是真的将系统重新开机,只会把重新开机的数据写入记录文件 /var/log/wtmp 。 -d:重新启动时不把数据写入记录文件 /var/tmp/wtmp 。 -f:强制重新开机,不调用 shutdown 指令的功能。 -i:关闭网络设置之后再重新启动系统。 命令使用示例:
reboot
命令描述:poweroff 命令用来关闭系统。
命令使用示例:
poweroff
命令描述:ifconfig 命令用于获取网卡配置与网络状态等信息。
命令示例:
命令输出说明:
命令描述:uname 命令用于查看系统内核与系统版本等信息。
命令语法:uname [-amnrsv][--help][--version]
命令使用示例:
显示系统信息。
uname -a
命令输出结果:
显示当前系统的硬件架构。
uname -i
命令输出结果:
显示操作系统发行编号。
uname -r
命令输出结果:
显示操作系统名称。
uname -s
命令输出结果:
显示主机名称。
uname -n
命令输出结果:
命令描述:uptime 用于查看系统的负载信息。
命令使用示例:
命令输出说明:
| 负载信息 | 命令输出值 |
|--|--|
| 当前服务器时间 | 14:20:27 |
| 当前服务器运行时长 |2 min|
| 当前用户数 | 2 users |
| 当前负载情况 |load average: 0.03, 0.04, 0.02 (分别取 1min,5min,15min 的均值)|
命令描述:free 用于显示当前系统中内存的使用量信息。
命令语法:free [-bkmotV][-s <间隔秒数>]。
命令参数说明:
| 参数 | 说明 |
|--|--|
| -b | 以 Byte 为单位显示内存使用情况 |
| -k |以 KB 为单位显示内存使用情况|
| -m | 以 MB 为单位显示内存使用情况 |
| -h | 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。 |
命令使用示例:
命令输出说明:
| 参数 | 说明 | |--|--| | total | 物理内存总数 |
| used |已经使用的内存数|
| free | 空间的内存数 |
| share |多个进程共享的内存总额|
| buff/cache | 应用使用内存数 |
| available |可用的内存数|
| Swap | 虚拟内存(阿里云 ECS 服务器默认不开启虚拟内存) |
命令描述:who 命令显示关于当前在本地系统上的所有用户的信息。
命令使用示例:
显示当前登录系统的用户
显示用户登录来源
命令描述:last 命令用于显示用户最近登录信息。
命令使用示例:
由于这些信息都是以日志文件的形式保存在系统中,黑客可以很容易地对内容进行篡改,所以该命令输出的信息并不能作为服务器是否被入侵的依据。
命令描述:history 命令用于显示历史执行过的命令。
bash 默认记录 1000 条执行过的历史命令,被记录在~/.bash_history 文件中。
命令使用示例:
清除历史记录。
history -c
阿里云体验实验室地址:https://developer.aliyun.com/adc/labs/