当前位置 博文首页 > 文章内容

    Linux指令入门-系统管理

    作者:努力向上的小图 栏目:未分类 时间:2020-07-30 18:01:18

    本场景将介绍Linux中常用的系统工作命令以及系统状态检测命令

    场景体验目标

    本场景将提供一台配置了CentOS 7.7的ECS实例(云服务器)。您可以参考本教程学习Linux系统中常用的系统工作命令以及查看系统状态的命令。

    背景知识

    本场景主要涉及以下云产品和服务:

    云服务器ECS

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

    CentOS

    CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。

    实验详情

    连接ECS服务器

    1.打开系统自带的终端工具。

    • Windows:CMD或Powershell。
    • MAC:Terminal。

    Windows用户请检查系统中是否安装有ssh工具。检查方法:

    1)在终端中输入命令ssh -V。

    2)出现如下结果说明已安装。

    3)否则请下载安装 OpenSSH。

    2.在终端中输入连接命令ssh [username]@[ipaddress]。您需要将其中的username和ipaddress替换为第1小节中创建的ECS服务器的登录名和公网地址。例如:

    ssh root@123.123.123.123

     

    命令显示结果如下:

    3.输入yes。

    4.同意继续后将会提示输入登录密码。 密码为已创建的云服务的ECS的登录密码。

    登录成功后会显示如下信息。

    常用系统工作命令

    echo

    命令描述: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命令用于显示和设置系统的时间和日期。

    命令格式: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

    命令描述:在终端中下载文件。

    命令格式: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命令动态地监视进程活动与系统负载等信息。

    命令使用示例:

    top

     

    输出结果:

    命令输出参数解释:

    以上命令输出视图中分为两个区域,一个统计信息区,一个进程信息区。

    • 统计信息区
      • 第一行信息依次为:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
      • 第二行信息依次为:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
      • 第三行信息依次为:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
      • 第四行信息依次为:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
      • 第五行信息依次为:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、预加载内存量。
    • 进程信息区 
      列名含义
      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

    命令描述:pidof命令用于查询指定服务进程的PID值。

    命令格式:pidof [服务名称]

    命令参数说明: 

    参数说明
    -s 仅返回一个进程号
    -c 只显示运行在root目录下的进程,这个选项只对root用户有效
    -o 忽略指定进程号的进程
    -x 显示由脚本开启的进程

    命令使用示例:

    查询出crond服务下的所有进程ID。

    pidof crond

     

    输出结果:

    kill

    命令描述:kill命令用于终止指定PID的服务进程。

    kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。

    命令格式:kill [参数] [进程PID]

    命令使用示例:

    删除pid为1247的进程。

    kill -9 1247

     

    killall

    命令描述:killall命令用于终止指定名称的服务对应的全部进程。

    命令格式:killall [进程名称]

    命令使用示例:

    删除crond服务下的所有进程。

    killall crond

     

    reboot

    命令描述:reboot命令用来重启系统。

    命令格式:reboot [-n] [-w] [-d] [-f] [-i]

    命令参数说明:

    • -n:保存数据后再重新启动系统。
    • -w:仅做测试,并不是真的将系统重新开机,只会把重新开机的数据写入记录文件/var/log/wtmp。
    • -d:重新启动时不把数据写入记录文件/var/tmp/wtmp。
    • -f:强制重新开机,不调用shutdown指令的功能。
    • -i:关闭网络设置之后再重新启动系统。

    命令使用示例:

    reboot

     

    poweroff

    命令描述:poweroff命令用来关闭系统。

    命令使用示例:

    poweroff

     

    系统状态检测命令

    ifconfig

    命令描述:ifconfig命令用于获取网卡配置与网络状态等信息。

    命令示例:

    命令输出说明:

    • 第一部分的第一行显示网卡状态信息。
      • eth0表示第一块网卡。
      • UP代表网卡开启状态。
      • RUNNING代表网卡的网线被接上。
      • MULTICAST表示支持组播。
    • 第二行显示网卡的网络信息。
      • inet(IP地址):172.16.132.195。
      • broadcast(广播地址):172.16.143.255。
      • netmask(掩码地址):255.255.240.0。
    • RX表示接收数据包的情况,TX表示发送数据包的情况。
    • lo表示主机的回环网卡,是一种特殊的网络接口,不与任何实际设备连接,而是完全由软件实现。与回环地址(127.0.0.0/8 或 ::1/128)不同,回环网卡对系统显示为一块硬件。任何发送到该网卡上的数据都将立刻被同一网卡接收到。

    uname

    命令描述:uname命令用于查看系统内核与系统版本等信息。

    命令语法:uname [-amnrsv][--help][--version]

    命令使用示例:

    显示系统信息。

    uname -a

     

     

    命令输出结果:

     

    显示当前系统的硬件架构。

    uname -i

     

     

    命令输出结果:

     

    显示操作系统发行编号。

    uname -r

     

     

    命令输出结果:

     

    显示操作系统名称。

    uname -s

     

     

    命令输出结果:

     

    显示主机名称。

    uname -n

     

     

    命令输出结果:

     

    uptime

    命令描述:uptime 用于查看系统的负载信息。

    命令使用示例:

    命令输出说明: 

    负载信息命令输出值
    当前服务器时间 14:20:27
    当前服务器运行时长 2 min
    当前用户数 2 users
    当前负载情况 load average: 0.03, 0.04, 0.02(分别取1min,5min,15min的均值)

    free

    命令描述:free用于显示当前系统中内存的使用量信息。

    命令语法:free [-bkmotV][-s <间隔秒数>]

    命令参数说明: 

    参数说明
    -b 以Byte为单位显示内存使用情况
    -k 以KB为单位显示内存使用情况
    -m 以MB为单位显示内存使用情况
    -h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。
    命令使用示例:

    命令输出说明: 

    参数说明
    total 物理内存总数
    used 已经使用的内存数
    free 空间的内存数
    share 多个进程共享的内存总额
    buff/cache 应用使用内存数
    available 可用的内存数
    Swap 虚拟内存(阿里云ECS服务器默认不开启虚拟内存)

    who

    命令描述:who 命令显示关于当前在本地系统上的所有用户的信息。

    命令使用示例:

    显示当前登录系统的用户

    显示用户登录来源

    只显示当前用户

    精简模式显示

    last

    命令描述: last 命令用于显示用户最近登录信息。

    命令使用示例:

    由于这些信息都是以日志文件的形式保存在系统中,黑客可以很容易地对内容进行篡改,所以该命令输出的信息并不能作为服务器是否被入侵的依据。

    history

    命令描述:history命令用于显示历史执行过的命令。

    bash默认记录1000条执行过的历史命令,被记录在~/.bash_history文件中。

    命令使用示例:

    显示最新10条执行过的命令。

    清除历史记录。

    history -c