Linux学习笔记-新手要会的命令

206 阅读18分钟

系统版本:CentOS 7 64位

安装环境:VMware15

一、安装完系统后

系统默认安装的是带有图形界面的,在登陆界面直接切换到命令行 Ctrl+Alt+F2,登录输入用户名密码,需要注意的是,最好用一般用户登录,在需要的时候,切换到root账户 或者使用sudo加权指令操作。 


Shell就是这样的一个命令行工具。Shell(也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。主流Linux系统选择Bash解释器作为命令行终端主要有以下4项优势,

1:通过上下方向键来调取过往执行过的Linux命令;

2:命令或参数仅需输入前几位就可以用Tab键补全;

3:具有强大的批处理脚本

4:具有实用的环境变量功能。 

当然也可以直接登录界面系统,进入Terminal命令行工具。

二、命令格式

命令名称 [命令参数] [命令对象]

命令对象一般是指要处理的文件、目录、用户等资源,而命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用--与-作为前缀。Linux新手不会执行命令大多是因为参数比较复杂,参数值需要随不同的命令和需求情况而发生改变。因此,要想灵活搭配各种参数,执行自己想要的功能,则需要长时间的经验积累了。

man命令为例,可以通过man命令查看系统命令的功能以及参数详情,例如 man ls可查看到关于ls命令的描述以及参数。


man命令中常用按键以及用途

按键用处
空格键向下翻一页
PaGe down向下翻一页
PaGe up向上翻一页
home直接前往首页
end直接前往尾页
/从上至下搜索某个关键词,如“/linux”
?从下至上搜索某个关键词,如“?linux”
n定位到下一个搜索到的关键词
N定位到上一个搜索到的关键词
q退出帮助文档

一般来讲,使用man命令查看到的帮助内容信息都会很长很多,可通过查看 man命令帮助信息的结构以及意义

结构名称代表意义
NAME命令的名称
SYNOPSIS参数的大致使用方法
DESCRIPTION介绍说明
EXAMPLES演示(附带简单说明)
OVERVIEW概述
DEFAULTS默认的功能
OPTIONS具体的可用选项(带介绍)
ENVIRONMENT环境变量
FILES用到的文件
SEE ALSO相关的资料
HISTORY维护历史与联系方式

三、系统常用的命令

踩在前人的肩膀上,可以迅速学习了解到系统常用的命令

1.echo命令

echo命令用于在终端输出字符串或变量提取后的值

echo [字符串 | $变量]

例如

输入字符 echo hello world 会打印hello world

输入变量echo $SHELL 会打印/bin/bash


2.date命令

date命令用于显示及设置系统的时间或日期

date [选项] [+指定的格式]

 时间方面:

  • % : 印出 %
  • %n : 下一行
  • %t : 跳格
  • %H : 小时(00..23)
  • %I : 小时(01..12)
  • %k : 小时(0..23)
  • %l : 小时(1..12)
  • %M : 分钟(00..59)
  • %p : 显示本地 AM 或 PM
  • %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
  • %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
  • %S : 秒(00..61)
  • %T : 直接显示时间 (24 小时制)
  • %X : 相当于 %H:%M:%S
  • %Z : 显示时区

日期方面:

  • %a : 星期几 (Sun..Sat)
  • %A : 星期几 (Sunday..Saturday)
  • %b : 月份 (Jan..Dec)
  • %B : 月份 (January..December)
  • %c : 直接显示日期与时间
  • %d : 日 (01..31)
  • %D : 直接显示日期 (mm/dd/yy)
  • %h : 同 %b
  • %j : 一年中的第几天 (001..366)
  • %m : 月份 (01..12)
  • %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
  • %w : 一周中的第几天 (0..6)
  • %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
  • %x : 直接显示日期 (mm/dd/yy)
  • %y : 年份的最后两位数字 (00.99)
  • %Y : 完整年份 (0000..9999)

参数说明

  • -d datestr : 显示 datestr 中所设定的时间 (非系统时间)
  • --help : 显示辅助讯息
  • -s datestr : 将系统时间设为 datestr 中所设定的时间
  • -u : 显示目前的格林威治时间
  • --version : 显示版本编号

按照默认格式查看当前系统时间的date命令如下所示:


按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:


将系统的当前时间设置为2021年1月1日8点30分的date命令如下所示(由于修改日期需要权限,需要切换到root账户):


3.reboot命令

reboot命令用于重启系统。

由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启:


注:由于虚拟机截图也不方便,使用MobaXterm 12.3 通过SSH连接。

4.poweroff命令

poweroff命令用于关闭系统。

该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑:

[work@localhost ~]$ poweroff

5.wget命令

wget命令用于在终端中下载网络文件

wget [参数] 下载地址

 wget命令的参数以及作用

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

通过参数-O,重命名下载链接的图片,

[work@localhost ~]$ wget -O 1.jpg https://pics5.baidu.com/feed/3801213fb80e7becb20fe91eaa228c3e9a506b0f.jpeg?token=b7b87abf69a051481c6fe4c0892db05f&s=0F156D84CC60FC86414C09D8030050B2
[1] 20128
[work@localhost ~]$ --2020-02-13 21:25:06--  https://pics5.baidu.com/feed/3801213fb80e7becb20fe91eaa228c3e9a506b0f.jpeg?token=b7b87abf69a051481c6fe4c0892db05f
Resolving pics5.baidu.com (pics5.baidu.com)... 111.174.1.35
Connecting to pics5.baidu.com (pics5.baidu.com)|111.174.1.35|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 46273 (45K) [image/jpeg]
Saving to: ‘1.jpg’

100%[======================================>] 46,273       114KB/s   in 0.4s

2020-02-13 21:25:07 (114 KB/s) - ‘1.jpg’ saved [46273/46273]


[1]+  Done                    wget -O 1.jpg https://pics5.baidu.com/feed/3801213fb80e7becb20fe91eaa228c3e9a506b0f.jpeg?token=b7b87abf69a051481c6fe4c0892db05f 
[work@localhost ~]$ 

6.ps命令

ps命令用于显示当前进程 (process) 的状态。

ps [参数] 
参数说明
  • -A 列出所有的行程
  • -w 显示加宽可以显示较多的资讯
  • -au 显示较详细的资讯
  • -aux 显示所有包含其他使用者的行程
  • au(x) 输出格式 :
  • USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小
  • RSS: 占用的记忆体大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:
  • D: 无法中断的休眠状态 (通常 IO 的进程)
  • R: 正在执行中
  • S: 静止状态
  • T: 暂停执行
  • Z: 不存在但暂时无法消除
  • W: 没有足够的记忆体分页可分配
  • <: 高优先序的行程
  • N: 低优先序的行程
  • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令

查看所有进程,ps -A

[work@localhost ~]$ ps -A
   PID TTY          TIME CMD
     1 ?        00:00:02 systemd
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00 ksoftirqd/0
     5 ?        00:00:00 kworker/0:0H
     7 ?        00:00:00 migration/0
     8 ?        00:00:00 rcu_bh
     9 ?        00:00:01 rcu_sched
    10 ?        00:00:00 watchdog/0
    12 ?        00:00:00 kdevtmpfs
    13 ?        00:00:00 netns
    14 ?        00:00:00 khungtaskd
    15 ?        00:00:00 writeback
    16 ?        00:00:00 kintegrityd
    17 ?        00:00:00 bioset
    18 ?        00:00:00 kblockd
    19 ?        00:00:00 md 
 ........
 17428 pts/1    00:00:00 bash
 17430 ?        00:00:03 bash
 17451 ?        00:00:00 sshd
 17464 ?        00:00:00 sftp-server
 33044 ?        00:00:00 kworker/u256:2
 35085 ?        00:00:00 kworker/0:0
 38063 ?        00:00:00 kworker/0:2
 41018 ?        00:00:00 kworker/0:1
 42141 ?        00:00:00 kworker/0:3
 42503 ?        00:00:00 sleep
 42557 ?        00:00:00 sleep
 42558 pts/1    00:00:00 ps

执行ps axu查看进程状态

[work@localhost ~]$ ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4 193700  4772 ?        Ss   11:25   0:03 /usr/lib/syste
root          2  0.0  0.0      0     0 ?        S    11:25   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    11:25   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   11:25   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    11:25   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    11:25   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    11:25   0:01 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S    11:25   0:00 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S    11:25   0:00 [kdevtmpfs]
root         13  0.0  0.0      0     0 ?        S<   11:25   0:00 [netns]
root         14  0.0  0.0      0     0 ?        S    11:25   0:00 [khungtaskd]
root         15  0.0  0.0      0     0 ?        S<   11:25   0:00 [writeback]
root         16  0.0  0.0      0     0 ?        S<   11:25   0:00 [kintegrityd]
root         17  0.0  0.0      0     0 ?        S<   11:25   0:00 [bioset]

7.top命令

top命令用于实时显示 process 的动态。

top [参数]

参数说明

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
  • s : 安全模式,将交谈式指令取消, 避免潜在的危机
  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
  • n : 更新的次数,完成后将会退出 top
  • b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

显示完整命令

[work@localhost ~]$ top -c
top - 15:47:32 up  4:22,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 180 total,   1 running, 179 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.7 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999696 total,   124164 free,   561944 used,   313588 buff/cache
KiB Swap:  2097148 total,  1852880 free,   244268 used.   219292 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  3011 work      20   0  386228   4316   2412 S  0.3  0.4   0:07.67 /usr/bin/v+
 17425 work      20   0  148072   2956   1380 S  0.3  0.3   0:04.73 sshd: work+
 50525 work      20   0  157744   2336   1616 R  0.3  0.2   0:00.04 top -c
     1 root      20   0  193700   4772   2800 S  0.0  0.5   0:03.03 /usr/lib/s+
     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.93 [ksoftirqd+
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kworker/0+
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 [migration+
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcu_bh]
     9 root      20   0       0      0      0 S  0.0  0.0   0:01.22 [rcu_sched]
    10 root      rt   0       0      0      0 S  0.0  0.0   0:00.08 [watchdog/+
    12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [kdevtmpfs]
    13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [netns]
    14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [khungtask+

以批处理模式显示程序信息

[work@localhost ~]$ top -b
top - 15:47:49 up  4:22,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 180 total,   1 running, 179 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  6.2 sy,  0.0 ni, 93.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999696 total,   124288 free,   561820 used,   313588 buff/cache
KiB Swap:  2097148 total,  1852880 free,   244268 used.   219416 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 17425 work      20   0  148072   2956   1380 S  6.7  0.3   0:04.75 sshd
     1 root      20   0  193700   4772   2800 S  0.0  0.5   0:03.03 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.93 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/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
     9 root      20   0       0      0      0 S  0.0  0.0   0:01.22 rcu_sched
    10 root      rt   0       0      0      0 S  0.0  0.0   0:00.08 watchdog/0
    12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
    13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
    14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd

以累积模式显示程序信息

[work@localhost ~]$ top -s
top - 15:48:17 up  4:22,  3 users,  load average: 0.07, 0.03, 0.05
Tasks: 180 total,   1 running, 179 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.7 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999696 total,   124160 free,   561944 used,   313592 buff/cache
KiB Swap:  2097148 total,  1852880 free,   244268 used.   219292 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     1 root      20   0  193700   4772   2800 S  0.0  0.5   0:03.03 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.93 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/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
     9 root      20   0       0      0      0 S  0.0  0.0   0:01.22 rcu_sched
    10 root      rt   0       0      0      0 S  0.0  0.0   0:00.08 watchdog/0
    12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
    13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
    14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd

设置信息更新次数

top -n 2 更新两次后停止

[work@localhost ~]$ top -n 2
top - 15:48:37 up  4:23,  3 users,  load average: 0.05, 0.03, 0.05
Tasks: 180 total,   3 running, 177 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.0 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999696 total,   123916 free,   562188 used,   313592 buff/cache
KiB Swap:  2097148 total,  1852880 free,   244268 used.   219048 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
   565 root      20   0  305080   1624   1296 S  0.3  0.2   0:09.88 vmtoolsd
     1 root      20   0  193700   4772   2800 S  0.0  0.5   0:03.03 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.93 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/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
     9 root      20   0       0      0      0 R  0.0  0.0   0:01.22 rcu_sched
    10 root      rt   0       0      0      0 S  0.0  0.0   0:00.08 watchdog/0
    12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
    13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
    14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd
    15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
    16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd
    17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
    18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kblockd
    19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 md
    25 root      20   0       0      0      0 S  0.0  0.0   0:01.82 kswapd0
    26 root      25   5       0      0      0 S  0.0  0.0   0:00.00 ksmd
    27 root      39  19       0      0      0 S  0.0  0.0   0:00.10 khugepaged
[work@localhost ~]$

8.pidof命令

pidof命令用于查询某个指定服务进程的PID值。

每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。

pidof [参数] [服务名称]
参数说明
  • -s :表示只返回1个 pid
  • -x :表示同时返回运行给定程序的 shell 的 pid
  • -o :表示告诉 piod 表示忽略后面给定的 pid ,可以使用多个 -o 。

查看某个进程的pid 

pidof rcu_bh

[work@localhost ~]$ pidof rcu_bh
8 

9.kill命令

kill命令用于终止某个指定PID的服务进程。

kill [参数] [进程PID]

参数说明

  • -l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。
  • -s <信息名称或编号>  指定要送出的信息。
  • [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

强制杀死进程

[work@localhost ~]$ kill -KILL 2707

四、系统状态检测命令

作为一名合格的运维人员,想要更快、更好地了解Linux服务器,必须具备快速查看Linux系统运行状态的能力,因此接下来会逐个讲解与网卡网络、系统内核、系统负载、内存使用情况、当前启用终端数量、历史登录记录、命令执行记录以及救援诊断等相关命令的使用方法。

1.ifconfig命令

ifconfig命令用于显示或设置网络设备。

ifconfig [网络设备] [参数]

参数说明

  • add<地址> 设置网络设备IPv6的IP地址。
  • del<地址> 删除网络设备IPv6的IP地址。
  • down 关闭指定的网络设备。
  • <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
  • io_addr<I/O地址> 设置网络设备的I/O地址。
  • irq<IRQ地址> 设置网络设备的IRQ。
  • media<网络媒介类型> 设置网络设备的媒介类型。
  • mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
  • metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
  • mtu<字节> 设置网络设备的MTU。
  • netmask<子网掩码> 设置网络设备的子网掩码。
  • tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
  • up 启动指定的网络设备。
  • -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
  • -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
  • -promisc 关闭或启动指定网络设备的promiscuous模式。
  • [IP地址] 指定网络设备的IP地址。
  • [网络设备] 指定网络设备的名称。

查看网络设备信息

[work@localhost ~]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.37.132  netmask 255.255.255.0  broadcast 192.168.37.255
        inet6 fe80::b845:13ae:5a22:a1ea  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1c:8f:1f  txqueuelen 1000  (Ethernet)
        RX packets 9270  bytes 626263 (611.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15534  bytes 1767749 (1.6 MiB)
        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
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 68  bytes 5916 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5916 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:63:45:e9  txqueuelen 1000  (Ethernet)
        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

启动关闭指定网卡

[work@localhost ~]$ ifconfig ens33 down
[work@localhost ~]$ ifconfig ens33 up

2.uname命令

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

uname [-a]

参数说明

  • -a或--all  显示全部的信息。
  • -m或--machine  显示电脑类型。
  • -n或-nodename  显示在网络上的主机名称。
  • -r或--release  显示操作系统的发行编号。
  • -s或--sysname  显示操作系统名称。
  • -v  显示操作系统的版本。
  • --help  显示帮助。
  • --version  显示版本信息。

显示系统信息

[work@localhost ~]$ uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

3.uptime命令

uptime用于查看系统的负载信息。

[work@localhost ~]$ uptime
 16:23:12 up  2:12,  3 users,  load average: 0.15, 0.05, 0.06

uptime命令真的很棒,它可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。

4.free命令

free用于显示当前系统中内存的使用量信息.

free [-h]

[work@localhost ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:           976M        656M         92M        3.9M        226M        126M
Swap:          2.0G        6.5M        2.0G 

为了保证Linux系统不会因资源耗尽而突然宕机,我们需要关注内存的使用量。在使用free命令时,可以结合使用-h参数以更人性化的方式输出当前内存的实时使用量信息。

5.who命令

who用于查看当前登入主机的用户终端信息。

who [参数]

参数说明

  • -H 或 --heading:显示各栏位的标题信息列;
  • -i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
  • -m:此参数的效果和指定"am i"字符串相同;
  • -q 或--count:只显示登入系统的帐号名称和总人数;
  • -s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
  • -w 或-T或--mesg或--message或--writable:显示用户的信息状态栏;
  • --help:在线帮助;
  • --version:显示版本信息。

[work@localhost ~]$ who
work     :0           2020-02-14 14:11 (:0)
work     pts/0        2020-02-14 14:11 (192.168.37.1)
work     pts/1        2020-02-14 14:11 (:0) 

6.last命令

last命令用于查看所有系统的登录记录。

last [参数]

参数说明

  • -R 省略 hostname 的栏位
  • -num 展示前 num 个
  • username 展示 username 的登入讯息
  • tty 限制登入讯息包含终端机代号
[work@localhost ~]$ last
work     pts/1        :0               Fri Feb 14 14:11   still logged in
work     pts/0        192.168.37.1     Fri Feb 14 14:11   still logged in
work     :0           :0               Fri Feb 14 14:11   still logged in
reboot   system boot  3.10.0-693.el7.x Fri Feb 14 16:01 - 19:29  (03:27)
work     pts/1        192.168.37.1     Fri Feb 14 14:18 - 16:01  (01:43)
work     pts/0        192.168.37.1     Fri Jan  1 08:43 - 14:18 (-321+-18:-2
work     pts/0        :0               Fri Feb 14 12:51 - 12:51  (00:00)
work     :0           :0               Fri Feb 14 12:47 - 16:01  (03:13)
work     tty2                          Fri Feb 14 12:33 - 16:01  (03:28)
reboot   system boot  3.10.0-693.el7.x Fri Feb 14 11:25 - 16:01  (04:36)
work     tty2                          Thu Feb 13 23:12 - 23:42  (00:30)
reboot   system boot  3.10.0-693.el7.x Thu Feb 13 23:11 - 23:42  (00:31)
work     tty2                          Wed Feb 12 19:14 - crash (1+03:56)
work     :0           :0               Wed Feb 12 19:13 - crash (1+03:57)
reboot   system boot  3.10.0-693.el7.x Wed Feb 12 19:12 - 23:42 (1+04:29)
work     pts/0        192.168.37.1     Thu Jan 16 15:53 - 19:12  (03:18)
work     tty2                          Thu Jan 16 15:49 - crash (27+03:23)
reboot   system boot  3.10.0-693.el7.x Thu Jan 16 15:48 - 23:42 (28+07:54)
root     tty2                          Tue Jan 14 19:50 - crash (1+19:58)
work     tty4                          Tue Jan 14 19:47 - crash (1+20:00)
reboot   system boot  3.10.0-693.el7.x Tue Jan 14 19:44 - 23:42 (30+03:58)

wtmp begins Tue Jan 14 19:44:35 2020 

7.history命令

history命令用于显示历史执行过的命令.

history [-c]

[work@localhost ~]$ history
    1  df
    2  df -h
    3  ll
    4  ls
    5  cd ..
    6  ll
    7  df -help
    8  df
    9  df -a
   10  fdisk -l
   11  cd ../tmp/
   12  fdisk -l
   13  su
   14  date
   15  date --help
   16  man date
   17  shutdown
   18  su 

执行history命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。如果觉得1000不够用,还可以自定义/etc/profile文件中的HISTSIZE变量值。在使用history命令时,如果使用-c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次的命令。

历史命令会被保存到用户家目录中的.bash_history文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用cat命令查看其文件内容。

五、工作目录切换命令

工作目录指的是用户当前在系统中所处的位置。

1.pwd命令

pwd命令用于显示用户当前所处的工作目录

pwd [选项]
[work@localhost ~]$ pwd
/home/work

2.cd命令

cd命令用于切换工作路径。

cd [目录名称]

这个命令应该是最常用的一个Linux命令了。可以通过cd命令迅速、灵活地切换到不同的工作目录。除了常见的切换目录方式,还可以使用“cd -”命令返回到上一次所处的目录,使用“cd..”命令进入上级目录,以及使用“cd ~”命令切换到当前用户的家目录,亦或使用“cd ~username”切换到其他用户的家目录。

例如,可以使用cd /etc的方式切换进/etc目录中:

[work@localhost ~]$ cd /etc
[work@localhost etc]$

此时,要返回到上一次的目录(即/etc目录),可执行如下命令:

[work@localhost etc]$ cd -
/home/work
[work@localhost ~]$

3.ls命令

ls命令用于显示目录中的文件信息.

ls [选项] [文件] 

参数 :

  • -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  • -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
  • -R 若目录下有文件,则以下之文件亦皆依序列出
[work@localhost ~]$ ls -al
total 84
drwx------. 14 work work  4096 Feb 14 16:11 .
drwxr-xr-x.  3 root root    18 Jan 14 19:43 ..
-rw-rw-r--.  1 work work 46273 Feb 14 14:25 1.jpg
-rw-------.  1 work work  1625 Feb 14 16:01 .bash_history
-rw-r--r--.  1 work work    18 Aug  3  2017 .bash_logout
-rw-r--r--.  1 work work   193 Aug  3  2017 .bash_profile
-rw-r--r--.  1 work work   231 Aug  3  2017 .bashrc
drwxrwxr-x. 12 work work   245 Feb 12 19:13 .cache
drwxrwxr-x. 14 work work   261 Feb 14 16:11 .config
-rw-------.  1 work work    16 Feb 12 19:13 .esd_auth
-rw-------.  1 work work   930 Feb 14 16:11 .ICEauthority
drwx------.  3 work work    19 Feb 12 19:13 .local
drwxr-xr-x.  4 work work    39 Jan 14 19:35 .mozilla
-rw-------.  1 work work   961 Feb 14 14:23 .viminfo
-rw-------.  1 work work   134 Feb 14 16:11 .Xauthority
drwxr-xr-x.  2 work work     6 Feb 14 16:11 下载
drwxr-xr-x.  2 work work     6 Feb 14 16:11 公共
drwxr-xr-x.  2 work work     6 Feb 14 16:11 图片
drwxr-xr-x.  2 work work     6 Feb 14 16:11 文档
drwxr-xr-x.  2 work work     6 Feb 14 16:11 桌面
drwxr-xr-x.  2 work work     6 Feb 14 16:11 模板
drwxr-xr-x.  2 work work     6 Feb 14 16:11 视频
drwxr-xr-x.  2 work work     6 Feb 14 16:11 音乐

如果想要查看目录属性信息,则需要额外添加一个-d参数。例如,可使用如下命令查看/etc目录的权限与属性信息:

[work@localhost ~]$ ls -ld /etc
drwxr-xr-x. 137 root root 8192 Feb 14 16:02 /etc

六、文件目录管理命令

在Linux系统的日常运维工作中,还需要掌握对文件的创建、修改、复制、剪切、更名与删除等操作。

1.touch命令

touch命令用于创建空白文件或设置文件的时间。

touch [选项] [文件]

参数说明

  • a 改变档案的读取时间记录。
  • m 改变档案的修改时间记录。
  • c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
  • f 不使用,是为了与其他 unix 系统的相容性而保留。
  • r 使用参考档的时间记录,与 --file 的效果一样。
  • d 设定时间与日期,可以使用各种不同的格式。
  • t 设定档案的时间记录,格式与 date 指令相同。
  • --no-create 不会建立新档案。
  • --help 列出指令格式。
  • --version 列出版本讯息。
创建文件

[work@localhost ~]$ touch testfile
[work@localhost ~]$ ls
1.jpg  testfile  下载  公共  图片  文档  桌面  模板  视频  音乐

2.mkdir命令

mkdir命令用于创建空白的目录。

mkdir [选项] 目录

在Linux系统中,文件夹是最常见的文件类型之一。除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录。

[work@localhost ~]$ mkdir -p test/a/b
[work@localhost ~]$ cd test/
[work@localhost test]$ cd a/
[work@localhost a]$ cd b/
[work@localhost b]$

3.cp命令

cp命令用于复制文件或目录

cp [选项] 源文件 目标文件

大家对文件复制操作应该不陌生,在Linux系统中,复制操作具体分为3种情况:

如果目标文件是目录,则会把源文件复制到该目录中;

如果目标文件也是普通文件,则会询问是否要覆盖它;

如果目标文件不存在,则执行正常的复制操作。

参数说明

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -R:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件。

使用指令"cp"将当前目录"test/"下的所有文件复制到新目录"newtest"下

[work@localhost ~]$ mkdir newtest
[work@localhost ~]$ cd test/
[work@localhost test]$ touch 1.text
[work@localhost test]$ touch 2.text
[work@localhost test]$ cd ~
[work@localhost ~]$ ls
1.jpg  newtest  test  testfile  下载  公共  图片  文档  桌面  模板  视频  音乐
[work@localhost ~]$ cd newtest/
[work@localhost newtest]$ ls
[work@localhost newtest]$ cd ~
[work@localhost ~]$ cp -R test/ newtest/
[work@localhost ~]$ cd newtest/
[work@localhost newtest]$ ls
test
[work@localhost newtest]$ cd test/
[work@localhost test]$ ls
1.text  2.text  a
[work@localhost test]$

4.mv命令

mv命令用于剪切文件或将文件重命名

mv [选项] 源文件 [目标路径|目标文件名]

参数说明

  • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
  • -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;

剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名:

[work@localhost test]$ ls
1.text  2.text  a
[work@localhost test]$ mv 1.text 3.text
[work@localhost test]$ ls
2.text  3.text  a

5.rm命令

rm命令用于删除文件或目录

rm [选项] 文件

参数

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。

删除a文件夹

[work@localhost test]$ ls
2.text  3.text  a
[work@localhost test]$ rm -r a/
[work@localhost test]$ ls
2.text  3.text

6.dd命令

dd命令用于按照指定大小和个数的数据块来复制文件或转换文件。

dd [参数]

参数说明:

  • if=文件名:输入文件名,默认为标准输入。即指定源文件。
  • of=文件名:输出文件名,默认为标准输出。即指定目的文件。
  • ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
    obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
    bs=bytes:同时设置读入/输出的块大小为bytes个字节。
  • cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
  • skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
  • seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
  • count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
  • conv=<关键字>,关键字可以有以下11种:
    • conversion:用指定的参数转换文件。
    • ascii:转换ebcdic为ascii
    • ebcdic:转换ascii为ebcdic
    • ibm:转换ascii为alternate ebcdic
    • block:把每一行转换为长度为cbs,不足部分用空格填充
    • unblock:使每一行的长度都为cbs,不足部分用空格填充
    • lcase:把大写字符转换为小写字符
    • ucase:把小写字符转换为大写字符
    • swab:交换输入的每对字节
    • noerror:出错时不停止
    • notrunc:不截短输出文件
    • sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

将2.text文件内容编辑成

hello linux 
hello world

通过dd if=2.text of=3.text conv=ucase 将2.text中的字母全部变成大写,并生成3.text

[work@localhost test]$ ls
2.text  3.text
[work@localhost test]$ vim 2.text
[work@localhost test]$ cat 2.text
hello linux
hello world
[work@localhost test]$ dd if=2.text of=3.text conv=ucase
0+1 records in
0+1 records out
24 bytes (24 B) copied, 7.7135e-05 s, 311 kB/s
[work@localhost test]$ cat 3.text
HELLO LINUX
HELLO WORLD
[work@localhost test]$

7.file命令

file命令用于查看文件的类型,格式为“file 文件名”。

参数

  • -b  列出辨识结果时,不显示文件名称。
  • -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
  • -L  直接显示符号连接所指向的文件的类别。
  • -m<魔法数字文件>  指定魔法数字文件。
  • -v  显示版本信息。
  • -z  尝试去解读压缩文件的内容。
  • [文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

显示文件类型:

[work@localhost test]$ file 3.text
3.text: ASCII text
[work@localhost test]$

七、总结

Linux命令就像是在夯实地基,虽然表面上暂时还看不到成果,但是这些指令能够熟练运用,可以对文件进行一些简单的操作。还有一些在运维中比较常用的,后续会持续更新

1.在众多的Linux系统中,最常使用的Shell终端是什么?

答:Bash(Bourne-Again SHell)解释器。

2.执行Linux系统命令时,添加参数的目的是什么?

答:为了让Linux系统命令能够更贴合用户的实际需求进行工作。

3.Linux系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?

答:应该使用一个或多个空格进行间隔。

4.请写出用echo命令把SHELL变量值输出到屏幕终端的命令。

答:echo $SHELL。

5.简述Linux系统中5种进程的名称及含义。

答:在Linux系统中,有下面5种进程名称。

R(运行):进程正在运行或在运行队列中等待。

S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。

D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。

Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。

T(停止):进程收到停止信号后停止运行。

6.请尝试使用Linux系统命令关闭PID为5529的服务进程。

答:执行kill 5529命令即可;若知道服务的名称,则可以使用killall命令进行关闭。

7.使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么?

答:这4项重要信息分别是网卡名称、IP地址、网卡物理地址以及RX/TX的收发流量数据大小。

8.使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15分钟内负载压力最大的是哪个时间段?

答:通过负载数值可以看出,最近1分钟内的负载压力是最大的。

9.使用history命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?

答:还可以用“!数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。

10.在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢?

答:应该加上-p递归迭代参数,从而自动化创建有嵌套关系的目录。

11.在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢?

答:可使用-f参数,这样即可无需二次确认。

参考资料:

1.菜鸟教程

2.鸟哥的Linux私房菜-基础篇

3.Linux就该这么学