Linux快速入手系列三( 系统管理 )

常用系统工作命令

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)
    

wget(常用)

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

命令格式:wget [参数] 下载地址

参数说明:

参数 作用
-b 后台下载
-P 下载到指定目录
-t 最大重试次数
-c 断点续传
-p 下载页面内所有资源,包括图片、视频等
-r 递归下载

命令使用示例:

下载一张图片到路径/root/static/img/中,-p参数默认值为当前路径,如果指定路径不存在会自动创建。

wget -P /root/static/img/ http://img.alicdn.com/tfs/TB1.png

ps(常用)

命令描述:ps命令用于查看系统中的进程状态。

命令格式:ps [参数]

命令参数说明:

参数 作用
-a 显示现行终端机下的所有程序,包括其他用户的程序
-u 以用户为主的格式来显示程序状况
-x 显示没有控制终端的进程,同时显示各个命令的具体路径
-e 列出程序时,显示每个程序所使用的环境变量
-f 显示当前所有的进程
-t 指定终端机编号,并列出属于该终端机的程序的状况

命令使用示例:

[root@iZbp1dbo8o3zwbipcf48llZ ~]# ps -ef | grep sshd
root       983     1  0 10:52 ?        00:00:00 /usr/sbin/sshd -D
root      1397   983  0 10:53 ?        00:00:00 sshd: root@pts/0
root      1441  1403  0 10:57 pts/0    00:00:00 grep --color=auto sshd

top(常用)

命令描述:top命令动态地监视进程活动与系统负载等信息。

命令使用示例:

[root@iZbp1dbo8o3zwbipcf48llZ ~]# top
top - 10:53:43 up 1 min,  1 user,  load average: 0.07, 0.03, 0.01
Tasks:  74 total,   1 running,  72 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014672 total,   488536 free,   109500 used,   416636 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   764412 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1342 root      10 -10  122932  11348   8748 S  0.7  1.1   0:00.28 AliYunDun
 1276 root      10 -10   32524   4236   2772 S  0.3  0.4   0:00.47 AliYunDunUpdate
    1 root      20   0  125488   3916   2608 S  0.0  0.4   0:00.76 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    5 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/u2:0
    6 root      20   0       0      0      0 S  0.0  0.0   0:00.01 ksoftirqd/0
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh

命令输出参数解释:

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

  • 统计信息区

    • 第一行信息依次为:系统时间、运行时间、登录终端数、系统负载(三个数值分别为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。

[root@iZbp1dbo8o3zwbipcf48llZ ~]# pidof crond
989

kill(常用)

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

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

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

命令使用示例:

删除pid为1247的进程。

kill -9 1247

reboot

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

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

命令参数说明:

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

命令使用示例:

reboot

poweroff

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

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 一星期中的第几日(0-6),0 代表周一

命令用法示例:

  • 按照默认格式查看当前系统时间

    date
    
    
  • 按照指定格式查看当前系统时间

    date "+%Y-%m-%d %H:%M:%S"
    
    

系统状态检测命令

ifconfig(常用)

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

[root@iZbp1dbo8o3zwbipcf48llZ ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.1.111  netmask 255.255.255.0  broadcast 172.16.1.225
        ether 00:16:3e:00:63:b5  txqueuelen 1000  (Ethernet)
        RX packets 41415  bytes 59663367 (56.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6523  bytes 868724 (848.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

命令输出说明:

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

uname(常用)

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

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

命令使用示例:

  • 显示系统信息。

    [root@iZbp1dbo8o3zwbipcf48llZ ~]# uname -a
    Linux iZbp1dbo8o3zwbipcf48llZ 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    
    
  • 显示当前系统的硬件架构。

    [root@iZbp1dbo8o3zwbipcf48llZ ~]# uname -i
    x86_64
    
    
  • 显示操作系统发行编号。

    [root@iZbp1dbo8o3zwbipcf48llZ ~]# uname -r
    3.10.0-1062.18.1.el7.x86_64
    
    

uptime

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

命令使用示例:

[root@iZbp1dbo8o3zwbipcf48llZ ~]# uptime
 11:07:28 up 14 min,  1 user,  load average: 0.00, 0.01, 0.02

命令输出说明:

负载信息 命令输出值
当前服务器时间 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 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。

命令使用示例:

[root@iZbp1dbo8o3zwbipcf48llZ ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           990M         92M        469M        484K        429M        759M
Swap:            0B          0B          0B

命令输出说明:

参数 说明
total 物理内存总数
used 已经使用的内存数
free 空间的内存数
share 多个进程共享的内存总额
buff/cache 应用使用内存数
available 可用的内存数
Swap 虚拟内存

who

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

命令使用示例:

  • 显示当前登录系统的用户

    [root@iZbp1dbo8o3zwbipcf48llZ ~]# who
    root     pts/0        2020-06-05 10:53 (27.196.220.18)
    
    
  • 显示用户登录来源

    [root@iZbp1dbo8o3zwbipcf48llZ ~]# who -l -H
    NAME     LINE         TIME             IDLE          PID COMMENT
    LOGIN    tty1         2020-06-05 10:52               999 id=tty1
    LOGIN    ttyS0        2020-06-05 10:52              1000 id=tyS0
    
    

last

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

命令使用示例:

[root@iZbp1dbo8o3zwbipcf48llZ ~]# last
root     pts/0        127.196.225.185    Fri Jun  5 10:53   still logged in
reboot   system boot  3.10.0-1062.18.1 Fri Jun  5 18:52 - 11:11  (-7:-41)

wtmp begins Sun Apr 26 16:02:02 2020

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

history

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

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

命令使用示例:

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

    [root@iZbp1dbo8o3zwbipcf48llZ ~]# history 10
        6  uname -i
        7  uname -r
        8  uname -s
        9  uptime
       10  free -h
       11  who
       12  who -l -H
       13  last
       14  ls
       15  history 10
    
    
  • 清除历史记录。

    history -c
    
    

Reference

阿里云开发者社区